@social-mail/social-mail-web-server 1.7.539 → 1.7.541

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 (36) hide show
  1. package/dist/common/Hashtags.js +1 -1
  2. package/dist/common/Hashtags.js.map +1 -1
  3. package/dist/server/model/events/EmailEngagementEvents.js +1 -1
  4. package/dist/server/model/events/EmailEngagementEvents.js.map +1 -1
  5. package/dist/server/model/events/EmailEvents.d.ts.map +1 -1
  6. package/dist/server/model/events/EmailEvents.js +13 -0
  7. package/dist/server/model/events/EmailEvents.js.map +1 -1
  8. package/dist/server/model/events/EmailTagEvents.js +1 -1
  9. package/dist/server/model/events/EmailTagEvents.js.map +1 -1
  10. package/dist/server/model/events/TagEvents.js +1 -1
  11. package/dist/server/model/events/TagEvents.js.map +1 -1
  12. package/dist/server/model/events/TextDocumentEvents.js +1 -1
  13. package/dist/server/model/events/TextDocumentEvents.js.map +1 -1
  14. package/dist/server/model/events/ThreadParticipantEvents.js +1 -1
  15. package/dist/server/model/events/ThreadParticipantEvents.js.map +1 -1
  16. package/dist/server/seed/ui/seed-ui.js +1 -1
  17. package/dist/server/smtp/services/EmailReferenceService.d.ts.map +1 -1
  18. package/dist/server/smtp/services/EmailReferenceService.js.map +1 -1
  19. package/dist/server/workflows/repair/counts/RepairEmailCountsWorkflow.js +1 -1
  20. package/dist/server/workflows/repair/counts/RepairEmailCountsWorkflow.js.map +1 -1
  21. package/dist/server/workflows/repair/tags/RepairEmailTagsWorkflow.d.ts.map +1 -1
  22. package/dist/server/workflows/repair/tags/RepairEmailTagsWorkflow.js +11 -3
  23. package/dist/server/workflows/repair/tags/RepairEmailTagsWorkflow.js.map +1 -1
  24. package/dist/tsconfig.tsbuildinfo +1 -1
  25. package/package.json +1 -1
  26. package/src/common/Hashtags.ts +1 -1
  27. package/src/server/model/events/EmailEngagementEvents.ts +1 -1
  28. package/src/server/model/events/EmailEvents.ts +16 -0
  29. package/src/server/model/events/EmailTagEvents.ts +1 -1
  30. package/src/server/model/events/TagEvents.ts +1 -1
  31. package/src/server/model/events/TextDocumentEvents.ts +1 -1
  32. package/src/server/model/events/ThreadParticipantEvents.ts +1 -1
  33. package/src/server/seed/ui/seed-ui.ts +1 -1
  34. package/src/server/smtp/services/EmailReferenceService.ts +0 -1
  35. package/src/server/workflows/repair/counts/RepairEmailCountsWorkflow.ts +1 -1
  36. package/src/server/workflows/repair/tags/RepairEmailTagsWorkflow.ts +10 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@social-mail/social-mail-web-server",
3
- "version": "1.7.539",
3
+ "version": "1.7.541",
4
4
  "description": "## Phase 1",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  import { tokenizeRegex } from "../protocols/core/tokenizer.js";
2
2
 
3
- const tags = /((?<=\s)|^)(#\p{L}[\p{L}\d\-_\/]{2,200})/gmiu;
3
+ const tags = /((?<=[\s,\.;])|^)(#\p{L}[\p{L}\d\-_\/]{2,200})/gmiu;
4
4
 
5
5
  export default class Hashtags {
6
6
 
@@ -14,7 +14,7 @@ export default class EmailEngagementEvents extends AuthenticatedEvents<EmailEnga
14
14
  }
15
15
  const { userID } = sessionUser;
16
16
  return query.where({ userID }, (p) => (x) =>
17
- x.email.mailboxContactEvents.some((m) =>
17
+ x.email.threadContacts.some((m) =>
18
18
  m.mailbox.userMailboxes.some((mu) => mu.userID === p.userID)
19
19
  || m.mailbox.domain.hostedDomain.domainUsers.some((du) => du.userID === p.userID && du.isAdmin === true)
20
20
  )
@@ -278,6 +278,22 @@ export default class EmailEvents extends AuthenticatedEvents<Email> {
278
278
  await this.db.channelEmails.where(entity, (p) => (x) => x.emailID === p.emailID && x.mailbox.isChannel === true)
279
279
  .update(entity, (p) => (x) => ({ datePublished: Sql.cast.asDateTime(p.dateSent) as any }));
280
280
  break;
281
+ case "deleted":
282
+ await this.db.channelEmails.where(entity, (p) => (x) => x.emailID === p.emailID && x.mailbox.isChannel === true)
283
+ .update(entity, (p) => (x) => ({ datePublished: null }));
284
+
285
+ // subtract tag counts...
286
+ await this.db.mailboxTags.where(entity, (p) => (x) => x.tag.emailTags.some((e) => e.emailID === p.emailID))
287
+ .update(void 0, (p) => (x) => ({
288
+ count: Sql.math.max(0, x.count -1 )
289
+ }));
290
+
291
+ await this.db.mailboxContactTags.where(entity, (p) => (x) => x.tag.emailTags.some((e) => e.emailID === p.emailID))
292
+ .update(void 0, (p) => (x) => ({
293
+ count: Sql.math.max(0, x.count -1 )
294
+ }));
295
+
296
+ break;
281
297
  default:
282
298
  await this.db.channelEmails.where(entity, (p) => (x) => x.emailID === p.emailID && x.mailbox.isChannel === true)
283
299
  .update(void 0, (p) => (x) => ({ datePublished: Sql.cast.asDateTime(null) as any }));
@@ -13,7 +13,7 @@ export default class EmailTagEvents extends AuthenticatedEvents<EmailTag> {
13
13
  }
14
14
  const { userID } = this.sessionUser;
15
15
  return query.where({ userID }, (p) => (x) =>
16
- x.email.mailboxContactEvents.some((m) =>
16
+ x.email.threadContacts.some((m) =>
17
17
  m.mailbox.userMailboxes.some((mu) => mu.userID === p.userID)
18
18
  || m.mailbox.domain.hostedDomain.domainUsers.some((du) => du.userID === p.userID && du.isAdmin === true)
19
19
  )
@@ -23,7 +23,7 @@ export default class TagEvents extends AuthenticatedEvents<Tag> {
23
23
  const { userID } = this.sessionUser;
24
24
  return query.where({ userID }, (p) => (x) =>
25
25
  x.emailTags.some((et) =>
26
- et.email.mailboxContactEvents.some((m) =>
26
+ et.email.threadContacts.some((m) =>
27
27
  m.mailbox.userMailboxes.some((mu) => mu.userID === p.userID)
28
28
  || m.mailbox.domain.hostedDomain.domainUsers.some((du) => du.userID === p.userID && du.isAdmin === true)
29
29
  )
@@ -22,7 +22,7 @@ export default class TextDocumentEvents extends AuthenticatedEvents<TextDocument
22
22
  || t.mailbox.userMailboxes.some((u) => u.userID === p.userID)
23
23
  || t.mailbox.domain.hostedDomain.domainUsers.some((u) => u.userID === p.userID))
24
24
  ||
25
- af.email.mailboxContactEvents.some((m) =>
25
+ af.email.threadContacts.some((m) =>
26
26
  m.mailbox.userMailboxes.some((mu) => mu.userID === p.userID)
27
27
  || m.mailbox.domain.hostedDomain.domainUsers.some((du) => du.userID === p.userID && du.isAdmin === true)
28
28
  )
@@ -14,7 +14,7 @@ export default class ThreadParticipantEvents extends AuthenticatedEvents<ThreadP
14
14
  }
15
15
  const { userID } = this.sessionUser;
16
16
  return query.where({ userID }, (p) => (x) =>
17
- x.email.mailboxContactEvents.some((m) =>
17
+ x.email.threadContacts.some((m) =>
18
18
  m.mailbox.userMailboxes.some((mu) => mu.userID === p.userID)
19
19
  || m.mailbox.domain.hostedDomain.domainUsers.some((du) => du.userID === p.userID && du.isAdmin === true)
20
20
  )
@@ -5,7 +5,7 @@ export default async function seedUI(config: DBConfig) {
5
5
  await config.saveVersion(UIPackageConfig, {
6
6
  package: "@social-mail/social-mail-client",
7
7
  view: "dist/web/AppIndex",
8
- version: "1.8.111"
8
+ version: "1.8.115"
9
9
  });
10
10
 
11
11
  await config.saveVersion(WebComponentsPackageConfig, {
@@ -13,7 +13,6 @@ import EngagementService from "./EngagementService.js";
13
13
  // import PostReceiveWorkflow from "../../workflows/post-receive/PostReceiveWorkflow.js";
14
14
  import Hashtags from "../../../common/Hashtags.js";
15
15
  import TagService from "../../services/tags/TagService.js";
16
- import EmailTag from "../../model/entities/EmailTag.js";
17
16
  import ChangeEntry from "@entity-access/entity-access/dist/model/changes/ChangeEntry.js";
18
17
 
19
18
  export type IMailboxThreadInfo = Partial<MailboxContact> & {
@@ -56,7 +56,7 @@ export default class RepairEmailCountsWorkflow extends Workflow<{ mailboxID? }>
56
56
  const q = db.emails
57
57
  .where({ start, mailboxID }, (p) => (x) => x.emailID > p.start
58
58
  && x.threadID === null
59
- && x.mailboxContactEvents.some((t) => t.mailboxID === p.mailboxID)
59
+ && x.threadContacts.some((t) => t.mailboxID === p.mailboxID)
60
60
  && x.lastReplyID === null
61
61
  );
62
62
  const list = await q
@@ -108,7 +108,9 @@ export default class RepairEmailTagsWorkflow extends Workflow<{ mailboxID? }> {
108
108
  tagID: x.tagID,
109
109
  count: Sql.coll.sum(
110
110
  x.emailTags.filter((e) =>
111
- e.email.threadContacts.some((m) =>
111
+ e.email.status !== "draft"
112
+ && e.email.status !== "deleted"
113
+ && e.email.threadContacts.some((m) =>
112
114
  m.mailboxID === p.mailboxID
113
115
  && m.emailAddressID === p.emailAddressID
114
116
  )
@@ -125,6 +127,9 @@ export default class RepairEmailTagsWorkflow extends Workflow<{ mailboxID? }> {
125
127
  && x.emailTags.some((t) => t.tagID === p.tagID)
126
128
  ).orderByDescending(void 0, (p) => (x) => x.dateCreated).first();
127
129
 
130
+ if (!last) {
131
+ continue;
132
+ }
128
133
  const dateUpdated = last.dateCreated;
129
134
 
130
135
  await db.mailboxContactTags.statements.upsert({ emailAddressID, mailboxID, tagID, count, dateUpdated },
@@ -173,9 +178,12 @@ export default class RepairEmailTagsWorkflow extends Workflow<{ mailboxID? }> {
173
178
 
174
179
  // get last updated...
175
180
  const last = await db.emails.where({ tagID, mailboxID}, (p) => (x) =>
176
- x.mailboxContactEvents.some((m) => m.mailboxID === p.mailboxID)
181
+ x.threadContacts.some((m) => m.mailboxID === p.mailboxID)
177
182
  && x.emailTags.some((t) => t.tagID === p.tagID)
178
183
  ).orderByDescending(void 0, (p) => (x) => x.dateCreated).first();
184
+ if (!last) {
185
+ continue;
186
+ }
179
187
 
180
188
  const dateUpdated = last.dateCreated;
181
189