@happyvertical/smrt-messages 0.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +31 -0
- package/CLAUDE.md +1 -0
- package/LICENSE +7 -0
- package/README.md +103 -0
- package/dist/__smrt-register__.d.ts +2 -0
- package/dist/__smrt-register__.d.ts.map +1 -0
- package/dist/collections/AccountCollection.d.ts +42 -0
- package/dist/collections/AccountCollection.d.ts.map +1 -0
- package/dist/collections/AttachmentCollection.d.ts +67 -0
- package/dist/collections/AttachmentCollection.d.ts.map +1 -0
- package/dist/collections/BlacklistCollection.d.ts +14 -0
- package/dist/collections/BlacklistCollection.d.ts.map +1 -0
- package/dist/collections/EmailAccountCollection.d.ts +74 -0
- package/dist/collections/EmailAccountCollection.d.ts.map +1 -0
- package/dist/collections/EmailAttachmentCollection.d.ts +38 -0
- package/dist/collections/EmailAttachmentCollection.d.ts.map +1 -0
- package/dist/collections/EmailCollection.d.ts +81 -0
- package/dist/collections/EmailCollection.d.ts.map +1 -0
- package/dist/collections/EmailFolderCollection.d.ts +85 -0
- package/dist/collections/EmailFolderCollection.d.ts.map +1 -0
- package/dist/collections/MessageCollection.d.ts +74 -0
- package/dist/collections/MessageCollection.d.ts.map +1 -0
- package/dist/collections/WhitelistCollection.d.ts +18 -0
- package/dist/collections/WhitelistCollection.d.ts.map +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3068 -0
- package/dist/index.js.map +1 -0
- package/dist/manifest.json +10576 -0
- package/dist/models/Account.d.ts +47 -0
- package/dist/models/Account.d.ts.map +1 -0
- package/dist/models/Attachment.d.ts +48 -0
- package/dist/models/Attachment.d.ts.map +1 -0
- package/dist/models/Blacklist.d.ts +21 -0
- package/dist/models/Blacklist.d.ts.map +1 -0
- package/dist/models/Email.d.ts +98 -0
- package/dist/models/Email.d.ts.map +1 -0
- package/dist/models/EmailAccount.d.ts +65 -0
- package/dist/models/EmailAccount.d.ts.map +1 -0
- package/dist/models/EmailAttachment.d.ts +19 -0
- package/dist/models/EmailAttachment.d.ts.map +1 -0
- package/dist/models/EmailFolder.d.ts +65 -0
- package/dist/models/EmailFolder.d.ts.map +1 -0
- package/dist/models/Message.d.ts +105 -0
- package/dist/models/Message.d.ts.map +1 -0
- package/dist/models/SlackAccount.d.ts +13 -0
- package/dist/models/SlackAccount.d.ts.map +1 -0
- package/dist/models/SlackMessage.d.ts +34 -0
- package/dist/models/SlackMessage.d.ts.map +1 -0
- package/dist/models/Tweet.d.ts +31 -0
- package/dist/models/Tweet.d.ts.map +1 -0
- package/dist/models/TwitterAccount.d.ts +12 -0
- package/dist/models/TwitterAccount.d.ts.map +1 -0
- package/dist/models/Whitelist.d.ts +21 -0
- package/dist/models/Whitelist.d.ts.map +1 -0
- package/dist/playground.d.ts +2 -0
- package/dist/playground.d.ts.map +1 -0
- package/dist/playground.js +176 -0
- package/dist/playground.js.map +1 -0
- package/dist/senders/EmailSender.d.ts +13 -0
- package/dist/senders/EmailSender.d.ts.map +1 -0
- package/dist/senders/SlackSender.d.ts +11 -0
- package/dist/senders/SlackSender.d.ts.map +1 -0
- package/dist/senders/TweetSender.d.ts +11 -0
- package/dist/senders/TweetSender.d.ts.map +1 -0
- package/dist/smrt-knowledge.json +4234 -0
- package/dist/svelte/components/AccountAvatar.svelte +107 -0
- package/dist/svelte/components/AccountAvatar.svelte.d.ts +12 -0
- package/dist/svelte/components/AccountAvatar.svelte.d.ts.map +1 -0
- package/dist/svelte/components/AccountCard.svelte +173 -0
- package/dist/svelte/components/AccountCard.svelte.d.ts +12 -0
- package/dist/svelte/components/AccountCard.svelte.d.ts.map +1 -0
- package/dist/svelte/components/AccountList.svelte +90 -0
- package/dist/svelte/components/AccountList.svelte.d.ts +12 -0
- package/dist/svelte/components/AccountList.svelte.d.ts.map +1 -0
- package/dist/svelte/components/AttachmentChip.svelte +99 -0
- package/dist/svelte/components/AttachmentChip.svelte.d.ts +12 -0
- package/dist/svelte/components/AttachmentChip.svelte.d.ts.map +1 -0
- package/dist/svelte/components/AttachmentUpload.svelte +160 -0
- package/dist/svelte/components/AttachmentUpload.svelte.d.ts +11 -0
- package/dist/svelte/components/AttachmentUpload.svelte.d.ts.map +1 -0
- package/dist/svelte/components/ComposeForm.svelte +387 -0
- package/dist/svelte/components/ComposeForm.svelte.d.ts +13 -0
- package/dist/svelte/components/ComposeForm.svelte.d.ts.map +1 -0
- package/dist/svelte/components/EmailAccountManager.svelte +690 -0
- package/dist/svelte/components/EmailAccountManager.svelte.d.ts +15 -0
- package/dist/svelte/components/EmailAccountManager.svelte.d.ts.map +1 -0
- package/dist/svelte/components/EmailFilterManager.svelte +687 -0
- package/dist/svelte/components/EmailFilterManager.svelte.d.ts +14 -0
- package/dist/svelte/components/EmailFilterManager.svelte.d.ts.map +1 -0
- package/dist/svelte/components/FolderNav.svelte +171 -0
- package/dist/svelte/components/FolderNav.svelte.d.ts +11 -0
- package/dist/svelte/components/FolderNav.svelte.d.ts.map +1 -0
- package/dist/svelte/components/ForwardForm.svelte +166 -0
- package/dist/svelte/components/ForwardForm.svelte.d.ts +10 -0
- package/dist/svelte/components/ForwardForm.svelte.d.ts.map +1 -0
- package/dist/svelte/components/MessageCard.svelte +336 -0
- package/dist/svelte/components/MessageCard.svelte.d.ts +20 -0
- package/dist/svelte/components/MessageCard.svelte.d.ts.map +1 -0
- package/dist/svelte/components/MessageDetail.svelte +309 -0
- package/dist/svelte/components/MessageDetail.svelte.d.ts +18 -0
- package/dist/svelte/components/MessageDetail.svelte.d.ts.map +1 -0
- package/dist/svelte/components/MessageFilters.svelte +228 -0
- package/dist/svelte/components/MessageFilters.svelte.d.ts +13 -0
- package/dist/svelte/components/MessageFilters.svelte.d.ts.map +1 -0
- package/dist/svelte/components/MessageList.svelte +101 -0
- package/dist/svelte/components/MessageList.svelte.d.ts +23 -0
- package/dist/svelte/components/MessageList.svelte.d.ts.map +1 -0
- package/dist/svelte/components/MessageStatusIndicator.svelte +82 -0
- package/dist/svelte/components/MessageStatusIndicator.svelte.d.ts +11 -0
- package/dist/svelte/components/MessageStatusIndicator.svelte.d.ts.map +1 -0
- package/dist/svelte/components/MessageToolbar.svelte +131 -0
- package/dist/svelte/components/MessageToolbar.svelte.d.ts +14 -0
- package/dist/svelte/components/MessageToolbar.svelte.d.ts.map +1 -0
- package/dist/svelte/components/MessageTypeBadge.svelte +59 -0
- package/dist/svelte/components/MessageTypeBadge.svelte.d.ts +9 -0
- package/dist/svelte/components/MessageTypeBadge.svelte.d.ts.map +1 -0
- package/dist/svelte/components/RecipientInput.svelte +150 -0
- package/dist/svelte/components/RecipientInput.svelte.d.ts +11 -0
- package/dist/svelte/components/RecipientInput.svelte.d.ts.map +1 -0
- package/dist/svelte/components/ReplyForm.svelte +159 -0
- package/dist/svelte/components/ReplyForm.svelte.d.ts +11 -0
- package/dist/svelte/components/ReplyForm.svelte.d.ts.map +1 -0
- package/dist/svelte/components/SendStatusBadge.svelte +64 -0
- package/dist/svelte/components/SendStatusBadge.svelte.d.ts +8 -0
- package/dist/svelte/components/SendStatusBadge.svelte.d.ts.map +1 -0
- package/dist/svelte/components/ThreadView.svelte +240 -0
- package/dist/svelte/components/ThreadView.svelte.d.ts +12 -0
- package/dist/svelte/components/ThreadView.svelte.d.ts.map +1 -0
- package/dist/svelte/i18n.d.ts +42 -0
- package/dist/svelte/i18n.d.ts.map +1 -0
- package/dist/svelte/i18n.js +60 -0
- package/dist/svelte/i18n.messages.d.ts +32 -0
- package/dist/svelte/i18n.messages.d.ts.map +1 -0
- package/dist/svelte/i18n.messages.js +46 -0
- package/dist/svelte/index.d.ts +54 -0
- package/dist/svelte/index.d.ts.map +1 -0
- package/dist/svelte/index.js +44 -0
- package/dist/svelte/playground.d.ts +341 -0
- package/dist/svelte/playground.d.ts.map +1 -0
- package/dist/svelte/playground.js +171 -0
- package/dist/svelte/types.d.ts +195 -0
- package/dist/svelte/types.d.ts.map +1 -0
- package/dist/svelte/types.js +6 -0
- package/dist/types.d.ts +316 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/ui.d.ts +4 -0
- package/dist/ui.d.ts.map +1 -0
- package/dist/ui.js +103 -0
- package/dist/ui.js.map +1 -0
- package/package.json +104 -0
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { SmrtObject } from '@happyvertical/smrt-core';
|
|
2
|
+
import { AccountOptions, MessageSenderInterface } from '../types';
|
|
3
|
+
export declare class Account extends SmrtObject {
|
|
4
|
+
tenantId: string | null;
|
|
5
|
+
name: string;
|
|
6
|
+
providerType: string;
|
|
7
|
+
credentialSecretId: string | null;
|
|
8
|
+
isActive: boolean;
|
|
9
|
+
lastSyncAt: Date | null;
|
|
10
|
+
settings: string;
|
|
11
|
+
createdAt: Date;
|
|
12
|
+
updatedAt: Date;
|
|
13
|
+
constructor(options?: AccountOptions);
|
|
14
|
+
/**
|
|
15
|
+
* Get settings as parsed object
|
|
16
|
+
*/
|
|
17
|
+
getSettings(): Record<string, any>;
|
|
18
|
+
/**
|
|
19
|
+
* Set settings from object
|
|
20
|
+
*/
|
|
21
|
+
setSettings(settings: Record<string, any>): void;
|
|
22
|
+
/**
|
|
23
|
+
* Activate account
|
|
24
|
+
*/
|
|
25
|
+
activate(): Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* Deactivate account
|
|
28
|
+
*/
|
|
29
|
+
deactivate(): Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* Store credentials securely using smrt-secrets
|
|
32
|
+
*/
|
|
33
|
+
setCredentials(credentials: Record<string, any>, options?: {
|
|
34
|
+
description?: string;
|
|
35
|
+
category?: string;
|
|
36
|
+
}): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Create a sender for this account.
|
|
39
|
+
* Subclasses must override to return a concrete sender.
|
|
40
|
+
*/
|
|
41
|
+
createSender(): Promise<MessageSenderInterface>;
|
|
42
|
+
/**
|
|
43
|
+
* Retrieve stored credentials
|
|
44
|
+
*/
|
|
45
|
+
getCredentials(): Promise<Record<string, any> | null>;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=Account.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Account.d.ts","sourceRoot":"","sources":["../../src/models/Account.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAS,UAAU,EAAQ,MAAM,0BAA0B,CAAC;AAEnE,OAAO,KAAK,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAEvE,qBAOa,OAAQ,SAAQ,UAAU;IAErC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE/B,IAAI,SAAM;IACV,YAAY,SAAM;IAKlB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAQ;IACzC,QAAQ,UAAQ;IAChB,UAAU,EAAE,IAAI,GAAG,IAAI,CAAQ;IAK/B,QAAQ,SAAM;IAGd,SAAS,OAAc;IACvB,SAAS,OAAc;gBAEX,OAAO,GAAE,cAAmB;IAiBxC;;OAEG;IACH,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IASlC;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAIhD;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAM/B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAMjC;;OAEG;IACG,cAAc,CAClB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAChC,OAAO,GAAE;QACP,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACd,GACL,OAAO,CAAC,IAAI,CAAC;IAwBhB;;;OAGG;IACG,YAAY,IAAI,OAAO,CAAC,sBAAsB,CAAC;IAMrD;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;CAe5D"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { SmrtObject } from '@happyvertical/smrt-core';
|
|
2
|
+
import { AttachmentOptions } from '../types';
|
|
3
|
+
export declare class Attachment extends SmrtObject {
|
|
4
|
+
tenantId: string | null;
|
|
5
|
+
messageId: string;
|
|
6
|
+
filename: string;
|
|
7
|
+
contentType: string;
|
|
8
|
+
size: number;
|
|
9
|
+
contentId: string;
|
|
10
|
+
contentDisposition: 'attachment' | 'inline';
|
|
11
|
+
filePath: string;
|
|
12
|
+
sourceUrl: string;
|
|
13
|
+
createdAt: Date;
|
|
14
|
+
constructor(options?: AttachmentOptions);
|
|
15
|
+
/**
|
|
16
|
+
* Get the message this attachment belongs to
|
|
17
|
+
*/
|
|
18
|
+
getMessage(): Promise<any>;
|
|
19
|
+
/**
|
|
20
|
+
* Check if attachment is an image
|
|
21
|
+
*/
|
|
22
|
+
isImage(): boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Check if attachment is a PDF
|
|
25
|
+
*/
|
|
26
|
+
isPdf(): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Check if attachment is inline (embedded in message body)
|
|
29
|
+
*/
|
|
30
|
+
isInline(): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Get file extension from filename
|
|
33
|
+
*/
|
|
34
|
+
getExtension(): string;
|
|
35
|
+
/**
|
|
36
|
+
* Get human-readable file size
|
|
37
|
+
*/
|
|
38
|
+
getFormattedSize(): string;
|
|
39
|
+
/**
|
|
40
|
+
* Check if file is stored externally
|
|
41
|
+
*/
|
|
42
|
+
hasExternalFile(): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Read file content (if stored externally)
|
|
45
|
+
*/
|
|
46
|
+
readContent(): Promise<Buffer | null>;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=Attachment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Attachment.d.ts","sourceRoot":"","sources":["../../src/models/Attachment.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAc,UAAU,EAAQ,MAAM,0BAA0B,CAAC;AAExE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAElD,qBAMa,UAAW,SAAQ,UAAU;IAExC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;IAG/B,SAAS,SAAM;IACf,QAAQ,SAAM;IACd,WAAW,SAAM;IACjB,IAAI,SAAK;IACT,SAAS,SAAM;IACf,kBAAkB,EAAE,YAAY,GAAG,QAAQ,CAAgB;IAC3D,QAAQ,SAAM;IACd,SAAS,SAAM;IAGf,SAAS,OAAc;gBAEX,OAAO,GAAE,iBAAsB;IAiB3C;;OAEG;IACG,UAAU;IAWhB;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,KAAK,IAAI,OAAO;IAIhB;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;OAEG;IACH,YAAY,IAAI,MAAM;IAMtB;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAa1B;;OAEG;IACH,eAAe,IAAI,OAAO;IAI1B;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAY5C"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { SmrtObject } from '@happyvertical/smrt-core';
|
|
2
|
+
/**
|
|
3
|
+
* Blacklist - Block entries for email filtering
|
|
4
|
+
*
|
|
5
|
+
* Supports three pattern types:
|
|
6
|
+
* - email: Exact email address (spam@example.com)
|
|
7
|
+
* - domain: Entire domain (*@spam.com)
|
|
8
|
+
* - regex: Custom regex pattern
|
|
9
|
+
*/
|
|
10
|
+
export declare class Blacklist extends SmrtObject {
|
|
11
|
+
pattern: string;
|
|
12
|
+
type: 'email' | 'domain' | 'regex';
|
|
13
|
+
reason: string;
|
|
14
|
+
autoArchive: boolean;
|
|
15
|
+
constructor(options?: any);
|
|
16
|
+
/**
|
|
17
|
+
* Check if an email address matches this blacklist entry
|
|
18
|
+
*/
|
|
19
|
+
matches(email: string): boolean;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=Blacklist.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Blacklist.d.ts","sourceRoot":"","sources":["../../src/models/Blacklist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,MAAM,0BAA0B,CAAC;AAE5D;;;;;;;GAOG;AACH,qBAKa,SAAU,SAAQ,UAAU;IACvC,OAAO,EAAE,MAAM,CAAM;IACrB,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAW;IAC7C,MAAM,EAAE,MAAM,CAAM;IACpB,WAAW,EAAE,OAAO,CAAQ;gBAEhB,OAAO,GAAE,GAAQ;IAW7B;;OAEG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CA6BhC"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { EmailOptions } from '../types';
|
|
2
|
+
import { Message } from './Message';
|
|
3
|
+
export declare class Email extends Message {
|
|
4
|
+
messageId: string;
|
|
5
|
+
inReplyTo: string;
|
|
6
|
+
ccAddresses: string;
|
|
7
|
+
bccAddresses: string;
|
|
8
|
+
replyToAddress: string;
|
|
9
|
+
replyToName: string;
|
|
10
|
+
textBody: string;
|
|
11
|
+
htmlBody: string;
|
|
12
|
+
folderId: string;
|
|
13
|
+
folderPath: string;
|
|
14
|
+
labels: string;
|
|
15
|
+
flags: string;
|
|
16
|
+
isAnswered: boolean;
|
|
17
|
+
isDraft: boolean;
|
|
18
|
+
rawMessage: string;
|
|
19
|
+
headers: string;
|
|
20
|
+
constructor(options?: EmailOptions);
|
|
21
|
+
/**
|
|
22
|
+
* Get CC addresses as parsed array
|
|
23
|
+
*/
|
|
24
|
+
getCcAddresses(): Array<{
|
|
25
|
+
address: string;
|
|
26
|
+
name?: string;
|
|
27
|
+
}>;
|
|
28
|
+
/**
|
|
29
|
+
* Get BCC addresses as parsed array
|
|
30
|
+
*/
|
|
31
|
+
getBccAddresses(): Array<{
|
|
32
|
+
address: string;
|
|
33
|
+
name?: string;
|
|
34
|
+
}>;
|
|
35
|
+
/**
|
|
36
|
+
* Get labels as parsed array
|
|
37
|
+
*/
|
|
38
|
+
getLabels(): string[];
|
|
39
|
+
/**
|
|
40
|
+
* Set labels from array
|
|
41
|
+
*/
|
|
42
|
+
setLabels(labels: string[]): void;
|
|
43
|
+
/**
|
|
44
|
+
* Get flags as parsed array
|
|
45
|
+
*/
|
|
46
|
+
getFlags(): string[];
|
|
47
|
+
/**
|
|
48
|
+
* Set flags from array
|
|
49
|
+
*/
|
|
50
|
+
setFlags(flags: string[]): void;
|
|
51
|
+
/**
|
|
52
|
+
* Get headers as parsed object
|
|
53
|
+
*/
|
|
54
|
+
getHeaders(): Record<string, string | string[]>;
|
|
55
|
+
/**
|
|
56
|
+
* Set headers from object
|
|
57
|
+
*/
|
|
58
|
+
setHeaders(headers: Record<string, string | string[]>): void;
|
|
59
|
+
/**
|
|
60
|
+
* Get the email account (typed as EmailAccount)
|
|
61
|
+
*/
|
|
62
|
+
getAccount(): Promise<any>;
|
|
63
|
+
/**
|
|
64
|
+
* Get the folder
|
|
65
|
+
*/
|
|
66
|
+
getFolder(): Promise<any>;
|
|
67
|
+
/**
|
|
68
|
+
* Get emails in the same thread
|
|
69
|
+
*/
|
|
70
|
+
getThreadEmails(): Promise<Email[]>;
|
|
71
|
+
/**
|
|
72
|
+
* Get a short preview of the email body
|
|
73
|
+
*/
|
|
74
|
+
getPreview(maxLength?: number): string;
|
|
75
|
+
/**
|
|
76
|
+
* Get References header values as array
|
|
77
|
+
*/
|
|
78
|
+
getReferences(): string[];
|
|
79
|
+
/**
|
|
80
|
+
* Create a reply to this email with RFC 822 threading
|
|
81
|
+
*/
|
|
82
|
+
createReply(options?: {
|
|
83
|
+
replyAll?: boolean;
|
|
84
|
+
}): Email;
|
|
85
|
+
/**
|
|
86
|
+
* Create a forward of this email
|
|
87
|
+
*/
|
|
88
|
+
createForward(): Email;
|
|
89
|
+
/**
|
|
90
|
+
* Build email-specific quoted body for replies
|
|
91
|
+
*/
|
|
92
|
+
protected buildQuotedBody(): string;
|
|
93
|
+
/**
|
|
94
|
+
* Build forwarded message body
|
|
95
|
+
*/
|
|
96
|
+
private buildForwardBody;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=Email.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Email.d.ts","sourceRoot":"","sources":["../../src/models/Email.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,qBAMa,KAAM,SAAQ,OAAO;IAEhC,SAAS,SAAM;IACf,SAAS,SAAM;IAGf,WAAW,SAAM;IACjB,YAAY,SAAM;IAClB,cAAc,SAAM;IACpB,WAAW,SAAM;IAGjB,QAAQ,SAAM;IACd,QAAQ,SAAM;IAGd,QAAQ,SAAM;IACd,UAAU,SAAM;IAChB,MAAM,SAAM;IACZ,KAAK,SAAM;IAGX,UAAU,UAAS;IACnB,OAAO,UAAS;IAGhB,UAAU,SAAM;IAChB,OAAO,SAAM;gBAED,OAAO,GAAE,YAAiB;IA8BtC;;OAEG;IACH,cAAc,IAAI,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAS3D;;OAEG;IACH,eAAe,IAAI,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAS5D;;OAEG;IACH,SAAS,IAAI,MAAM,EAAE;IASrB;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAIjC;;OAEG;IACH,QAAQ,IAAI,MAAM,EAAE;IASpB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAI/B;;OAEG;IACH,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAS/C;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,GAAG,IAAI;IAI5D;;OAEG;IACY,UAAU;IAazB;;OAEG;IACG,SAAS;IAaf;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IASzC;;OAEG;IACM,UAAU,CAAC,SAAS,SAAM,GAAG,MAAM;IAM5C;;OAEG;IACH,aAAa,IAAI,MAAM,EAAE;IAQzB;;OAEG;IACM,WAAW,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,KAAK;IA0D7D;;OAEG;IACM,aAAa,IAAI,KAAK;IAgC/B;;OAEG;cACgB,eAAe,IAAI,MAAM;IAe5C;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAwBzB"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { EmailAccountOptions, MessageSenderInterface, SyncOptions, SyncResult } from '../types';
|
|
2
|
+
import { Account } from './Account';
|
|
3
|
+
export declare class EmailAccount extends Account {
|
|
4
|
+
email: string;
|
|
5
|
+
syncIntervalMinutes: number;
|
|
6
|
+
constructor(options?: EmailAccountOptions);
|
|
7
|
+
/**
|
|
8
|
+
* Options for child rows (folders/emails) created during sync: carries the DB
|
|
9
|
+
* connection + tenant context from this account, but strips this account's own
|
|
10
|
+
* identity fields. When this account was hydrated from the DB, `this.options`
|
|
11
|
+
* holds the account row's `id`/`slug`/`_skipLoad`; spreading those into a new
|
|
12
|
+
* child would make every synced row inherit the account's primary key and
|
|
13
|
+
* upsert over each other.
|
|
14
|
+
*/
|
|
15
|
+
private childOptions;
|
|
16
|
+
/**
|
|
17
|
+
* Create a sender for this email account
|
|
18
|
+
*/
|
|
19
|
+
createSender(): Promise<MessageSenderInterface>;
|
|
20
|
+
/**
|
|
21
|
+
* Create an EmailClient from stored settings
|
|
22
|
+
* Retrieves credentials from smrt-secrets if credentialSecretId is set
|
|
23
|
+
*/
|
|
24
|
+
createClient(): Promise<import('@happyvertical/email').EmailClient>;
|
|
25
|
+
/**
|
|
26
|
+
* Sync emails from the email server to the database
|
|
27
|
+
*/
|
|
28
|
+
syncFrom(options?: SyncOptions): Promise<SyncResult>;
|
|
29
|
+
/**
|
|
30
|
+
* Get all folders for this account
|
|
31
|
+
*/
|
|
32
|
+
getFolders(): Promise<any>;
|
|
33
|
+
/**
|
|
34
|
+
* Get all emails for this account
|
|
35
|
+
*/
|
|
36
|
+
getEmails(limit?: number): Promise<any>;
|
|
37
|
+
/**
|
|
38
|
+
* Get unread email count
|
|
39
|
+
*/
|
|
40
|
+
getUnreadCount(): Promise<number>;
|
|
41
|
+
/**
|
|
42
|
+
* Store credentials securely using smrt-secrets (email-specific)
|
|
43
|
+
*/
|
|
44
|
+
setCredentials(credentials: Record<string, any>, options?: {
|
|
45
|
+
description?: string;
|
|
46
|
+
category?: string;
|
|
47
|
+
}): Promise<void>;
|
|
48
|
+
/**
|
|
49
|
+
* Sync all active email accounts (for job runner)
|
|
50
|
+
*
|
|
51
|
+
* NOTE: This is a class-wide operation, not per-instance. It syncs ALL active
|
|
52
|
+
* accounts, ignoring `this` instance. It exists as an instance method because
|
|
53
|
+
* the TaskRunner dispatches via `objectType: 'EmailAccount', method: 'syncAll'`
|
|
54
|
+
* which requires an instance method signature.
|
|
55
|
+
*/
|
|
56
|
+
syncAll(args?: Record<string, unknown>): Promise<Map<string, {
|
|
57
|
+
success: boolean;
|
|
58
|
+
error?: Error;
|
|
59
|
+
}>>;
|
|
60
|
+
/**
|
|
61
|
+
* Migrate from plain-text settings to secrets
|
|
62
|
+
*/
|
|
63
|
+
migrateToSecrets(): Promise<void>;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=EmailAccount.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmailAccount.d.ts","sourceRoot":"","sources":["../../src/models/EmailAccount.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EACV,mBAAmB,EACnB,sBAAsB,EAEtB,WAAW,EACX,UAAU,EACX,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,qBAMa,YAAa,SAAQ,OAAO;IACvC,KAAK,SAAM;IACX,mBAAmB,SAAM;gBAEb,OAAO,GAAE,mBAAwB;IAU7C;;;;;;;OAOG;IACH,OAAO,CAAC,YAAY;IAQpB;;OAEG;IACY,YAAY,IAAI,OAAO,CAAC,sBAAsB,CAAC;IAO9D;;;OAGG;IACG,YAAY;IAsBlB;;OAEG;IACG,QAAQ,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;IAsL9D;;OAEG;IACG,UAAU;IAWhB;;OAEG;IACG,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM;IAY9B;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAOvC;;OAEG;IACY,cAAc,CAC3B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAChC,OAAO,GAAE;QACP,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACd,GACL,OAAO,CAAC,IAAI,CAAC;IAwBhB;;;;;;;OAOG;IACG,OAAO,CACX,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE,CAAC,CAAC;IAU5D;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;CAcxC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { EmailAttachmentOptions } from '../types';
|
|
2
|
+
import { Attachment } from './Attachment';
|
|
3
|
+
/**
|
|
4
|
+
* @deprecated Use Attachment instead
|
|
5
|
+
*/
|
|
6
|
+
export declare class EmailAttachment extends Attachment {
|
|
7
|
+
/**
|
|
8
|
+
* Legacy emailId field — maps to messageId
|
|
9
|
+
*/
|
|
10
|
+
get emailId(): string;
|
|
11
|
+
set emailId(value: string);
|
|
12
|
+
constructor(options?: EmailAttachmentOptions);
|
|
13
|
+
/**
|
|
14
|
+
* Get the email this attachment belongs to
|
|
15
|
+
* @deprecated Use getMessage() instead
|
|
16
|
+
*/
|
|
17
|
+
getEmail(): Promise<any>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=EmailAttachment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmailAttachment.d.ts","sourceRoot":"","sources":["../../src/models/EmailAttachment.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C;;GAEG;AACH,qBAAa,eAAgB,SAAQ,UAAU;IAC7C;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,EAExB;gBAEW,OAAO,GAAE,sBAA2B;IAShD;;;OAGG;IACG,QAAQ;CAQf"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { SmrtObject } from '@happyvertical/smrt-core';
|
|
2
|
+
import { EmailFolderOptions } from '../types';
|
|
3
|
+
export declare class EmailFolder extends SmrtObject {
|
|
4
|
+
tenantId: string | null;
|
|
5
|
+
accountId: string;
|
|
6
|
+
name: string;
|
|
7
|
+
path: string;
|
|
8
|
+
delimiter: string;
|
|
9
|
+
specialUse: string;
|
|
10
|
+
messageCount: number;
|
|
11
|
+
unreadCount: number;
|
|
12
|
+
subscribed: boolean;
|
|
13
|
+
createdAt: Date;
|
|
14
|
+
updatedAt: Date;
|
|
15
|
+
constructor(options?: EmailFolderOptions);
|
|
16
|
+
/**
|
|
17
|
+
* Get the email account
|
|
18
|
+
*/
|
|
19
|
+
getAccount(): Promise<any>;
|
|
20
|
+
/**
|
|
21
|
+
* Get all emails in this folder
|
|
22
|
+
*/
|
|
23
|
+
getEmails(limit?: number): Promise<any>;
|
|
24
|
+
/**
|
|
25
|
+
* Get unread emails in this folder
|
|
26
|
+
*/
|
|
27
|
+
getUnreadEmails(limit?: number): Promise<any>;
|
|
28
|
+
/**
|
|
29
|
+
* Update message counts from database
|
|
30
|
+
*/
|
|
31
|
+
refreshCounts(): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* Check if this is the inbox folder
|
|
34
|
+
*/
|
|
35
|
+
isInbox(): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Check if this is the sent folder
|
|
38
|
+
*/
|
|
39
|
+
isSent(): boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Check if this is the drafts folder
|
|
42
|
+
*/
|
|
43
|
+
isDrafts(): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Check if this is the trash folder
|
|
46
|
+
*/
|
|
47
|
+
isTrash(): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Check if this is the spam/junk folder
|
|
50
|
+
*/
|
|
51
|
+
isSpam(): boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Check if this is a system folder
|
|
54
|
+
*/
|
|
55
|
+
isSystemFolder(): boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Subscribe to folder
|
|
58
|
+
*/
|
|
59
|
+
subscribe(): Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* Unsubscribe from folder
|
|
62
|
+
*/
|
|
63
|
+
unsubscribe(): Promise<void>;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=EmailFolder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmailFolder.d.ts","sourceRoot":"","sources":["../../src/models/EmailFolder.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAc,UAAU,EAAQ,MAAM,0BAA0B,CAAC;AAExE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEnD,qBAMa,WAAY,SAAQ,UAAU;IAEzC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;IAG/B,SAAS,SAAM;IACf,IAAI,SAAM;IACV,IAAI,SAAM;IACV,SAAS,SAAO;IAChB,UAAU,SAAM;IAChB,YAAY,SAAK;IACjB,WAAW,SAAK;IAChB,UAAU,UAAQ;IAGlB,SAAS,OAAc;IACvB,SAAS,OAAc;gBAEX,OAAO,GAAE,kBAAuB;IAkB5C;;OAEG;IACG,UAAU;IAahB;;OAEG;IACG,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM;IAY9B;;OAEG;IACG,eAAe,CAAC,KAAK,CAAC,EAAE,MAAM;IAcpC;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAUpC;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,MAAM,IAAI,OAAO;IAIjB;;OAEG;IACH,QAAQ,IAAI,OAAO;IAMnB;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,MAAM,IAAI,OAAO;IAQjB;;OAEG;IACH,cAAc,IAAI,OAAO;IAIzB;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAMhC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;CAKnC"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { SmrtObject } from '@happyvertical/smrt-core';
|
|
2
|
+
import { MessageOptions, MessageSendResult, SendMessageOptions, SendStatus } from '../types';
|
|
3
|
+
export declare class Message extends SmrtObject {
|
|
4
|
+
tenantId: string | null;
|
|
5
|
+
accountId: string;
|
|
6
|
+
threadId: string;
|
|
7
|
+
subject: string;
|
|
8
|
+
body: string;
|
|
9
|
+
fromAddress: string;
|
|
10
|
+
fromName: string;
|
|
11
|
+
toAddresses: string;
|
|
12
|
+
date: Date | null;
|
|
13
|
+
isRead: boolean;
|
|
14
|
+
isFlagged: boolean;
|
|
15
|
+
hasAttachments: boolean;
|
|
16
|
+
size: number;
|
|
17
|
+
metadata: string;
|
|
18
|
+
sendStatus: SendStatus;
|
|
19
|
+
sentAt: Date | null;
|
|
20
|
+
sendError: string;
|
|
21
|
+
retryCount: number;
|
|
22
|
+
maxRetries: number;
|
|
23
|
+
scheduledSendAt: Date | null;
|
|
24
|
+
inReplyToMessageId: string;
|
|
25
|
+
createdAt: Date;
|
|
26
|
+
updatedAt: Date;
|
|
27
|
+
constructor(options?: MessageOptions);
|
|
28
|
+
/**
|
|
29
|
+
* Get to addresses as parsed array
|
|
30
|
+
*/
|
|
31
|
+
getToAddresses(): Array<{
|
|
32
|
+
address: string;
|
|
33
|
+
name?: string;
|
|
34
|
+
}>;
|
|
35
|
+
/**
|
|
36
|
+
* Set to addresses from array
|
|
37
|
+
*/
|
|
38
|
+
setToAddresses(addresses: Array<{
|
|
39
|
+
address: string;
|
|
40
|
+
name?: string;
|
|
41
|
+
}>): void;
|
|
42
|
+
/**
|
|
43
|
+
* Get metadata as parsed object
|
|
44
|
+
*/
|
|
45
|
+
getMetadata(): Record<string, any>;
|
|
46
|
+
/**
|
|
47
|
+
* Set metadata from object
|
|
48
|
+
*/
|
|
49
|
+
setMetadata(data: Record<string, any>): void;
|
|
50
|
+
/**
|
|
51
|
+
* Mark message as read
|
|
52
|
+
*/
|
|
53
|
+
markRead(): Promise<void>;
|
|
54
|
+
/**
|
|
55
|
+
* Mark message as unread
|
|
56
|
+
*/
|
|
57
|
+
markUnread(): Promise<void>;
|
|
58
|
+
/**
|
|
59
|
+
* Toggle flagged status
|
|
60
|
+
*/
|
|
61
|
+
toggleFlagged(): Promise<void>;
|
|
62
|
+
/**
|
|
63
|
+
* Check if message is unread
|
|
64
|
+
*/
|
|
65
|
+
isUnread(): boolean;
|
|
66
|
+
/**
|
|
67
|
+
* Get a short preview of the message body
|
|
68
|
+
*/
|
|
69
|
+
getPreview(maxLength?: number): string;
|
|
70
|
+
/**
|
|
71
|
+
* Get the account for this message
|
|
72
|
+
*/
|
|
73
|
+
getAccount(): Promise<any>;
|
|
74
|
+
/**
|
|
75
|
+
* Get messages in the same thread
|
|
76
|
+
*/
|
|
77
|
+
getThreadMessages(): Promise<Message[]>;
|
|
78
|
+
/**
|
|
79
|
+
* Get attachments for this message
|
|
80
|
+
*/
|
|
81
|
+
getAttachments(): Promise<any>;
|
|
82
|
+
/**
|
|
83
|
+
* Send this message via its account's sender
|
|
84
|
+
*/
|
|
85
|
+
send(options?: SendMessageOptions): Promise<MessageSendResult>;
|
|
86
|
+
/**
|
|
87
|
+
* Retry sending a failed message
|
|
88
|
+
*/
|
|
89
|
+
retrySend(options?: SendMessageOptions): Promise<MessageSendResult>;
|
|
90
|
+
/**
|
|
91
|
+
* Create a reply to this message (returns unsaved draft)
|
|
92
|
+
*/
|
|
93
|
+
createReply(_options?: {
|
|
94
|
+
replyAll?: boolean;
|
|
95
|
+
}): Message;
|
|
96
|
+
/**
|
|
97
|
+
* Create a forward of this message (returns unsaved draft)
|
|
98
|
+
*/
|
|
99
|
+
createForward(): Message;
|
|
100
|
+
/**
|
|
101
|
+
* Build quoted body for reply/forward
|
|
102
|
+
*/
|
|
103
|
+
protected buildQuotedBody(): string;
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=Message.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Message.d.ts","sourceRoot":"","sources":["../../src/models/Message.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAc,UAAU,EAAQ,MAAM,0BAA0B,CAAC;AAExE,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,UAAU,EACX,MAAM,UAAU,CAAC;AAElB,qBAOa,OAAQ,SAAQ,UAAU;IAErC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;IAG/B,SAAS,SAAM;IACf,QAAQ,SAAM;IACd,OAAO,SAAM;IACb,IAAI,SAAM;IACV,WAAW,SAAM;IACjB,QAAQ,SAAM;IACd,WAAW,SAAM;IACjB,IAAI,EAAE,IAAI,GAAG,IAAI,CAAQ;IACzB,MAAM,UAAS;IACf,SAAS,UAAS;IAClB,cAAc,UAAS;IACvB,IAAI,SAAK;IACT,QAAQ,SAAM;IAGd,UAAU,EAAE,UAAU,CAAW;IACjC,MAAM,EAAE,IAAI,GAAG,IAAI,CAAQ;IAC3B,SAAS,SAAM;IACf,UAAU,SAAK;IACf,UAAU,SAAK;IACf,eAAe,EAAE,IAAI,GAAG,IAAI,CAAQ;IAEpC,kBAAkB,SAAM;IAGxB,SAAS,OAAc;IACvB,SAAS,OAAc;gBAEX,OAAO,GAAE,cAAmB;IAiCxC;;OAEG;IACH,cAAc,IAAI,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAS3D;;OAEG;IACH,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI;IAI1E;;OAEG;IACH,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IASlC;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAI5C;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAM/B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAMjC;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAMpC;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;OAEG;IACH,UAAU,CAAC,SAAS,SAAM,GAAG,MAAM;IAMnC;;OAEG;IACG,UAAU;IAWhB;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAW7C;;OAEG;IACG,cAAc;IAapB;;OAEG;IACG,IAAI,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAuDpE;;OAEG;IACG,SAAS,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAwBzE;;OAEG;IACH,WAAW,CAAC,QAAQ,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO;IA0BvD;;OAEG;IACH,aAAa,IAAI,OAAO;IAyBxB;;OAEG;IACH,SAAS,CAAC,eAAe,IAAI,MAAM;CAapC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { MessageSenderInterface, SlackAccountOptions } from '../types';
|
|
2
|
+
import { Account } from './Account';
|
|
3
|
+
export declare class SlackAccount extends Account {
|
|
4
|
+
workspaceId: string;
|
|
5
|
+
workspaceName: string;
|
|
6
|
+
botUserId: string;
|
|
7
|
+
constructor(options?: SlackAccountOptions);
|
|
8
|
+
/**
|
|
9
|
+
* Create a sender for this Slack account
|
|
10
|
+
*/
|
|
11
|
+
createSender(): Promise<MessageSenderInterface>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=SlackAccount.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SlackAccount.d.ts","sourceRoot":"","sources":["../../src/models/SlackAccount.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,qBAMa,YAAa,SAAQ,OAAO;IACvC,WAAW,SAAM;IACjB,aAAa,SAAM;IACnB,SAAS,SAAM;gBAEH,OAAO,GAAE,mBAAwB;IAa7C;;OAEG;IACY,YAAY,IAAI,OAAO,CAAC,sBAAsB,CAAC;CAI/D"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { SlackMessageOptions } from '../types';
|
|
2
|
+
import { Message } from './Message';
|
|
3
|
+
export declare class SlackMessage extends Message {
|
|
4
|
+
channelId: string;
|
|
5
|
+
channelName: string;
|
|
6
|
+
slackTs: string;
|
|
7
|
+
slackThreadTs: string;
|
|
8
|
+
reactions: string;
|
|
9
|
+
isEdited: boolean;
|
|
10
|
+
messageType: string;
|
|
11
|
+
blocks: string;
|
|
12
|
+
constructor(options?: SlackMessageOptions);
|
|
13
|
+
/**
|
|
14
|
+
* Get reactions as parsed array
|
|
15
|
+
*/
|
|
16
|
+
getReactions(): Array<{
|
|
17
|
+
name: string;
|
|
18
|
+
count: number;
|
|
19
|
+
users?: string[];
|
|
20
|
+
}>;
|
|
21
|
+
/**
|
|
22
|
+
* Get blocks as parsed array
|
|
23
|
+
*/
|
|
24
|
+
getBlocks(): any[];
|
|
25
|
+
/**
|
|
26
|
+
* Check if message is in a thread
|
|
27
|
+
*/
|
|
28
|
+
isInThread(): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Get total reaction count
|
|
31
|
+
*/
|
|
32
|
+
getTotalReactions(): number;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=SlackMessage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SlackMessage.d.ts","sourceRoot":"","sources":["../../src/models/SlackMessage.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,qBAMa,YAAa,SAAQ,OAAO;IACvC,SAAS,SAAM;IACf,WAAW,SAAM;IACjB,OAAO,SAAM;IACb,aAAa,SAAM;IACnB,SAAS,SAAM;IACf,QAAQ,UAAS;IACjB,WAAW,SAAM;IACjB,MAAM,SAAM;gBAEA,OAAO,GAAE,mBAAwB;IAgB7C;;OAEG;IACH,YAAY,IAAI,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IASxE;;OAEG;IACH,SAAS,IAAI,GAAG,EAAE;IASlB;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACH,iBAAiB,IAAI,MAAM;CAG5B"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { TweetOptions } from '../types';
|
|
2
|
+
import { Message } from './Message';
|
|
3
|
+
export declare class Tweet extends Message {
|
|
4
|
+
tweetId: string;
|
|
5
|
+
retweetCount: number;
|
|
6
|
+
likeCount: number;
|
|
7
|
+
replyCount: number;
|
|
8
|
+
isRetweet: boolean;
|
|
9
|
+
isReply: boolean;
|
|
10
|
+
mediaUrls: string;
|
|
11
|
+
hashtags: string;
|
|
12
|
+
mentions: string;
|
|
13
|
+
constructor(options?: TweetOptions);
|
|
14
|
+
/**
|
|
15
|
+
* Get media URLs as parsed array
|
|
16
|
+
*/
|
|
17
|
+
getMediaUrls(): string[];
|
|
18
|
+
/**
|
|
19
|
+
* Get hashtags as parsed array
|
|
20
|
+
*/
|
|
21
|
+
getHashtags(): string[];
|
|
22
|
+
/**
|
|
23
|
+
* Get mentions as parsed array
|
|
24
|
+
*/
|
|
25
|
+
getMentions(): string[];
|
|
26
|
+
/**
|
|
27
|
+
* Get total engagement count
|
|
28
|
+
*/
|
|
29
|
+
getEngagement(): number;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=Tweet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tweet.d.ts","sourceRoot":"","sources":["../../src/models/Tweet.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,qBAMa,KAAM,SAAQ,OAAO;IAChC,OAAO,SAAM;IACb,YAAY,SAAK;IACjB,SAAS,SAAK;IACd,UAAU,SAAK;IACf,SAAS,UAAS;IAClB,OAAO,UAAS;IAChB,SAAS,SAAM;IACf,QAAQ,SAAM;IACd,QAAQ,SAAM;gBAEF,OAAO,GAAE,YAAiB;IAetC;;OAEG;IACH,YAAY,IAAI,MAAM,EAAE;IASxB;;OAEG;IACH,WAAW,IAAI,MAAM,EAAE;IASvB;;OAEG;IACH,WAAW,IAAI,MAAM,EAAE;IASvB;;OAEG;IACH,aAAa,IAAI,MAAM;CAGxB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { MessageSenderInterface, TwitterAccountOptions } from '../types';
|
|
2
|
+
import { Account } from './Account';
|
|
3
|
+
export declare class TwitterAccount extends Account {
|
|
4
|
+
handle: string;
|
|
5
|
+
twitterUserId: string;
|
|
6
|
+
constructor(options?: TwitterAccountOptions);
|
|
7
|
+
/**
|
|
8
|
+
* Create a sender for this Twitter account
|
|
9
|
+
*/
|
|
10
|
+
createSender(): Promise<MessageSenderInterface>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=TwitterAccount.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TwitterAccount.d.ts","sourceRoot":"","sources":["../../src/models/TwitterAccount.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,qBAMa,cAAe,SAAQ,OAAO;IACzC,MAAM,SAAM;IACZ,aAAa,SAAM;gBAEP,OAAO,GAAE,qBAA0B;IAW/C;;OAEG;IACY,YAAY,IAAI,OAAO,CAAC,sBAAsB,CAAC;CAI/D"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { SmrtObject } from '@happyvertical/smrt-core';
|
|
2
|
+
/**
|
|
3
|
+
* Whitelist - Allow-only entries for email filtering
|
|
4
|
+
*
|
|
5
|
+
* Supports three pattern types:
|
|
6
|
+
* - email: Exact email address (user@example.com)
|
|
7
|
+
* - domain: Entire domain (*@example.com)
|
|
8
|
+
* - regex: Custom regex pattern
|
|
9
|
+
*/
|
|
10
|
+
export declare class Whitelist extends SmrtObject {
|
|
11
|
+
pattern: string;
|
|
12
|
+
type: 'email' | 'domain' | 'regex';
|
|
13
|
+
category: string | null;
|
|
14
|
+
description: string;
|
|
15
|
+
constructor(options?: any);
|
|
16
|
+
/**
|
|
17
|
+
* Check if an email address matches this whitelist entry
|
|
18
|
+
*/
|
|
19
|
+
matches(email: string): boolean;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=Whitelist.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Whitelist.d.ts","sourceRoot":"","sources":["../../src/models/Whitelist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,MAAM,0BAA0B,CAAC;AAE5D;;;;;;;GAOG;AACH,qBAKa,SAAU,SAAQ,UAAU;IACvC,OAAO,EAAE,MAAM,CAAM;IACrB,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAW;IAC7C,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC/B,WAAW,EAAE,MAAM,CAAM;gBAEb,OAAO,GAAE,GAAQ;IAW7B;;OAEG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CA6BhC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"playground.d.ts","sourceRoot":"","sources":["../src/playground.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC"}
|