@social-mail/social-mail-web-server 1.8.455 → 1.8.457
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/server/model/SocialMailContext.d.ts +2 -4
- package/dist/server/model/SocialMailContext.d.ts.map +1 -1
- package/dist/server/model/SocialMailContext.js +2 -4
- package/dist/server/model/SocialMailContext.js.map +1 -1
- package/dist/server/model/SocialMailContextEvents.d.ts.map +1 -1
- package/dist/server/model/SocialMailContextEvents.js +3 -6
- package/dist/server/model/SocialMailContextEvents.js.map +1 -1
- package/dist/server/model/entities/Email.d.ts +2 -2
- package/dist/server/model/entities/Email.d.ts.map +1 -1
- package/dist/server/model/entities/EmailText.d.ts +7 -0
- package/dist/server/model/entities/EmailText.d.ts.map +1 -0
- package/dist/server/model/entities/{SearchTokenEmail.js → EmailText.js} +13 -23
- package/dist/server/model/entities/EmailText.js.map +1 -0
- package/dist/server/model/events/EmailTextEvents.d.ts +5 -0
- package/dist/server/model/events/EmailTextEvents.d.ts.map +1 -0
- package/dist/server/model/events/EmailTextEvents.js +4 -0
- package/dist/server/model/events/EmailTextEvents.js.map +1 -0
- package/dist/server/seed/ui/seed-ui.js +1 -1
- package/dist/server/services/emails/IndexEmailService.d.ts +1 -4
- package/dist/server/services/emails/IndexEmailService.d.ts.map +1 -1
- package/dist/server/services/emails/IndexEmailService.js +9 -29
- package/dist/server/services/emails/IndexEmailService.js.map +1 -1
- package/dist/server/workflows/SocialWorkflowContext.js +2 -2
- package/dist/server/workflows/SocialWorkflowContext.js.map +1 -1
- package/dist/server/workflows/daily/DailyWorkflow.js +2 -2
- package/dist/server/workflows/daily/DailyWorkflow.js.map +1 -1
- package/dist/server/workflows/email/index/{IndexEmailContentWorkflow.d.ts → IndexEmailTextContentWorkflow.d.ts} +3 -2
- package/dist/server/workflows/email/index/IndexEmailTextContentWorkflow.d.ts.map +1 -0
- package/dist/server/workflows/email/index/{IndexEmailContentWorkflow.js → IndexEmailTextContentWorkflow.js} +8 -8
- package/dist/server/workflows/email/index/IndexEmailTextContentWorkflow.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/server/model/SocialMailContext.ts +3 -6
- package/src/server/model/SocialMailContextEvents.ts +3 -7
- package/src/server/model/entities/Email.ts +2 -2
- package/src/server/model/entities/EmailText.ts +20 -0
- package/src/server/model/events/EmailTextEvents.ts +6 -0
- package/src/server/seed/ui/seed-ui.ts +1 -1
- package/src/server/services/emails/IndexEmailService.ts +12 -29
- package/src/server/workflows/SocialWorkflowContext.ts +2 -2
- package/src/server/workflows/daily/DailyWorkflow.ts +2 -2
- package/src/server/workflows/email/index/{IndexEmailContentWorkflow.ts → IndexEmailTextContentWorkflow.ts} +5 -5
- package/dist/server/model/entities/SearchToken.d.ts +0 -8
- package/dist/server/model/entities/SearchToken.d.ts.map +0 -1
- package/dist/server/model/entities/SearchToken.js +0 -37
- package/dist/server/model/entities/SearchToken.js.map +0 -1
- package/dist/server/model/entities/SearchTokenEmail.d.ts +0 -12
- package/dist/server/model/entities/SearchTokenEmail.d.ts.map +0 -1
- package/dist/server/model/entities/SearchTokenEmail.js.map +0 -1
- package/dist/server/model/events/SearchTokenEmailEvents.d.ts +0 -5
- package/dist/server/model/events/SearchTokenEmailEvents.d.ts.map +0 -1
- package/dist/server/model/events/SearchTokenEmailEvents.js +0 -4
- package/dist/server/model/events/SearchTokenEmailEvents.js.map +0 -1
- package/dist/server/model/events/SearchTokenEvents.d.ts +0 -5
- package/dist/server/model/events/SearchTokenEvents.d.ts.map +0 -1
- package/dist/server/model/events/SearchTokenEvents.js +0 -4
- package/dist/server/model/events/SearchTokenEvents.js.map +0 -1
- package/dist/server/services/search/SearchTokenService.d.ts +0 -7
- package/dist/server/services/search/SearchTokenService.d.ts.map +0 -1
- package/dist/server/services/search/SearchTokenService.js +0 -107
- package/dist/server/services/search/SearchTokenService.js.map +0 -1
- package/dist/server/workflows/email/index/IndexEmailContentWorkflow.d.ts.map +0 -1
- package/dist/server/workflows/email/index/IndexEmailContentWorkflow.js.map +0 -1
- package/src/server/model/entities/SearchToken.ts +0 -26
- package/src/server/model/entities/SearchTokenEmail.ts +0 -34
- package/src/server/model/events/SearchTokenEmailEvents.ts +0 -6
- package/src/server/model/events/SearchTokenEvents.ts +0 -6
- package/src/server/services/search/SearchTokenService.ts +0 -33
package/package.json
CHANGED
|
@@ -80,8 +80,7 @@ import UserGroupMember from "./entities/UserGroupMember.js";
|
|
|
80
80
|
import WebSiteTag from "./entities/WebSiteTag.js";
|
|
81
81
|
import AppDbContext from "@entity-access/server-pages/dist/core/AppDbContext.js";
|
|
82
82
|
import AppPassword from "./entities/AppPassword.js";
|
|
83
|
-
import
|
|
84
|
-
import SearchTokenEmail from "./entities/SearchTokenEmail.js";
|
|
83
|
+
import EmailText from "./entities/EmailText.js";
|
|
85
84
|
|
|
86
85
|
@RegisterScoped
|
|
87
86
|
export default class SocialMailContext extends AppDbContext {
|
|
@@ -152,6 +151,8 @@ export default class SocialMailContext extends AppDbContext {
|
|
|
152
151
|
|
|
153
152
|
public emailTemplates = this.model.register(EmailTemplate);
|
|
154
153
|
|
|
154
|
+
public emailTexts = this.model.register(EmailText);
|
|
155
|
+
|
|
155
156
|
public mailboxes = this.model.register(Mailbox);
|
|
156
157
|
|
|
157
158
|
public channelEmails = this.model.register(ChannelEmail);
|
|
@@ -180,10 +181,6 @@ export default class SocialMailContext extends AppDbContext {
|
|
|
180
181
|
|
|
181
182
|
public subscriberActivities = this.model.register(SubscriberActivity);
|
|
182
183
|
|
|
183
|
-
public searchTokens = this.model.register(SearchToken);
|
|
184
|
-
|
|
185
|
-
public searchTokenEmails = this.model.register(SearchTokenEmail);
|
|
186
|
-
|
|
187
184
|
public searchWords = this.model.register(SearchWord);
|
|
188
185
|
|
|
189
186
|
public searchWordIndexes = this.model.register(SearchWordIndex);
|
|
@@ -146,10 +146,8 @@ import WebSiteTag from "./entities/WebSiteTag.js";
|
|
|
146
146
|
import WebSiteTagEvents from "./events/WebSiteTagEvents.js";
|
|
147
147
|
import AppPassword from "./entities/AppPassword.js";
|
|
148
148
|
import AppPasswordEvents from "./events/AppPasswordEvents.js";
|
|
149
|
-
import
|
|
150
|
-
import
|
|
151
|
-
import SearchTokenEmail from "./entities/SearchTokenEmail.js";
|
|
152
|
-
import SearchTokenEmailEvents from "./events/SearchTokenEmailEvents.js";
|
|
149
|
+
import EmailText from "./entities/EmailText.js";
|
|
150
|
+
import EmailTextEvents from "./events/EmailTextEvents.js";
|
|
153
151
|
|
|
154
152
|
|
|
155
153
|
@RegisterSingleton
|
|
@@ -188,6 +186,7 @@ export default class SocialMailContextEvents extends ContextEvents {
|
|
|
188
186
|
this.register(EmailRecipient, EmailRecipientEvents);
|
|
189
187
|
this.register(EmailTag, EmailTagEvents);
|
|
190
188
|
this.register(EmailTemplate, EmailTemplateEvents);
|
|
189
|
+
this.register(EmailText, EmailTextEvents);
|
|
191
190
|
this.register(FileContent, FileContentEvents);
|
|
192
191
|
this.register(Mailbox, MailboxEvents);
|
|
193
192
|
this.register(MailboxSyncTarget, MailboxSyncTargetEvents);
|
|
@@ -200,9 +199,6 @@ export default class SocialMailContextEvents extends ContextEvents {
|
|
|
200
199
|
this.register(ChannelEmail, MailboxEmailEvents);
|
|
201
200
|
this.register(NameToken, NameTokenEvents);
|
|
202
201
|
|
|
203
|
-
this.register(SearchToken, SearchTokenEvents);
|
|
204
|
-
this.register(SearchTokenEmail, SearchTokenEmailEvents);
|
|
205
|
-
|
|
206
202
|
this.register(StoreItem, StoreItemEvents);
|
|
207
203
|
this.register(StoreItemPrice, StoreItemPriceEvents);
|
|
208
204
|
this.register(StoreAccount, StoreAccountEvents);
|
|
@@ -18,7 +18,7 @@ import Sql from "@entity-access/entity-access/dist/sql/Sql.js";
|
|
|
18
18
|
import { apiPath } from "../../../common/globalEnv.js";
|
|
19
19
|
import type MailboxContactEvent from "./MailboxContactEvent.js";
|
|
20
20
|
import type ThreadParticipant from "./ThreadParticipant.js";
|
|
21
|
-
import type
|
|
21
|
+
import type EmailText from "./EmailText.js";
|
|
22
22
|
|
|
23
23
|
const emailStatuses = [ "queued", "received", "draft", "published", "pending-approval", "approved", "scheduled", "sent", "sent-failed", "deleted", "closed"] as const;
|
|
24
24
|
export type emailStatusType = typeof emailStatuses[number];
|
|
@@ -323,7 +323,7 @@ export class Email {
|
|
|
323
323
|
mailboxContactEvents: MailboxContactEvent[];
|
|
324
324
|
threadParticipants: ThreadParticipant[];
|
|
325
325
|
channelEmails: ChannelEmail[];
|
|
326
|
-
|
|
326
|
+
emailText: EmailText;
|
|
327
327
|
}
|
|
328
328
|
|
|
329
329
|
@Table("EmailLogs")
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import Column from "@entity-access/entity-access/dist/decorators/Column.js";
|
|
2
|
+
import { RelateToOne } 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
|
+
|
|
6
|
+
@Table("EmailTexts")
|
|
7
|
+
export default class EmailText {
|
|
8
|
+
|
|
9
|
+
@Column( { dataType: "BigInt", key: true })
|
|
10
|
+
@RelateToOne(Email, {
|
|
11
|
+
property: (x) => x.email,
|
|
12
|
+
inverseProperty: (x) => x.emailText
|
|
13
|
+
})
|
|
14
|
+
emailID: number;
|
|
15
|
+
|
|
16
|
+
@Column({ dataType: "Char" })
|
|
17
|
+
text: string;
|
|
18
|
+
|
|
19
|
+
email: Email;
|
|
20
|
+
}
|
|
@@ -17,7 +17,7 @@ export default async function seedUI(config: DBConfig) {
|
|
|
17
17
|
await config.saveVersion(UIPackageConfig, {
|
|
18
18
|
package: "@social-mail/social-mail-client",
|
|
19
19
|
view: "dist/web/AppIndex",
|
|
20
|
-
version: "1.9.
|
|
20
|
+
version: "1.9.92"
|
|
21
21
|
});
|
|
22
22
|
|
|
23
23
|
await config.saveVersion(WebComponentsPackageConfig, {
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import Inject, { RegisterScoped } from "@entity-access/entity-access/dist/di/di.js";
|
|
2
2
|
import SocialMailContext from "../../model/SocialMailContext.js";
|
|
3
3
|
import { Email } from "../../model/entities/Email.js";
|
|
4
|
-
import SearchTokenService from "../search/SearchTokenService.js";
|
|
5
|
-
import { tokenKindType } from "../../model/entities/SearchTokenEmail.js";
|
|
6
4
|
import TextExtractorService from "../extract/TextExtractorService.js";
|
|
7
5
|
import TempFileService from "../../storage/TempFileService.js";
|
|
8
6
|
|
|
@@ -12,22 +10,21 @@ export default class IndexEmailService {
|
|
|
12
10
|
@Inject
|
|
13
11
|
db: SocialMailContext;
|
|
14
12
|
|
|
15
|
-
@Inject
|
|
16
|
-
sts: SearchTokenService;
|
|
17
|
-
|
|
18
13
|
@Inject
|
|
19
14
|
te: TextExtractorService;
|
|
20
15
|
|
|
21
16
|
@Inject
|
|
22
17
|
tempFileService: TempFileService;
|
|
23
18
|
|
|
24
|
-
async indexEmail({ emailID, textBody }: Partial<Email>) {
|
|
19
|
+
async indexEmail({ emailID, subject, textBody }: Partial<Email>) {
|
|
25
20
|
|
|
26
21
|
// delete all search email tokens if exists
|
|
27
22
|
const { db } = this;
|
|
28
23
|
|
|
24
|
+
let text = subject || "";
|
|
25
|
+
|
|
29
26
|
if(textBody) {
|
|
30
|
-
|
|
27
|
+
text += " " + textBody;
|
|
31
28
|
}
|
|
32
29
|
|
|
33
30
|
// for all attachments...
|
|
@@ -37,34 +34,20 @@ export default class IndexEmailService {
|
|
|
37
34
|
const txt = await db.textDocuments
|
|
38
35
|
.statements.select({}, { textDocumentID: att.fileContentID});
|
|
39
36
|
if (txt) {
|
|
40
|
-
|
|
37
|
+
text += " " + txt.searchable;
|
|
41
38
|
continue;
|
|
42
39
|
}
|
|
43
40
|
const tf = await this.tempFileService.downloadAppFile(att);
|
|
44
41
|
const textFile = await this.te.extract(tf);
|
|
45
|
-
|
|
46
|
-
if (!line) {
|
|
47
|
-
continue;
|
|
48
|
-
}
|
|
49
|
-
await this.insertText(emailID, line, "attachment");
|
|
50
|
-
}
|
|
42
|
+
text += " " + await textFile.readAsText();
|
|
51
43
|
}
|
|
52
|
-
}
|
|
53
44
|
|
|
45
|
+
text = text.replace(/\s+/g, " ").trim().toLowerCase();
|
|
54
46
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
}
|
|
60
|
-
for (const word of words) {
|
|
61
|
-
const w = word.trim().toLowerCase();
|
|
62
|
-
if (!w) {
|
|
63
|
-
continue;
|
|
64
|
-
}
|
|
65
|
-
const token = await this.sts.getToken(w);
|
|
66
|
-
const ste = { tokenID: token.tokenID, emailID, tokenKind };
|
|
67
|
-
await this.db.searchTokenEmails.statements.selectOrInsert(ste, ste);
|
|
68
|
-
}
|
|
47
|
+
// deduplication
|
|
48
|
+
// text = Array.from(new Set(text.split(" "))).join(" ");
|
|
49
|
+
|
|
50
|
+
await db.emailTexts.statements.selectOrInsert({ text, emailID }, { emailID });
|
|
69
51
|
}
|
|
52
|
+
|
|
70
53
|
}
|
|
@@ -55,7 +55,7 @@ import SendLibraryContentWorkflow from "./channel/library/SendLibraryContentWork
|
|
|
55
55
|
import CreateChannelWorkflow from "./channel/creation/CreateChannelWorkflow.js";
|
|
56
56
|
import { AppWorkflowContext } from "./AppWorkflowContext.js";
|
|
57
57
|
import DeleteFileHistoryWorkflow from "./files/DeleteFileHistoryWorkflow.js";
|
|
58
|
-
import
|
|
58
|
+
import IndexEmailTextContentWorkflow from "./email/index/IndexEmailTextContentWorkflow.js";
|
|
59
59
|
import IndexEmailAddressWorkflow from "./email/index/IndexEmailAddressWorkflow.js";
|
|
60
60
|
|
|
61
61
|
@RegisterSingleton
|
|
@@ -123,7 +123,7 @@ export default class SocialWorkflowContext extends AppWorkflowContext {
|
|
|
123
123
|
this.register(SendLibraryContentWorkflow);
|
|
124
124
|
this.register(CreateChannelWorkflow);
|
|
125
125
|
|
|
126
|
-
this.register(
|
|
126
|
+
this.register(IndexEmailTextContentWorkflow);
|
|
127
127
|
this.register(IndexEmailAddressWorkflow);
|
|
128
128
|
|
|
129
129
|
// start processing...
|
|
@@ -13,7 +13,7 @@ import PendingPostReceiveWorkflow from "../pending/PendingPostReceiveWorkflow.js
|
|
|
13
13
|
import PendingReferencesWorkflow from "../pending/PendingReferencesWorkflow.js";
|
|
14
14
|
import MessagingService from "../../services/message-events/MessagingService.js";
|
|
15
15
|
import FetchCheckoutResultWorkflow from "../store/FetchCheckoutResultWorkflow.js";
|
|
16
|
-
import
|
|
16
|
+
import IndexEmailTextContentWorkflow from "../email/index/IndexEmailTextContentWorkflow.js";
|
|
17
17
|
import IndexEmailAddressWorkflow from "../email/index/IndexEmailAddressWorkflow.js";
|
|
18
18
|
|
|
19
19
|
export default class DailyWorkflow extends Workflow<any,any> {
|
|
@@ -57,7 +57,7 @@ export default class DailyWorkflow extends Workflow<any,any> {
|
|
|
57
57
|
|
|
58
58
|
await PendingPostReceiveWorkflow.queue(this.context);
|
|
59
59
|
await PendingReferencesWorkflow.queue(this.context);
|
|
60
|
-
await
|
|
60
|
+
await IndexEmailTextContentWorkflow.queue(this.context);
|
|
61
61
|
await IndexEmailAddressWorkflow.queue(this.context);
|
|
62
62
|
|
|
63
63
|
const all = await db.mailboxSyncTargets
|
|
@@ -8,13 +8,13 @@ import TimeSpan from "@entity-access/entity-access/dist/types/TimeSpan.js";
|
|
|
8
8
|
import { globalEnv } from "../../../../common/globalEnv.js";
|
|
9
9
|
import AsyncTaskManager from "../../../../common/AsyncTaskManager.js";
|
|
10
10
|
|
|
11
|
-
export default class
|
|
11
|
+
export default class IndexEmailTextContentWorkflow extends Workflow {
|
|
12
12
|
|
|
13
13
|
static taskGroup = "batch";
|
|
14
14
|
|
|
15
15
|
static queue(context: WorkflowContext) {
|
|
16
|
-
return context.queue(
|
|
17
|
-
id: `index-email`,
|
|
16
|
+
return context.queue(IndexEmailTextContentWorkflow, "", {
|
|
17
|
+
id: `index-email-content`,
|
|
18
18
|
});
|
|
19
19
|
}
|
|
20
20
|
|
|
@@ -33,7 +33,7 @@ export default class IndexEmailContentWorkflow extends Workflow {
|
|
|
33
33
|
const pending = await db.emails.where(void 0, (p) => (x) => x.searchIndexed === false
|
|
34
34
|
&& x.statePostReceiveInvoked === true)
|
|
35
35
|
.orderByDescending(void 0, (p) => (x) => x.emailID)
|
|
36
|
-
.map(void 0, (p) => (x) => ({ emailID: x.emailID, textBody: x.textBody}))
|
|
36
|
+
.map(void 0, (p) => (x) => ({ emailID: x.emailID, subject: x.subject, textBody: x.textBody}))
|
|
37
37
|
.limit(200)
|
|
38
38
|
.toArray();
|
|
39
39
|
|
|
@@ -57,7 +57,7 @@ export default class IndexEmailContentWorkflow extends Workflow {
|
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
-
async indexEmail(email: { emailID: number; textBody: string; }) {
|
|
60
|
+
async indexEmail(email: { emailID: number; subject: string, textBody: string; }) {
|
|
61
61
|
using scope = ServiceProvider.createScope(this.context);
|
|
62
62
|
const db = scope.resolve(SocialMailContext);
|
|
63
63
|
const indexService = scope.resolve(IndexEmailService);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SearchToken.d.ts","sourceRoot":"","sources":["../../../../src/server/model/entities/SearchToken.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAC;AAS1D,MAAM,CAAC,OAAO,OAAO,WAAW;IAG5B,OAAO,EAAE,MAAM,CAAC;IAGhB,IAAI,EAAE,MAAM,CAAC;IAGb,UAAU,EAAE,OAAO,CAAC;IAEpB,WAAW,EAAE,gBAAgB,EAAE,CAAC;CAEnC"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
-
};
|
|
10
|
-
import Column from "@entity-access/entity-access/dist/decorators/Column.js";
|
|
11
|
-
import Index from "@entity-access/entity-access/dist/decorators/Index.js";
|
|
12
|
-
import Table from "@entity-access/entity-access/dist/decorators/Table.js";
|
|
13
|
-
let SearchToken = class SearchToken {
|
|
14
|
-
};
|
|
15
|
-
__decorate([
|
|
16
|
-
Column({ dataType: "BigInt", key: true, generated: "identity" }),
|
|
17
|
-
__metadata("design:type", Number)
|
|
18
|
-
], SearchToken.prototype, "tokenID", void 0);
|
|
19
|
-
__decorate([
|
|
20
|
-
Column({ dataType: "Char", length: 400, nullable: false }),
|
|
21
|
-
__metadata("design:type", String)
|
|
22
|
-
], SearchToken.prototype, "word", void 0);
|
|
23
|
-
__decorate([
|
|
24
|
-
Column({ dataType: "Boolean", default: () => false }),
|
|
25
|
-
__metadata("design:type", Boolean)
|
|
26
|
-
], SearchToken.prototype, "doNotIndex", void 0);
|
|
27
|
-
SearchToken = __decorate([
|
|
28
|
-
Table("SearchTokens"),
|
|
29
|
-
Index({
|
|
30
|
-
name: "UX_SearchTokens_Word",
|
|
31
|
-
columns: [{ name: (x) => x.word, descending: false, operatorClass: "varchar_pattern" }],
|
|
32
|
-
include: [(x) => x.doNotIndex],
|
|
33
|
-
unique: true
|
|
34
|
-
})
|
|
35
|
-
], SearchToken);
|
|
36
|
-
export default SearchToken;
|
|
37
|
-
//# sourceMappingURL=SearchToken.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SearchToken.js","sourceRoot":"","sources":["../../../../src/server/model/entities/SearchToken.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,MAAM,MAAM,wDAAwD,CAAC;AAC5E,OAAO,KAAK,MAAM,uDAAuD,CAAC;AAC1E,OAAO,KAAK,MAAM,uDAAuD,CAAC;AAU3D,IAAM,WAAW,GAAjB,MAAM,WAAW;CAa/B,CAAA;AAVG;IADC,MAAM,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAC,CAAC;;4CAChD;AAGhB;IADC,MAAM,CAAC,EAAE,QAAQ,EAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;;yCAC7C;AAGb;IADC,MAAM,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC;;+CAClC;AATH,WAAW;IAP/B,KAAK,CAAC,cAAc,CAAC;IACrB,KAAK,CAAC;QACH,IAAI,EAAE,sBAAsB;QAC5B,OAAO,EAAE,CAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,CAAE;QACzF,OAAO,EAAE,CAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;QAC/B,MAAM,EAAE,IAAI;KACf,CAAC;GACmB,WAAW,CAa/B;eAboB,WAAW"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import SearchToken from "./SearchToken.js";
|
|
2
|
-
import { Email } from "./Email.js";
|
|
3
|
-
export declare const tokenKind: readonly ["body", "attachment"];
|
|
4
|
-
export type tokenKindType = typeof tokenKind[number];
|
|
5
|
-
export default class SearchTokenEmail {
|
|
6
|
-
tokenID: number;
|
|
7
|
-
tokenKind: tokenKindType;
|
|
8
|
-
emailID: number;
|
|
9
|
-
token: SearchToken;
|
|
10
|
-
email: Email;
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=SearchTokenEmail.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SearchTokenEmail.d.ts","sourceRoot":"","sources":["../../../../src/server/model/entities/SearchTokenEmail.ts"],"names":[],"mappings":"AAGA,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,eAAO,MAAM,SAAS,iCAAkC,CAAC;AACzD,MAAM,MAAM,aAAa,GAAG,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;AAGrD,MAAM,CAAC,OAAO,OAAO,gBAAgB;IAOjC,OAAO,EAAE,MAAM,CAAC;IAGhB,SAAS,EAAE,aAAa,CAAC;IAOzB,OAAO,EAAE,MAAM,CAAC;IAEhB,KAAK,EAAE,WAAW,CAAC;IAEnB,KAAK,EAAE,KAAK,CAAC;CAEhB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SearchTokenEmail.js","sourceRoot":"","sources":["../../../../src/server/model/entities/SearchTokenEmail.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,MAAM,MAAM,wDAAwD,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,wDAAwD,CAAC;AAClF,OAAO,KAAK,MAAM,uDAAuD,CAAC;AAC1E,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,YAAY,CAAU,CAAC;AAI1C,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;CAuBpC,CAAA;AAhBG;IALC,MAAM,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAC,CAAC;IACxC,QAAQ,CAAC,WAAW,EAAE;QACnB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK;QACxB,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW;KACxC,CAAC;;iDACc;AAGhB;IADC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;;mDAC3B;AAOzB;IALC,MAAM,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE;QACb,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK;QACxB,eAAe,EAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB;KAC/C,CAAC;;iDACc;AAjBC,gBAAgB;IADpC,KAAK,CAAC,mBAAmB,CAAC;GACN,gBAAgB,CAuBpC;eAvBoB,gBAAgB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SearchTokenEmailEvents.d.ts","sourceRoot":"","sources":["../../../../src/server/model/events/SearchTokenEmailEvents.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,iCAAiC,CAAC;AAC/D,OAAO,cAAc,MAAM,qBAAqB,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,sBAAuB,SAAQ,cAAc,CAAC,gBAAgB,CAAC;CAEnF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SearchTokenEmailEvents.js","sourceRoot":"","sources":["../../../../src/server/model/events/SearchTokenEmailEvents.ts"],"names":[],"mappings":"AACA,OAAO,cAAc,MAAM,qBAAqB,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,sBAAuB,SAAQ,cAAgC;CAEnF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SearchTokenEvents.d.ts","sourceRoot":"","sources":["../../../../src/server/model/events/SearchTokenEvents.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,4BAA4B,CAAC;AACrD,OAAO,cAAc,MAAM,qBAAqB,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,cAAc,CAAC,WAAW,CAAC;CAEzE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SearchTokenEvents.js","sourceRoot":"","sources":["../../../../src/server/model/events/SearchTokenEvents.ts"],"names":[],"mappings":"AACA,OAAO,cAAc,MAAM,qBAAqB,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,cAA2B;CAEzE"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { ICacheContainer, ObjectCache } from "../../../common/cacheFor.js";
|
|
2
|
-
export default class SearchTokenService implements ICacheContainer<SearchTokenService> {
|
|
3
|
-
cache: ObjectCache<SearchTokenService>;
|
|
4
|
-
getToken(word: string): Promise<import("../../model/entities/SearchToken.js").default>;
|
|
5
|
-
private getRegisteredToken;
|
|
6
|
-
}
|
|
7
|
-
//# sourceMappingURL=SearchTokenService.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SearchTokenService.d.ts","sourceRoot":"","sources":["../../../../src/server/services/search/SearchTokenService.ts"],"names":[],"mappings":"AAEA,OAAO,EAAY,eAAe,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAKrF,MAAM,CAAC,OAAO,OAAO,kBAAmB,YAAW,eAAe,CAAC,kBAAkB,CAAC;IAElF,KAAK,EAAE,WAAW,CAAC,kBAAkB,CAAC,CAAC;IAEjC,QAAQ,CAAC,IAAI,EAAE,MAAM;YASb,kBAAkB;CAYnC"}
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
-
};
|
|
10
|
-
var __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {
|
|
11
|
-
if (value !== null && value !== void 0) {
|
|
12
|
-
if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
|
|
13
|
-
var dispose, inner;
|
|
14
|
-
if (async) {
|
|
15
|
-
if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
|
|
16
|
-
dispose = value[Symbol.asyncDispose];
|
|
17
|
-
}
|
|
18
|
-
if (dispose === void 0) {
|
|
19
|
-
if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
|
|
20
|
-
dispose = value[Symbol.dispose];
|
|
21
|
-
if (async) inner = dispose;
|
|
22
|
-
}
|
|
23
|
-
if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
|
|
24
|
-
if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };
|
|
25
|
-
env.stack.push({ value: value, dispose: dispose, async: async });
|
|
26
|
-
}
|
|
27
|
-
else if (async) {
|
|
28
|
-
env.stack.push({ async: true });
|
|
29
|
-
}
|
|
30
|
-
return value;
|
|
31
|
-
};
|
|
32
|
-
var __disposeResources = (this && this.__disposeResources) || (function (SuppressedError) {
|
|
33
|
-
return function (env) {
|
|
34
|
-
function fail(e) {
|
|
35
|
-
env.error = env.hasError ? new SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
|
|
36
|
-
env.hasError = true;
|
|
37
|
-
}
|
|
38
|
-
var r, s = 0;
|
|
39
|
-
function next() {
|
|
40
|
-
while (r = env.stack.pop()) {
|
|
41
|
-
try {
|
|
42
|
-
if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
|
|
43
|
-
if (r.dispose) {
|
|
44
|
-
var result = r.dispose.call(r.value);
|
|
45
|
-
if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
|
|
46
|
-
}
|
|
47
|
-
else s |= 1;
|
|
48
|
-
}
|
|
49
|
-
catch (e) {
|
|
50
|
-
fail(e);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
|
|
54
|
-
if (env.hasError) throw env.error;
|
|
55
|
-
}
|
|
56
|
-
return next();
|
|
57
|
-
};
|
|
58
|
-
})(typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
|
|
59
|
-
var e = new Error(message);
|
|
60
|
-
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
61
|
-
});
|
|
62
|
-
import EntityAccessError from "@entity-access/entity-access/dist/common/EntityAccessError.js";
|
|
63
|
-
import { RegisterSingleton, ServiceProvider } from "@entity-access/entity-access/dist/di/di.js";
|
|
64
|
-
import { cacheFor } from "../../../common/cacheFor.js";
|
|
65
|
-
import SocialMailContext from "../../model/SocialMailContext.js";
|
|
66
|
-
import ReadOnlySocialMailContext from "../../model/ReadOnlySocialMailContext.js";
|
|
67
|
-
let SearchTokenService = class SearchTokenService {
|
|
68
|
-
async getToken(word) {
|
|
69
|
-
word = word.trim().toLowerCase();
|
|
70
|
-
if (!word) {
|
|
71
|
-
throw new EntityAccessError("Word cannot be empty");
|
|
72
|
-
}
|
|
73
|
-
return this.getRegisteredToken(word);
|
|
74
|
-
}
|
|
75
|
-
async getRegisteredToken(word) {
|
|
76
|
-
const env_1 = { stack: [], error: void 0, hasError: false };
|
|
77
|
-
try {
|
|
78
|
-
const scope = __addDisposableResource(env_1, ServiceProvider.createScope(this), false);
|
|
79
|
-
const replica = scope.resolve(ReadOnlySocialMailContext);
|
|
80
|
-
let existing = await replica.searchTokens.statements.select({}, { word });
|
|
81
|
-
if (existing) {
|
|
82
|
-
return existing;
|
|
83
|
-
}
|
|
84
|
-
const db = scope.resolve(SocialMailContext);
|
|
85
|
-
existing = await db.searchTokens.statements.selectOrInsert({ word }, { word });
|
|
86
|
-
return existing;
|
|
87
|
-
}
|
|
88
|
-
catch (e_1) {
|
|
89
|
-
env_1.error = e_1;
|
|
90
|
-
env_1.hasError = true;
|
|
91
|
-
}
|
|
92
|
-
finally {
|
|
93
|
-
__disposeResources(env_1);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
};
|
|
97
|
-
__decorate([
|
|
98
|
-
cacheFor(),
|
|
99
|
-
__metadata("design:type", Function),
|
|
100
|
-
__metadata("design:paramtypes", [String]),
|
|
101
|
-
__metadata("design:returntype", Promise)
|
|
102
|
-
], SearchTokenService.prototype, "getRegisteredToken", null);
|
|
103
|
-
SearchTokenService = __decorate([
|
|
104
|
-
RegisterSingleton
|
|
105
|
-
], SearchTokenService);
|
|
106
|
-
export default SearchTokenService;
|
|
107
|
-
//# sourceMappingURL=SearchTokenService.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SearchTokenService.js","sourceRoot":"","sources":["../../../../src/server/services/search/SearchTokenService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,iBAAiB,MAAM,+DAA+D,CAAC;AAC9F,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAChG,OAAO,EAAE,QAAQ,EAAgC,MAAM,6BAA6B,CAAC;AACrF,OAAO,iBAAiB,MAAM,kCAAkC,CAAC;AACjE,OAAO,yBAAyB,MAAM,0CAA0C,CAAC;AAGlE,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAInC,KAAK,CAAC,QAAQ,CAAC,IAAY;QACvB,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACjC,IAAK,CAAC,IAAI,EAAE,CAAC;YACT,MAAM,IAAI,iBAAiB,CAAC,sBAAsB,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAGa,AAAN,KAAK,CAAC,kBAAkB,CAAC,IAAY;;;YACzC,MAAM,KAAK,kCAAG,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,QAAA,CAAC;YAChD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;YACzD,IAAI,QAAQ,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1E,IAAI,QAAQ,EAAE,CAAC;gBACX,OAAO,QAAQ,CAAC;YACpB,CAAC;YACD,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;YAC5C,QAAQ,GAAG,MAAM,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/E,OAAO,QAAQ,CAAC;;;;;;;;;KACnB;CAEJ,CAAA;AAZiB;IADb,QAAQ,EAAE;;;;4DAWV;AAvBgB,kBAAkB;IADtC,iBAAiB;GACG,kBAAkB,CAyBtC;eAzBoB,kBAAkB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"IndexEmailContentWorkflow.d.ts","sourceRoot":"","sources":["../../../../../src/server/workflows/email/index/IndexEmailContentWorkflow.ts"],"names":[],"mappings":"AAEA,OAAO,QAA4B,MAAM,yDAAyD,CAAC;AACnG,OAAO,eAAe,MAAM,gEAAgE,CAAC;AAC7F,OAAO,iBAAiB,MAAM,qCAAqC,CAAC;AAMpE,MAAM,CAAC,OAAO,OAAO,yBAA0B,SAAQ,QAAQ;IAE3D,MAAM,CAAC,SAAS,SAAW;IAE3B,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,eAAe;IAM/B,GAAG;IAMH,KAAK,CACC,EAAE,CAAC,EAAE,iBAAiB;IAgC5B,UAAU,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;KAAE;CAajE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"IndexEmailContentWorkflow.js","sourceRoot":"","sources":["../../../../../src/server/workflows/email/index/IndexEmailContentWorkflow.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import Column from "@entity-access/entity-access/dist/decorators/Column.js";
|
|
2
|
-
import Index from "@entity-access/entity-access/dist/decorators/Index.js";
|
|
3
|
-
import Table from "@entity-access/entity-access/dist/decorators/Table.js";
|
|
4
|
-
import type SearchTokenEmail from "./SearchTokenEmail.js";
|
|
5
|
-
|
|
6
|
-
@Table("SearchTokens")
|
|
7
|
-
@Index({
|
|
8
|
-
name: "UX_SearchTokens_Word",
|
|
9
|
-
columns: [ { name: (x) => x.word, descending: false, operatorClass: "varchar_pattern" } ],
|
|
10
|
-
include: [ (x) => x.doNotIndex],
|
|
11
|
-
unique: true
|
|
12
|
-
})
|
|
13
|
-
export default class SearchToken {
|
|
14
|
-
|
|
15
|
-
@Column({ dataType: "BigInt", key: true, generated: "identity"})
|
|
16
|
-
tokenID: number;
|
|
17
|
-
|
|
18
|
-
@Column({ dataType:"Char", length: 400, nullable: false })
|
|
19
|
-
word: string;
|
|
20
|
-
|
|
21
|
-
@Column({ dataType: "Boolean", default: () => false })
|
|
22
|
-
doNotIndex: boolean;
|
|
23
|
-
|
|
24
|
-
tokenEmails: SearchTokenEmail[];
|
|
25
|
-
|
|
26
|
-
}
|
|
@@ -1,34 +0,0 @@
|
|
|
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 SearchToken from "./SearchToken.js";
|
|
5
|
-
import { Email } from "./Email.js";
|
|
6
|
-
|
|
7
|
-
export const tokenKind = ["body", "attachment"] as const;
|
|
8
|
-
export type tokenKindType = typeof tokenKind[number];
|
|
9
|
-
|
|
10
|
-
@Table("SearchTokenEmails")
|
|
11
|
-
export default class SearchTokenEmail {
|
|
12
|
-
|
|
13
|
-
@Column({ dataType: "BigInt", key: true})
|
|
14
|
-
@RelateTo(SearchToken, {
|
|
15
|
-
property: (x) => x.token,
|
|
16
|
-
inverseProperty: (x) => x.tokenEmails,
|
|
17
|
-
})
|
|
18
|
-
tokenID: number;
|
|
19
|
-
|
|
20
|
-
@Column({ dataType: "Char", key: true, length: 20 })
|
|
21
|
-
tokenKind: tokenKindType;
|
|
22
|
-
|
|
23
|
-
@Column({ dataType: "BigInt", key: true })
|
|
24
|
-
@RelateTo(Email, {
|
|
25
|
-
property: (x) => x.email,
|
|
26
|
-
inverseProperty: (x) => x.searchTokenEmails
|
|
27
|
-
})
|
|
28
|
-
emailID: number;
|
|
29
|
-
|
|
30
|
-
token: SearchToken;
|
|
31
|
-
|
|
32
|
-
email: Email;
|
|
33
|
-
|
|
34
|
-
}
|