@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.
Files changed (153) hide show
  1. package/AGENTS.md +31 -0
  2. package/CLAUDE.md +1 -0
  3. package/LICENSE +7 -0
  4. package/README.md +103 -0
  5. package/dist/__smrt-register__.d.ts +2 -0
  6. package/dist/__smrt-register__.d.ts.map +1 -0
  7. package/dist/collections/AccountCollection.d.ts +42 -0
  8. package/dist/collections/AccountCollection.d.ts.map +1 -0
  9. package/dist/collections/AttachmentCollection.d.ts +67 -0
  10. package/dist/collections/AttachmentCollection.d.ts.map +1 -0
  11. package/dist/collections/BlacklistCollection.d.ts +14 -0
  12. package/dist/collections/BlacklistCollection.d.ts.map +1 -0
  13. package/dist/collections/EmailAccountCollection.d.ts +74 -0
  14. package/dist/collections/EmailAccountCollection.d.ts.map +1 -0
  15. package/dist/collections/EmailAttachmentCollection.d.ts +38 -0
  16. package/dist/collections/EmailAttachmentCollection.d.ts.map +1 -0
  17. package/dist/collections/EmailCollection.d.ts +81 -0
  18. package/dist/collections/EmailCollection.d.ts.map +1 -0
  19. package/dist/collections/EmailFolderCollection.d.ts +85 -0
  20. package/dist/collections/EmailFolderCollection.d.ts.map +1 -0
  21. package/dist/collections/MessageCollection.d.ts +74 -0
  22. package/dist/collections/MessageCollection.d.ts.map +1 -0
  23. package/dist/collections/WhitelistCollection.d.ts +18 -0
  24. package/dist/collections/WhitelistCollection.d.ts.map +1 -0
  25. package/dist/index.d.ts +27 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +3068 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/manifest.json +10576 -0
  30. package/dist/models/Account.d.ts +47 -0
  31. package/dist/models/Account.d.ts.map +1 -0
  32. package/dist/models/Attachment.d.ts +48 -0
  33. package/dist/models/Attachment.d.ts.map +1 -0
  34. package/dist/models/Blacklist.d.ts +21 -0
  35. package/dist/models/Blacklist.d.ts.map +1 -0
  36. package/dist/models/Email.d.ts +98 -0
  37. package/dist/models/Email.d.ts.map +1 -0
  38. package/dist/models/EmailAccount.d.ts +65 -0
  39. package/dist/models/EmailAccount.d.ts.map +1 -0
  40. package/dist/models/EmailAttachment.d.ts +19 -0
  41. package/dist/models/EmailAttachment.d.ts.map +1 -0
  42. package/dist/models/EmailFolder.d.ts +65 -0
  43. package/dist/models/EmailFolder.d.ts.map +1 -0
  44. package/dist/models/Message.d.ts +105 -0
  45. package/dist/models/Message.d.ts.map +1 -0
  46. package/dist/models/SlackAccount.d.ts +13 -0
  47. package/dist/models/SlackAccount.d.ts.map +1 -0
  48. package/dist/models/SlackMessage.d.ts +34 -0
  49. package/dist/models/SlackMessage.d.ts.map +1 -0
  50. package/dist/models/Tweet.d.ts +31 -0
  51. package/dist/models/Tweet.d.ts.map +1 -0
  52. package/dist/models/TwitterAccount.d.ts +12 -0
  53. package/dist/models/TwitterAccount.d.ts.map +1 -0
  54. package/dist/models/Whitelist.d.ts +21 -0
  55. package/dist/models/Whitelist.d.ts.map +1 -0
  56. package/dist/playground.d.ts +2 -0
  57. package/dist/playground.d.ts.map +1 -0
  58. package/dist/playground.js +176 -0
  59. package/dist/playground.js.map +1 -0
  60. package/dist/senders/EmailSender.d.ts +13 -0
  61. package/dist/senders/EmailSender.d.ts.map +1 -0
  62. package/dist/senders/SlackSender.d.ts +11 -0
  63. package/dist/senders/SlackSender.d.ts.map +1 -0
  64. package/dist/senders/TweetSender.d.ts +11 -0
  65. package/dist/senders/TweetSender.d.ts.map +1 -0
  66. package/dist/smrt-knowledge.json +4234 -0
  67. package/dist/svelte/components/AccountAvatar.svelte +107 -0
  68. package/dist/svelte/components/AccountAvatar.svelte.d.ts +12 -0
  69. package/dist/svelte/components/AccountAvatar.svelte.d.ts.map +1 -0
  70. package/dist/svelte/components/AccountCard.svelte +173 -0
  71. package/dist/svelte/components/AccountCard.svelte.d.ts +12 -0
  72. package/dist/svelte/components/AccountCard.svelte.d.ts.map +1 -0
  73. package/dist/svelte/components/AccountList.svelte +90 -0
  74. package/dist/svelte/components/AccountList.svelte.d.ts +12 -0
  75. package/dist/svelte/components/AccountList.svelte.d.ts.map +1 -0
  76. package/dist/svelte/components/AttachmentChip.svelte +99 -0
  77. package/dist/svelte/components/AttachmentChip.svelte.d.ts +12 -0
  78. package/dist/svelte/components/AttachmentChip.svelte.d.ts.map +1 -0
  79. package/dist/svelte/components/AttachmentUpload.svelte +160 -0
  80. package/dist/svelte/components/AttachmentUpload.svelte.d.ts +11 -0
  81. package/dist/svelte/components/AttachmentUpload.svelte.d.ts.map +1 -0
  82. package/dist/svelte/components/ComposeForm.svelte +387 -0
  83. package/dist/svelte/components/ComposeForm.svelte.d.ts +13 -0
  84. package/dist/svelte/components/ComposeForm.svelte.d.ts.map +1 -0
  85. package/dist/svelte/components/EmailAccountManager.svelte +690 -0
  86. package/dist/svelte/components/EmailAccountManager.svelte.d.ts +15 -0
  87. package/dist/svelte/components/EmailAccountManager.svelte.d.ts.map +1 -0
  88. package/dist/svelte/components/EmailFilterManager.svelte +687 -0
  89. package/dist/svelte/components/EmailFilterManager.svelte.d.ts +14 -0
  90. package/dist/svelte/components/EmailFilterManager.svelte.d.ts.map +1 -0
  91. package/dist/svelte/components/FolderNav.svelte +171 -0
  92. package/dist/svelte/components/FolderNav.svelte.d.ts +11 -0
  93. package/dist/svelte/components/FolderNav.svelte.d.ts.map +1 -0
  94. package/dist/svelte/components/ForwardForm.svelte +166 -0
  95. package/dist/svelte/components/ForwardForm.svelte.d.ts +10 -0
  96. package/dist/svelte/components/ForwardForm.svelte.d.ts.map +1 -0
  97. package/dist/svelte/components/MessageCard.svelte +336 -0
  98. package/dist/svelte/components/MessageCard.svelte.d.ts +20 -0
  99. package/dist/svelte/components/MessageCard.svelte.d.ts.map +1 -0
  100. package/dist/svelte/components/MessageDetail.svelte +309 -0
  101. package/dist/svelte/components/MessageDetail.svelte.d.ts +18 -0
  102. package/dist/svelte/components/MessageDetail.svelte.d.ts.map +1 -0
  103. package/dist/svelte/components/MessageFilters.svelte +228 -0
  104. package/dist/svelte/components/MessageFilters.svelte.d.ts +13 -0
  105. package/dist/svelte/components/MessageFilters.svelte.d.ts.map +1 -0
  106. package/dist/svelte/components/MessageList.svelte +101 -0
  107. package/dist/svelte/components/MessageList.svelte.d.ts +23 -0
  108. package/dist/svelte/components/MessageList.svelte.d.ts.map +1 -0
  109. package/dist/svelte/components/MessageStatusIndicator.svelte +82 -0
  110. package/dist/svelte/components/MessageStatusIndicator.svelte.d.ts +11 -0
  111. package/dist/svelte/components/MessageStatusIndicator.svelte.d.ts.map +1 -0
  112. package/dist/svelte/components/MessageToolbar.svelte +131 -0
  113. package/dist/svelte/components/MessageToolbar.svelte.d.ts +14 -0
  114. package/dist/svelte/components/MessageToolbar.svelte.d.ts.map +1 -0
  115. package/dist/svelte/components/MessageTypeBadge.svelte +59 -0
  116. package/dist/svelte/components/MessageTypeBadge.svelte.d.ts +9 -0
  117. package/dist/svelte/components/MessageTypeBadge.svelte.d.ts.map +1 -0
  118. package/dist/svelte/components/RecipientInput.svelte +150 -0
  119. package/dist/svelte/components/RecipientInput.svelte.d.ts +11 -0
  120. package/dist/svelte/components/RecipientInput.svelte.d.ts.map +1 -0
  121. package/dist/svelte/components/ReplyForm.svelte +159 -0
  122. package/dist/svelte/components/ReplyForm.svelte.d.ts +11 -0
  123. package/dist/svelte/components/ReplyForm.svelte.d.ts.map +1 -0
  124. package/dist/svelte/components/SendStatusBadge.svelte +64 -0
  125. package/dist/svelte/components/SendStatusBadge.svelte.d.ts +8 -0
  126. package/dist/svelte/components/SendStatusBadge.svelte.d.ts.map +1 -0
  127. package/dist/svelte/components/ThreadView.svelte +240 -0
  128. package/dist/svelte/components/ThreadView.svelte.d.ts +12 -0
  129. package/dist/svelte/components/ThreadView.svelte.d.ts.map +1 -0
  130. package/dist/svelte/i18n.d.ts +42 -0
  131. package/dist/svelte/i18n.d.ts.map +1 -0
  132. package/dist/svelte/i18n.js +60 -0
  133. package/dist/svelte/i18n.messages.d.ts +32 -0
  134. package/dist/svelte/i18n.messages.d.ts.map +1 -0
  135. package/dist/svelte/i18n.messages.js +46 -0
  136. package/dist/svelte/index.d.ts +54 -0
  137. package/dist/svelte/index.d.ts.map +1 -0
  138. package/dist/svelte/index.js +44 -0
  139. package/dist/svelte/playground.d.ts +341 -0
  140. package/dist/svelte/playground.d.ts.map +1 -0
  141. package/dist/svelte/playground.js +171 -0
  142. package/dist/svelte/types.d.ts +195 -0
  143. package/dist/svelte/types.d.ts.map +1 -0
  144. package/dist/svelte/types.js +6 -0
  145. package/dist/types.d.ts +316 -0
  146. package/dist/types.d.ts.map +1 -0
  147. package/dist/types.js +2 -0
  148. package/dist/types.js.map +1 -0
  149. package/dist/ui.d.ts +4 -0
  150. package/dist/ui.d.ts.map +1 -0
  151. package/dist/ui.js +103 -0
  152. package/dist/ui.js.map +1 -0
  153. 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,2 @@
1
+ export { default } from './svelte/playground.js';
2
+ //# sourceMappingURL=playground.d.ts.map
@@ -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"}