@social-mail/social-mail-web-server 1.5.415 → 1.5.416

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 (174) hide show
  1. package/dist/common/Mailto.d.ts +17 -0
  2. package/dist/common/Mailto.d.ts.map +1 -0
  3. package/dist/common/Mailto.js +27 -0
  4. package/dist/common/Mailto.js.map +1 -0
  5. package/dist/common/cacheFor.d.ts +10 -1
  6. package/dist/common/cacheFor.d.ts.map +1 -1
  7. package/dist/common/cacheFor.js +18 -2
  8. package/dist/common/cacheFor.js.map +1 -1
  9. package/dist/server/model/SocialMailContext.d.ts +2 -0
  10. package/dist/server/model/SocialMailContext.d.ts.map +1 -1
  11. package/dist/server/model/SocialMailContext.js +2 -0
  12. package/dist/server/model/SocialMailContext.js.map +1 -1
  13. package/dist/server/model/SocialMailContextEvents.d.ts.map +1 -1
  14. package/dist/server/model/SocialMailContextEvents.js +3 -0
  15. package/dist/server/model/SocialMailContextEvents.js.map +1 -1
  16. package/dist/server/model/entities/Email.d.ts +2 -0
  17. package/dist/server/model/entities/Email.d.ts.map +1 -1
  18. package/dist/server/model/entities/Email.js.map +1 -1
  19. package/dist/server/model/entities/EmailAddress.d.ts +2 -0
  20. package/dist/server/model/entities/EmailAddress.d.ts.map +1 -1
  21. package/dist/server/model/entities/EmailAddress.js.map +1 -1
  22. package/dist/server/model/entities/EmailRecipient.d.ts +1 -1
  23. package/dist/server/model/entities/EmailRecipient.d.ts.map +1 -1
  24. package/dist/server/model/entities/EmailRecipient.js +2 -2
  25. package/dist/server/model/entities/EmailRecipient.js.map +1 -1
  26. package/dist/server/model/entities/Mailbox.d.ts +1 -0
  27. package/dist/server/model/entities/Mailbox.d.ts.map +1 -1
  28. package/dist/server/model/entities/Mailbox.js +4 -0
  29. package/dist/server/model/entities/Mailbox.js.map +1 -1
  30. package/dist/server/model/entities/ThreadParticipant.d.ts +22 -0
  31. package/dist/server/model/entities/ThreadParticipant.d.ts.map +1 -0
  32. package/dist/server/model/entities/ThreadParticipant.js +53 -0
  33. package/dist/server/model/entities/ThreadParticipant.js.map +1 -0
  34. package/dist/server/model/events/EmailEvents.d.ts.map +1 -1
  35. package/dist/server/model/events/EmailEvents.js +17 -7
  36. package/dist/server/model/events/EmailEvents.js.map +1 -1
  37. package/dist/server/model/events/MailboxEvents.d.ts.map +1 -1
  38. package/dist/server/model/events/MailboxEvents.js +2 -0
  39. package/dist/server/model/events/MailboxEvents.js.map +1 -1
  40. package/dist/server/model/events/ThreadParticipantEvents.d.ts +8 -0
  41. package/dist/server/model/events/ThreadParticipantEvents.d.ts.map +1 -0
  42. package/dist/server/model/events/ThreadParticipantEvents.js +19 -0
  43. package/dist/server/model/events/ThreadParticipantEvents.js.map +1 -0
  44. package/dist/server/seed/ui/seed-ui.js +1 -1
  45. package/dist/server/services/EmailAddressService.d.ts +4 -2
  46. package/dist/server/services/EmailAddressService.d.ts.map +1 -1
  47. package/dist/server/services/EmailAddressService.js +4 -4
  48. package/dist/server/services/EmailAddressService.js.map +1 -1
  49. package/dist/server/services/StoreFileService.d.ts +3 -1
  50. package/dist/server/services/StoreFileService.d.ts.map +1 -1
  51. package/dist/server/services/StoreFileService.js.map +1 -1
  52. package/dist/server/services/TemplateExpander.js +1 -1
  53. package/dist/server/services/TemplateExpander.js.map +1 -1
  54. package/dist/server/services/accounts/sales/SalesInvoiceService.d.ts +3 -1
  55. package/dist/server/services/accounts/sales/SalesInvoiceService.d.ts.map +1 -1
  56. package/dist/server/services/accounts/sales/SalesInvoiceService.js.map +1 -1
  57. package/dist/server/services/channels/ChannelModerationService.d.ts +8 -0
  58. package/dist/server/services/channels/ChannelModerationService.d.ts.map +1 -0
  59. package/dist/server/{smtp/services/EmailThreadService.js → services/channels/ChannelModerationService.js} +19 -7
  60. package/dist/server/services/channels/ChannelModerationService.js.map +1 -0
  61. package/dist/server/services/dom/HtmlSanitizer.d.ts.map +1 -1
  62. package/dist/server/services/dom/HtmlSanitizer.js +7 -1
  63. package/dist/server/services/dom/HtmlSanitizer.js.map +1 -1
  64. package/dist/server/services/domain-keys/DomainKeyService.d.ts +3 -1
  65. package/dist/server/services/domain-keys/DomainKeyService.d.ts.map +1 -1
  66. package/dist/server/services/domain-keys/DomainKeyService.js.map +1 -1
  67. package/dist/server/services/files/FileAccessService.d.ts +3 -1
  68. package/dist/server/services/files/FileAccessService.d.ts.map +1 -1
  69. package/dist/server/services/files/FileAccessService.js +0 -2
  70. package/dist/server/services/files/FileAccessService.js.map +1 -1
  71. package/dist/server/services/files/SnapshotService.d.ts +3 -1
  72. package/dist/server/services/files/SnapshotService.d.ts.map +1 -1
  73. package/dist/server/services/files/SnapshotService.js.map +1 -1
  74. package/dist/server/services/files/WebSiteService.d.ts +3 -1
  75. package/dist/server/services/files/WebSiteService.d.ts.map +1 -1
  76. package/dist/server/services/files/WebSiteService.js.map +1 -1
  77. package/dist/server/services/store/StoreConfigService.d.ts +3 -1
  78. package/dist/server/services/store/StoreConfigService.d.ts.map +1 -1
  79. package/dist/server/services/store/StoreConfigService.js.map +1 -1
  80. package/dist/server/services/threads/EmailThreadService.d.ts +7 -0
  81. package/dist/server/services/threads/EmailThreadService.d.ts.map +1 -0
  82. package/dist/server/services/threads/EmailThreadService.js +45 -0
  83. package/dist/server/services/threads/EmailThreadService.js.map +1 -0
  84. package/dist/server/smtp/dns/DnsService.d.ts +3 -1
  85. package/dist/server/smtp/dns/DnsService.d.ts.map +1 -1
  86. package/dist/server/smtp/dns/DnsService.js.map +1 -1
  87. package/dist/server/smtp/services/AccessTokenService.d.ts +4 -2
  88. package/dist/server/smtp/services/AccessTokenService.d.ts.map +1 -1
  89. package/dist/server/smtp/services/AccessTokenService.js +23 -28
  90. package/dist/server/smtp/services/AccessTokenService.js.map +1 -1
  91. package/dist/server/smtp/services/CachedEmailService.d.ts.map +1 -1
  92. package/dist/server/smtp/services/CachedEmailService.js +6 -1
  93. package/dist/server/smtp/services/CachedEmailService.js.map +1 -1
  94. package/dist/server/smtp/services/EmailPostReceiveService.d.ts +8 -0
  95. package/dist/server/smtp/services/EmailPostReceiveService.d.ts.map +1 -1
  96. package/dist/server/smtp/services/EmailPostReceiveService.js +48 -6
  97. package/dist/server/smtp/services/EmailPostReceiveService.js.map +1 -1
  98. package/dist/server/smtp/services/EngagementService.d.ts.map +1 -1
  99. package/dist/server/smtp/services/EngagementService.js +5 -0
  100. package/dist/server/smtp/services/EngagementService.js.map +1 -1
  101. package/dist/server/smtp/services/WebSiteChannelService.d.ts +3 -3
  102. package/dist/server/smtp/services/WebSiteChannelService.d.ts.map +1 -1
  103. package/dist/server/smtp/services/WebSiteChannelService.js +27 -26
  104. package/dist/server/smtp/services/WebSiteChannelService.js.map +1 -1
  105. package/dist/server/storage/TempFileService.d.ts.map +1 -1
  106. package/dist/server/storage/TempFileService.js +7 -2
  107. package/dist/server/storage/TempFileService.js.map +1 -1
  108. package/dist/server/templates/channel/SubscriberRequested.d.ts.map +1 -1
  109. package/dist/server/templates/channel/SubscriberRequested.js +5 -1
  110. package/dist/server/templates/channel/SubscriberRequested.js.map +1 -1
  111. package/dist/server/workflows/pending/PendingPostReceiveWorkflow.d.ts.map +1 -1
  112. package/dist/server/workflows/pending/PendingPostReceiveWorkflow.js +3 -14
  113. package/dist/server/workflows/pending/PendingPostReceiveWorkflow.js.map +1 -1
  114. package/dist/server/workflows/smtp/DispatchEmailToMX.d.ts +3 -1
  115. package/dist/server/workflows/smtp/DispatchEmailToMX.d.ts.map +1 -1
  116. package/dist/server/workflows/smtp/DispatchEmailToMX.js +30 -4
  117. package/dist/server/workflows/smtp/DispatchEmailToMX.js.map +1 -1
  118. package/dist/server/workflows/smtp/MailDispatcherService.d.ts.map +1 -1
  119. package/dist/server/workflows/smtp/MailDispatcherService.js +5 -1
  120. package/dist/server/workflows/smtp/MailDispatcherService.js.map +1 -1
  121. package/dist/server/workflows/smtp/PrepareEmailToSend.d.ts +3 -1
  122. package/dist/server/workflows/smtp/PrepareEmailToSend.d.ts.map +1 -1
  123. package/dist/server/workflows/smtp/PrepareEmailToSend.js +15 -4
  124. package/dist/server/workflows/smtp/PrepareEmailToSend.js.map +1 -1
  125. package/dist/tsconfig.tsbuildinfo +1 -1
  126. package/dist/wwwroot/routes/@[channel]/[slug]/index.js +4 -4
  127. package/dist/wwwroot/routes/@[channel]/[slug]/index.js.map +1 -1
  128. package/dist/wwwroot/routes/api/site/snapshot/index.d.ts.map +1 -1
  129. package/dist/wwwroot/routes/api/site/snapshot/index.js.map +1 -1
  130. package/package.json +3 -3
  131. package/src/common/Mailto.ts +39 -0
  132. package/src/common/cacheFor.ts +26 -4
  133. package/src/server/model/SocialMailContext.ts +3 -0
  134. package/src/server/model/SocialMailContextEvents.ts +4 -0
  135. package/src/server/model/entities/Email.ts +2 -0
  136. package/src/server/model/entities/EmailAddress.ts +2 -0
  137. package/src/server/model/entities/EmailRecipient.ts +2 -2
  138. package/src/server/model/entities/Mailbox.ts +3 -0
  139. package/src/server/model/entities/ThreadParticipant.ts +45 -0
  140. package/src/server/model/events/EmailEvents.ts +19 -7
  141. package/src/server/model/events/MailboxEvents.ts +2 -0
  142. package/src/server/model/events/ThreadParticipantEvents.ts +27 -0
  143. package/src/server/seed/ui/seed-ui.ts +1 -1
  144. package/src/server/services/EmailAddressService.ts +8 -5
  145. package/src/server/services/StoreFileService.ts +6 -2
  146. package/src/server/services/TemplateExpander.ts +1 -1
  147. package/src/server/services/accounts/sales/SalesInvoiceService.ts +5 -2
  148. package/src/server/services/channels/ChannelModerationService.ts +27 -0
  149. package/src/server/services/dom/HtmlSanitizer.ts +7 -1
  150. package/src/server/services/domain-keys/DomainKeyService.ts +4 -2
  151. package/src/server/services/files/FileAccessService.ts +4 -5
  152. package/src/server/services/files/SnapshotService.ts +5 -2
  153. package/src/server/services/files/WebSiteService.ts +5 -2
  154. package/src/server/services/store/StoreConfigService.ts +5 -2
  155. package/src/server/services/tags/TagService.ts +1 -1
  156. package/src/server/services/threads/EmailThreadService.ts +39 -0
  157. package/src/server/smtp/dns/DnsService.ts +4 -3
  158. package/src/server/smtp/services/AccessTokenService.ts +20 -22
  159. package/src/server/smtp/services/CachedEmailService.ts +5 -1
  160. package/src/server/smtp/services/EmailPostReceiveService.ts +54 -9
  161. package/src/server/smtp/services/EngagementService.ts +6 -0
  162. package/src/server/smtp/services/WebSiteChannelService.ts +17 -17
  163. package/src/server/storage/TempFileService.ts +7 -2
  164. package/src/server/templates/channel/SubscriberRequested.tsx +5 -1
  165. package/src/server/workflows/pending/PendingPostReceiveWorkflow.ts +3 -16
  166. package/src/server/workflows/smtp/DispatchEmailToMX.ts +33 -3
  167. package/src/server/workflows/smtp/MailDispatcherService.ts +6 -1
  168. package/src/server/workflows/smtp/PrepareEmailToSend.ts +16 -3
  169. package/src/wwwroot/routes/@[channel]/[slug]/index.tsx +4 -4
  170. package/src/wwwroot/routes/api/site/snapshot/index.ts +1 -0
  171. package/dist/server/smtp/services/EmailThreadService.d.ts +0 -7
  172. package/dist/server/smtp/services/EmailThreadService.d.ts.map +0 -1
  173. package/dist/server/smtp/services/EmailThreadService.js.map +0 -1
  174. package/src/server/smtp/services/EmailThreadService.ts +0 -15
@@ -61,13 +61,13 @@ export default class default_1 extends Page {
61
61
  const { meta } = await this.channelPageService.getEmailMeta(host, this.request.URL.toString(), mb.mailboxID, mb.emailID);
62
62
  if (meta?.length) {
63
63
  body = body.replace(/\<head[^\>]*\>/, (s, v) => {
64
- return s + meta.map((x) => x.render()).join("\r\n");
64
+ return s + meta.map((x) => x.render()).join("\r\n") + "\r\n";
65
65
  });
66
66
  }
67
- body = body.replace(/\<head[^\>]*\>/, (s, v) => {
68
- return s + `<script>var socialMail = ${socialMail};</script>`;
69
- });
70
67
  }
68
+ body = body.replace(/\<head[^\>]*\>/, (s, v) => {
69
+ return s + `\r\n<script>var socialMail = ${socialMail};</script>\r\n`;
70
+ });
71
71
  // const body = await this.channelPageService.modifyPage({
72
72
  // host,
73
73
  // url: this.request.URL.toString(),
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/wwwroot/routes/@[channel]/[slug]/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/wwwroot/routes/@[channel]/[slug]/index.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/wwwroot/routes/api/site/snapshot/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAU5D;;;;GAIG;AAEH,MAAM,CAAC,OAAO,MAAO,SAAQ,IAAI;IAG7B,OAAO,CAAC,EAAE,CAAoB;IAG9B,OAAO,CAAC,cAAc,CAAiB;IAGvC,OAAO,CAAC,YAAY,CAAe;IAGnC,OAAO,CAAC,WAAW,CAAqB;IAGxC,OAAO,CAAC,GAAG,CAAkB;IAEvB,GAAG;IAwDH,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG;CA+ChD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/wwwroot/routes/api/site/snapshot/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAW5D;;;;GAIG;AAEH,MAAM,CAAC,OAAO,MAAO,SAAQ,IAAI;IAG7B,OAAO,CAAC,EAAE,CAAoB;IAG9B,OAAO,CAAC,cAAc,CAAiB;IAGvC,OAAO,CAAC,YAAY,CAAe;IAGnC,OAAO,CAAC,WAAW,CAAqB;IAGxC,OAAO,CAAC,GAAG,CAAkB;IAEvB,GAAG;IAwDH,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG;CA+ChD"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/wwwroot/routes/api/site/snapshot/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/wwwroot/routes/api/site/snapshot/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@social-mail/social-mail-web-server",
3
- "version": "1.5.415",
3
+ "version": "1.5.416",
4
4
  "description": "## Phase 1",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -21,8 +21,8 @@
21
21
  "dependencies": {
22
22
  "@aws-sdk/client-s3": "^3.609.0",
23
23
  "@azure/storage-blob": "^12.25.0",
24
- "@entity-access/entity-access": "^1.0.378",
25
- "@entity-access/server-pages": "^1.1.332",
24
+ "@entity-access/entity-access": "^1.0.380",
25
+ "@entity-access/server-pages": "^1.1.335",
26
26
  "@ffmpeg/core-mt": "^0.12.6",
27
27
  "@ffmpeg/ffmpeg": "^0.12.10",
28
28
  "@ffmpeg/util": "^0.12.1",
@@ -0,0 +1,39 @@
1
+ export const Mailto = {
2
+
3
+ templateLink({emoji}) {
4
+ return `mailto:[{senderEmail}]?subject=${emoji}:[{uid}]:[{accessCode}]`;
5
+ },
6
+
7
+ create({
8
+ subject = "",
9
+ command = void 0 as {
10
+ emoji: string,
11
+ messageID: string,
12
+ uid?: string,
13
+ },
14
+ to = "",
15
+ body = "",
16
+ inReplyTo = ""
17
+ }) {
18
+ const usp = new URLSearchParams();
19
+ if (command) {
20
+ const { emoji, messageID } = command;
21
+ let { uid = "0" } = command;
22
+ if (uid) {
23
+ uid = uid + ":";
24
+ }
25
+ subject = `${emoji}:${uid}${messageID}:${subject}`;
26
+ }
27
+ if (subject) {
28
+ usp.append("subject", subject);
29
+ }
30
+ if (body) {
31
+ usp.append("body", body);
32
+ }
33
+ if (inReplyTo) {
34
+ usp.append("in-reply-to", inReplyTo);
35
+ }
36
+ return `mailto:${to}?${usp.toString()}`;
37
+ }
38
+
39
+ };
@@ -1,12 +1,34 @@
1
1
  /* eslint-disable no-console */
2
2
  import TimedCache from "@entity-access/entity-access/dist/common/cache/TimedCache.js";
3
3
 
4
- export function cacheFor() {
5
- return function(target, key) {
6
- const cacheSymbol = Symbol.for(`cache-for-${key}`);
4
+
5
+ export class ObjectCache<T> {
6
+
7
+ private cache: Map<any, TimedCache> = new Map();
8
+
9
+ for(name: keyof T) {
10
+ let tc = this.cache.get(name);
11
+ if (!tc) {
12
+ tc = new TimedCache();
13
+ this.cache.set(name, tc);
14
+ }
15
+ return tc;
16
+ }
17
+
18
+ clear(name: keyof T) {
19
+ this.cache.get(name)?.clear();
20
+ }
21
+ };
22
+
23
+ export interface ICacheContainer<T> {
24
+ cache: ObjectCache<T> | undefined;
25
+ }
26
+
27
+ export function cacheFor<T>() {
28
+ return function(target:ICacheContainer<T>, key) {
7
29
  const oldMethod = target[key] as (... a: any[]) => any;
8
30
  function value(... a: any[]) {
9
- const cache: TimedCache = this[cacheSymbol] ??= new TimedCache();
31
+ const cache = (this.cache ??= new ObjectCache()).get(key) as TimedCache;
10
32
  const cacheKey = a.join();
11
33
  const r = cache.getOrCreate(cacheKey, a, (k) => oldMethod.apply(this, a));
12
34
  r?.catch((error) => {
@@ -71,6 +71,7 @@ import StoreCoupon from "./entities/StoreCoupon.js";
71
71
  import StoreJournalCoupon from "./entities/StoreJournalCoupon.js";
72
72
  import WebHook from "./entities/WebHook.js";
73
73
  import WebHookEvent from "./entities/WebHookEvent.js";
74
+ import ThreadParticipant from "./entities/ThreadParticipant.js";
74
75
 
75
76
  @RegisterScoped
76
77
  export default class SocialMailContext extends EntityContext {
@@ -247,6 +248,8 @@ export default class SocialMailContext extends EntityContext {
247
248
 
248
249
  public emailAddressNames = this.model.register(EmailAddressName);
249
250
 
251
+ public threadParticipants = this.model.register(ThreadParticipant);
252
+
250
253
  public tags = this.model.register(Tag);
251
254
 
252
255
  }
@@ -129,6 +129,8 @@ import WebHook from "./entities/WebHook.js";
129
129
  import WebHookEvents from "./events/WebHookEvents.js";
130
130
  import WebHookEvent from "./entities/WebHookEvent.js";
131
131
  import WebHookEventEvents from "./events/WebHookEventEvents.js";
132
+ import ThreadParticipant from "./entities/ThreadParticipant.js";
133
+ import ThreadParticipantEvents from "./events/ThreadParticipantEvents.js";
132
134
 
133
135
 
134
136
  @RegisterSingleton
@@ -219,6 +221,8 @@ export default class SocialMailContextEvents extends ContextEvents {
219
221
  this.register(WebHook, WebHookEvents);
220
222
  this.register(WebHookEvent, WebHookEventEvents);
221
223
 
224
+ this.register(ThreadParticipant, ThreadParticipantEvents);
225
+
222
226
  }
223
227
 
224
228
  }
@@ -19,6 +19,7 @@ import type EmailEngagement from "./EmailEngagement.js";
19
19
  import Sql from "@entity-access/entity-access/dist/sql/Sql.js";
20
20
  import { apiPath } from "../../../common/globalEnv.js";
21
21
  import type MailboxContactEvent from "./MailboxContactEvent.js";
22
+ import type ThreadParticipant from "./ThreadParticipant.js";
22
23
 
23
24
  const emailStatuses = [ "queued", "received", "draft", "published", "pending-approval", "scheduled", "sent", "sent-failed", "deleted", "closed"] as const;
24
25
  export type emailStatusType = typeof emailStatuses[number];
@@ -298,6 +299,7 @@ export class Email {
298
299
 
299
300
  public engagements: EmailEngagement[];
300
301
  mailboxContactEvents: MailboxContactEvent[];
302
+ threadParticipants: ThreadParticipant[];
301
303
  }
302
304
 
303
305
  @Table("EmailLogs")
@@ -11,6 +11,7 @@ import type { ContactEmail } from "./Contact.js";
11
11
  import type SubscriberActivity from "./SubscriberActivity.js";
12
12
  import type EmailAddressName from "./EmailAddressName.js";
13
13
  import type StoreAccountEmail from "./StoreAccountEmail.js";
14
+ import type ThreadParticipant from "./ThreadParticipant.js";
14
15
 
15
16
  @Table("EmailAddresses")
16
17
  @Index({
@@ -54,5 +55,6 @@ export default class EmailAddress {
54
55
  public subscriberActivities: SubscriberActivity[];
55
56
  names: EmailAddressName[];
56
57
  storeAccounts: StoreAccountEmail[];
58
+ threadParticipants: ThreadParticipant[];
57
59
 
58
60
  }
@@ -6,7 +6,7 @@ import EmailAddress from "./EmailAddress.js";
6
6
  import DateTime from "@entity-access/entity-access/dist/types/DateTime.js";
7
7
  import { JsonProperty } from "@entity-access/server-pages/dist/services/ModelService.js";
8
8
 
9
- const emailRecipientTypes = [ "from", "to", "cc", "bcc", "viewer", "editor"] as const;
9
+ const emailRecipientTypes = [ "from", "to", "cc", "bcc", "viewer", "editor", "unsubscribed"] as const;
10
10
  export type emailRecipientType = typeof emailRecipientTypes[number];
11
11
 
12
12
  @Table("EmailRecipients")
@@ -33,7 +33,7 @@ export default class EmailRecipient {
33
33
  })
34
34
  public emailAddressID: number;
35
35
 
36
- @Column({ dataType: "Char", length: 10, enum: emailRecipientTypes })
36
+ @Column({ dataType: "Char", length: 20, enum: emailRecipientTypes })
37
37
  public type: emailRecipientType;
38
38
 
39
39
  @Column({ dataType: "Char", length: 200, nullable: true })
@@ -156,6 +156,9 @@ export default class Mailbox {
156
156
  @Column({ dataType: "Boolean", default: () => true })
157
157
  public requiresCommentModeration: boolean;
158
158
 
159
+ @Column({ dataType: "Boolean", default: () => true })
160
+ public requiresSignup: boolean;
161
+
159
162
  @Column({ dataType: "Int", default: () => 0 })
160
163
  public subscriberCount: number;
161
164
 
@@ -0,0 +1,45 @@
1
+ import Column from "@entity-access/entity-access/dist/decorators/Column.js";
2
+ import { RelateTo } from "@entity-access/entity-access/dist/decorators/Relate.js";
3
+ import Table from "@entity-access/entity-access/dist/decorators/Table.js";
4
+ import { Email } from "./Email.js";
5
+ import EmailAddress from "./EmailAddress.js";
6
+ import DateTime from "@entity-access/entity-access/dist/types/DateTime.js";
7
+ import Sql from "@entity-access/entity-access/dist/sql/Sql.js";
8
+
9
+ /**
10
+ * This class is a separate entity instead of using EmailRecipient,
11
+ * the reason is, for simplicity and faster index.
12
+ *
13
+ * 1. As EmailRecipients will be serialized for every email through JSON
14
+ * 2. Adding filter to remove participants will be extra pressure on database
15
+ * 3. Thread Participant may only exist at top thread.
16
+ * 4. Normal email communication will not involve thread participants.
17
+ * 5. This can further include fields related to Projects and other
18
+ * Task Management related data such as assignee etc. Which will make
19
+ * EmailRecipient simpler.
20
+ */
21
+
22
+ @Table("ThreadParticipants")
23
+ export default class ThreadParticipant {
24
+
25
+ @Column({ dataType: "BigInt", key: true})
26
+ @RelateTo(Email, {
27
+ property: (x) => x.email,
28
+ inverseProperty: (x) => x.threadParticipants
29
+ })
30
+ emailID: number;
31
+
32
+ @Column({ dataType: "BigInt", key: true })
33
+ @RelateTo(EmailAddress, {
34
+ property: (x) => x.emailAddress,
35
+ inverseProperty: (x) => x.threadParticipants
36
+ })
37
+ emailAddressID: number;
38
+
39
+ @Column({ dataType: "Boolean", default: () => false})
40
+ unsubscribed: boolean;
41
+
42
+ email: Email;
43
+ emailAddress: EmailAddress;
44
+
45
+ }
@@ -140,16 +140,28 @@ export default class EmailEvents extends AuthenticatedEvents<Email> {
140
140
 
141
141
  // deny changes back to draft... unless email was still in queue...
142
142
  const change = entry.getChange("status");
143
- if (change?.newValue === "draft" && change.newValue !== change.oldValue) {
143
+ if (change) {
144
+
145
+ if (change.oldValue === "pending-approval") {
146
+ // check if user is approval
147
+ if (this.verify) {
148
+ this.sessionUser.ensureIsAdmin();
149
+ return;
150
+ }
151
+ throw new EntityAccessError(`Cannot change status from pending approval`);
152
+ }
153
+
154
+ if (change.newValue === "draft" && change.newValue !== change.oldValue) {
144
155
 
145
- const dateSent = entry.getChange("dateSent");
146
- const isPending = change.oldValue === "scheduled"
147
- && dateSent?.oldValue && (DateTime.from(dateSent.oldValue).diff(DateTime.now).totalSeconds > 1);
156
+ const dateSent = entry.getChange("dateSent");
157
+ const isPending = change.oldValue === "scheduled"
158
+ && dateSent?.oldValue && (DateTime.from(dateSent.oldValue).diff(DateTime.now).totalSeconds > 1);
148
159
 
149
- if(!isPending) {
150
- throw new EntityAccessError(`Status cannot be set to draft from ${change.oldValue}`);
160
+ if(!isPending) {
161
+ throw new EntityAccessError(`Status cannot be set to draft from ${change.oldValue}`);
162
+ }
163
+ entity.workflowID = null;
151
164
  }
152
- entity.workflowID = null;
153
165
  }
154
166
 
155
167
  if (entry.isModified("parentID")) {
@@ -199,6 +199,8 @@ export default class MailboxEvents extends AuthenticatedEvents<Mailbox> {
199
199
  }
200
200
 
201
201
  async afterInsert(entity: Mailbox) {
202
+ this.emailAddressService.cache?.clear("getHostedMailbox");
203
+ this.emailAddressService.cache?.clear("getHostedMailboxID");
202
204
  await this.updateFolders(entity);
203
205
  return this.updateIndex(entity);
204
206
  }
@@ -0,0 +1,27 @@
1
+ import { IEntityQuery } from "@entity-access/entity-access/dist/model/IFilterWithParameter.js";
2
+ import ThreadParticipant from "../entities/ThreadParticipant.js";
3
+ import AuthenticatedEvents from "./AuthenticatedEvents.js";
4
+
5
+ export default class ThreadParticipantEvents extends AuthenticatedEvents<ThreadParticipant> {
6
+
7
+ filter(query: IEntityQuery<ThreadParticipant>) {
8
+ if (!this.verify) {
9
+ return query;
10
+ }
11
+ this.sessionUser.ensureLoggedIn();
12
+ if (this.sessionUser.isAdmin) {
13
+ return query;
14
+ }
15
+ const { userID } = this.sessionUser;
16
+ return query.where({ userID }, (p) => (x) =>
17
+ x.email.mailboxes.some((m) =>
18
+ m.mailbox.userMailboxes.some((mu) => mu.userID === p.userID)
19
+ || m.mailbox.domain.hostedDomain.domainUsers.some((du) => du.userID === p.userID && du.isAdmin === true)
20
+ )
21
+ );
22
+ }
23
+
24
+ includeFilter(query: IEntityQuery<ThreadParticipant>, type?: any, key?: string) {
25
+ return query;
26
+ }
27
+ }
@@ -3,7 +3,7 @@ import semver from "semver";
3
3
 
4
4
  export default async function seedUI(config: DBConfig) {
5
5
 
6
- const version = "1.2.764";
6
+ const version = "1.2.770";
7
7
 
8
8
  const existing = await config.getValue(UIPackageConfig, false);
9
9
  if (existing) {
@@ -3,14 +3,17 @@ import { RegisterSingleton, ServiceProvider } from "@entity-access/entity-access
3
3
  import SocialMailContext from "../model/SocialMailContext.js";
4
4
  import { globalServices } from "../../globalServices.js";
5
5
  import EntityAccessError from "@entity-access/entity-access/dist/common/EntityAccessError.js";
6
- import { cacheFor } from "../../common/cacheFor.js";
6
+ import {ICacheContainer, ObjectCache, cacheFor } from "../../common/cacheFor.js";
7
7
  import Domain from "../model/entities/Domain.js";
8
8
  import WorkflowContext from "@entity-access/entity-access/dist/workflows/WorkflowContext.js";
9
9
  import RepairEmailNameTagsWorkflow from "../workflows/repair/tags/RepairEmailNameTagsWorkflow.js";
10
10
 
11
11
 
12
+
12
13
  @RegisterSingleton
13
- export default class EmailAddressService {
14
+ export default class EmailAddressService implements ICacheContainer<EmailAddressService> {
15
+
16
+ cache: ObjectCache<EmailAddressService>;
14
17
 
15
18
  @cacheFor()
16
19
  public async getOrCreateDomain(name: string) {
@@ -96,11 +99,11 @@ export default class EmailAddressService {
96
99
  }
97
100
 
98
101
  @cacheFor()
99
- public async getHostedMailbox(emailAddress: string) {
100
- emailAddress = emailAddress.trim().toLocaleLowerCase();
102
+ public async getHostedMailbox(mailboxID: number) {
101
103
  using scope = globalServices.createScope();
102
104
  const db = scope.resolve(SocialMailContext);
103
- return await db.mailboxes.where({ emailAddress }, (p) => (x) => x.emailAddress.emailAddress === p.emailAddress)
105
+ return await db.mailboxes.where({ mailboxID }, (p) => (x) => x.mailboxID === p.mailboxID)
106
+ .include((x) => x.emailAddress)
104
107
  .first();
105
108
  }
106
109
 
@@ -5,12 +5,15 @@ import AtomicFolderService from "./files/AtomicFolderService.js";
5
5
  import { SafeFileName } from "../../common/SafeFileName.js";
6
6
  import { Base36 } from "../../common/Base36.js";
7
7
  import Sql from "@entity-access/entity-access/dist/sql/Sql.js";
8
- import { cacheFor } from "../../common/cacheFor.js";
8
+ import {ICacheContainer, ObjectCache, cacheFor } from "../../common/cacheFor.js";
9
9
  import WorkflowContext from "@entity-access/entity-access/dist/workflows/WorkflowContext.js";
10
10
  import UpdateFolderSize from "../workflows/storage/files/UpdateFolderSize.js";
11
11
 
12
+
12
13
  @RegisterScoped
13
- export default class StoreFileService {
14
+ export default class StoreFileService implements ICacheContainer<StoreFileService> {
15
+
16
+ cache: ObjectCache<StoreFileService>;
14
17
 
15
18
  @Inject
16
19
  db: SocialMailContext;
@@ -21,6 +24,7 @@ export default class StoreFileService {
21
24
  @Inject
22
25
  context: WorkflowContext;
23
26
 
27
+
24
28
  async changeFolder(item: StoreItem) {
25
29
  const folderName = SafeFileName.rename(item.name, `(${Base36.encode(item.storeItemID)})`);
26
30
  await this.db.appFiles.statements.update({
@@ -1,7 +1,7 @@
1
1
  export const expandPlaceholders = (text: string, a: Record<string, any>) => {
2
2
  const keys = Object.keys(a).map((x) => ({ key: x.toLocaleLowerCase(), value: x }));
3
3
  return text.replaceAll(/(\$([^\$\s]{3,50})\$)|(\[\{([^\}\s]{3,50})\}\])/g,(original, g1, gv1, g2, gv2) => {
4
- let key = gv1?.toLocaleLowerCase() ?? gv2?.toLocaleLowerCase();
4
+ let key = gv1?.toLowerCase() ?? gv2?.toLowerCase();
5
5
  if (!key) {
6
6
  return original;
7
7
  }
@@ -2,13 +2,16 @@ import Inject, { RegisterTransient } from "@entity-access/entity-access/dist/di/
2
2
  import ChangeEntry from "@entity-access/entity-access/dist/model/changes/ChangeEntry.js";
3
3
  import ChartOfAccounts from "../chart-of-accounts/ChartOfAccounts.js";
4
4
  import SocialMailContext from "../../../model/SocialMailContext.js";
5
- import { cacheFor } from "../../../../common/cacheFor.js";
5
+ import {ICacheContainer, ObjectCache, cacheFor } from "../../../../common/cacheFor.js";
6
6
  import DateTime from "@entity-access/entity-access/dist/types/DateTime.js";
7
7
  import { StoreJournal } from "../../../model/entities/StoreJournal.js";
8
8
  import CouponService from "../../coupons/CouponService.js";
9
9
 
10
+
10
11
  @RegisterTransient
11
- export default class SalesInvoiceService {
12
+ export default class SalesInvoiceService implements ICacheContainer<SalesInvoiceService> {
13
+
14
+ cache: ObjectCache<SalesInvoiceService>;
12
15
 
13
16
  @Inject
14
17
  chartOfAccounts: ChartOfAccounts;
@@ -0,0 +1,27 @@
1
+ import Inject, { RegisterScoped } from "@entity-access/entity-access/dist/di/di.js";
2
+ import SocialMailContext from "../../model/SocialMailContext.js";
3
+ import Mailbox from "../../model/entities/Mailbox.js";
4
+ import MailboxContact from "../../model/entities/MailboxContact.js";
5
+
6
+ @RegisterScoped
7
+ export default class ChannelModerationService {
8
+
9
+ @Inject
10
+ db: SocialMailContext;
11
+
12
+ async addToQueue(channel: Mailbox, emailID: any, mc: MailboxContact) {
13
+ if(!channel.requiresPostModeration) {
14
+ return false;
15
+ }
16
+ if (mc.isOwner) {
17
+ return false;
18
+ }
19
+ await this.db.emails.statements.update({
20
+ status: "pending-approval"
21
+ }, {
22
+ emailID
23
+ });
24
+ return true;
25
+ }
26
+
27
+ }
@@ -185,10 +185,16 @@ export default class HtmlSanitizer {
185
185
 
186
186
  // replace all attributes
187
187
  for (const iterator of e.attributes) {
188
+ if (!iterator.nodeValue) {
189
+ continue;
190
+ }
188
191
  iterator.nodeValue = expandPlaceholders(iterator.nodeValue, replace);
189
192
  }
190
193
  if(e.childElementCount === 0) {
191
- e.textContent = expandPlaceholders(e.textContent, replace);
194
+ const { textContent } = e;
195
+ if (textContent) {
196
+ e.textContent = expandPlaceholders(textContent, replace);
197
+ }
192
198
  }
193
199
  this.updateCommandAttributes(e, replace);
194
200
 
@@ -1,9 +1,11 @@
1
1
  import { RegisterSingleton, ServiceProvider } from "@entity-access/entity-access/dist/di/di.js";
2
- import { cacheFor } from "../../../common/cacheFor.js";
2
+ import {ICacheContainer, ObjectCache, cacheFor } from "../../../common/cacheFor.js";
3
3
  import SocialMailContext from "../../model/SocialMailContext.js";
4
4
 
5
5
  @RegisterSingleton
6
- export default class DomainKeyService {
6
+ export default class DomainKeyService implements ICacheContainer<DomainKeyService> {
7
+
8
+ cache: ObjectCache<DomainKeyService>;
7
9
 
8
10
  @cacheFor()
9
11
  getDomainKey(mailboxID: number) {
@@ -1,19 +1,18 @@
1
- import TimedCache from "@entity-access/entity-access/dist/common/cache/TimedCache.js";
1
+
2
2
  import { RegisterSingleton } from "@entity-access/entity-access/dist/di/di.js";
3
3
  import AppFile, { AppFileAccess, ExternalUser } from "../../model/entities/AppFile.js";
4
4
  import { globalServices } from "../../../globalServices.js";
5
5
  import SocialMailContext from "../../model/SocialMailContext.js";
6
- import { cacheFor } from "../../../common/cacheFor.js";
6
+ import {ICacheContainer, ObjectCache, cacheFor } from "../../../common/cacheFor.js";
7
7
  import DateTime from "@entity-access/entity-access/dist/types/DateTime.js";
8
8
  import CryptoService from "../CryptoService.js";
9
9
  import { randomUUID } from "crypto";
10
10
  import EntityAccessError from "@entity-access/entity-access/dist/common/EntityAccessError.js";
11
11
 
12
- const cache = new TimedCache<number, AppFileAccess[]>();
13
-
14
12
  @RegisterSingleton
15
- export default class FileAccessService {
13
+ export default class FileAccessService implements ICacheContainer<FileAccessService> {
16
14
 
15
+ cache: ObjectCache<FileAccessService>;
17
16
 
18
17
  public async getWriteList(userID: number) {
19
18
  const list = await this.getList(userID);
@@ -8,13 +8,14 @@ import AppFile from "../../model/entities/AppFile.js";
8
8
  import BaseStorage from "../../storage/BaseStorage.js";
9
9
  import TempFileService from "../../storage/TempFileService.js";
10
10
  import { join } from "path";
11
- import { cacheFor } from "../../../common/cacheFor.js";
11
+ import {ICacheContainer, ObjectCache, cacheFor } from "../../../common/cacheFor.js";
12
12
  import { globalEnv } from "../../../common/globalEnv.js";
13
13
  import Sql from "@entity-access/entity-access/dist/sql/Sql.js";
14
14
  import EntityAccessError from "@entity-access/entity-access/dist/common/EntityAccessError.js";
15
15
  import type { LocalFile } from "@entity-access/server-pages/dist/core/LocalFile.js";
16
16
  import { tokenizeCssUrl } from "../../../protocols/core/tokenizer.js";
17
17
 
18
+
18
19
  let cdn = globalEnv.cdn || "";
19
20
  if (cdn) {
20
21
  cdn = `//${cdn}`;
@@ -40,7 +41,9 @@ const joinPath = (root: string, path: string) => {
40
41
  };
41
42
 
42
43
  @RegisterTransient
43
- export default class SnapshotService {
44
+ export default class SnapshotService implements ICacheContainer<SnapshotService> {
45
+
46
+ cache: ObjectCache<SnapshotService>;
44
47
 
45
48
  @Inject
46
49
  db: SocialMailContext;
@@ -2,7 +2,7 @@ import Inject, { RegisterSingleton, ServiceProvider } from "@entity-access/entit
2
2
  import WebSiteFolder, { WebSiteFolderVersion } from "../../model/entities/WebSiteFolder.js";
3
3
  import { globalServices } from "../../../globalServices.js";
4
4
  import SocialMailContext from "../../model/SocialMailContext.js";
5
- import { cacheFor } from "../../../common/cacheFor.js";
5
+ import {ICacheContainer, ObjectCache, cacheFor } from "../../../common/cacheFor.js";
6
6
  import BaseStorage from "../../storage/BaseStorage.js";
7
7
  import AppFile from "../../model/entities/AppFile.js";
8
8
  import SnapshotService from "./SnapshotService.js";
@@ -12,10 +12,13 @@ import TempFileService from "../../storage/TempFileService.js";
12
12
  import Content from "@entity-access/server-pages/dist/Content.js";
13
13
  import EntityAccessError from "@entity-access/entity-access/dist/common/EntityAccessError.js";
14
14
 
15
+
15
16
  const empty = new WebSiteFolder();
16
17
 
17
18
  @RegisterSingleton
18
- export default class WebSiteService {
19
+ export default class WebSiteService implements ICacheContainer<WebSiteService> {
20
+
21
+ cache: ObjectCache<WebSiteService>;
19
22
 
20
23
  @Inject
21
24
  private storage: BaseStorage;