@social-mail/social-mail-web-server 1.8.434 → 1.8.440
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 +4 -0
- package/dist/server/model/SocialMailContext.d.ts.map +1 -1
- package/dist/server/model/SocialMailContext.js +4 -0
- 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 +6 -0
- package/dist/server/model/SocialMailContextEvents.js.map +1 -1
- package/dist/server/model/entities/Domain.d.ts.map +1 -1
- package/dist/server/model/entities/Domain.js +3 -2
- package/dist/server/model/entities/Domain.js.map +1 -1
- package/dist/server/model/entities/Email.d.ts +3 -0
- package/dist/server/model/entities/Email.d.ts.map +1 -1
- package/dist/server/model/entities/Email.js +9 -0
- package/dist/server/model/entities/Email.js.map +1 -1
- package/dist/server/model/entities/EmailAddress.d.ts +1 -0
- package/dist/server/model/entities/EmailAddress.d.ts.map +1 -1
- package/dist/server/model/entities/EmailAddress.js +12 -2
- package/dist/server/model/entities/EmailAddress.js.map +1 -1
- package/dist/server/model/entities/NameToken.d.ts +1 -1
- package/dist/server/model/entities/NameToken.d.ts.map +1 -1
- package/dist/server/model/entities/NameToken.js +5 -4
- package/dist/server/model/entities/NameToken.js.map +1 -1
- package/dist/server/model/entities/SearchToken.d.ts +8 -0
- package/dist/server/model/entities/SearchToken.d.ts.map +1 -0
- package/dist/server/model/entities/SearchToken.js +37 -0
- package/dist/server/model/entities/SearchToken.js.map +1 -0
- package/dist/server/model/entities/SearchTokenEmail.d.ts +12 -0
- package/dist/server/model/entities/SearchTokenEmail.d.ts.map +1 -0
- package/dist/server/model/entities/SearchTokenEmail.js +42 -0
- package/dist/server/model/entities/SearchTokenEmail.js.map +1 -0
- package/dist/server/model/entities/SearchWord.d.ts +1 -1
- package/dist/server/model/events/NameTokenEvents.d.ts +2 -4
- package/dist/server/model/events/NameTokenEvents.d.ts.map +1 -1
- package/dist/server/model/events/NameTokenEvents.js +2 -8
- package/dist/server/model/events/NameTokenEvents.js.map +1 -1
- package/dist/server/model/events/ReadOnlyEvents.d.ts +7 -0
- package/dist/server/model/events/ReadOnlyEvents.d.ts.map +1 -0
- package/dist/server/model/events/ReadOnlyEvents.js +16 -0
- package/dist/server/model/events/ReadOnlyEvents.js.map +1 -0
- package/dist/server/model/events/SearchTokenEmailEvents.d.ts +5 -0
- package/dist/server/model/events/SearchTokenEmailEvents.d.ts.map +1 -0
- package/dist/server/model/events/SearchTokenEmailEvents.js +4 -0
- package/dist/server/model/events/SearchTokenEmailEvents.js.map +1 -0
- package/dist/server/model/events/SearchTokenEvents.d.ts +5 -0
- package/dist/server/model/events/SearchTokenEvents.d.ts.map +1 -0
- package/dist/server/model/events/SearchTokenEvents.js +4 -0
- package/dist/server/model/events/SearchTokenEvents.js.map +1 -0
- package/dist/server/seed/ui/seed-ui.js +1 -1
- package/dist/server/services/EmailAddressService.d.ts.map +1 -1
- package/dist/server/services/EmailAddressService.js +2 -12
- package/dist/server/services/EmailAddressService.js.map +1 -1
- package/dist/server/services/emails/IndexEmailService.d.ts +14 -0
- package/dist/server/services/emails/IndexEmailService.d.ts.map +1 -0
- package/dist/server/services/emails/IndexEmailService.js +72 -0
- package/dist/server/services/emails/IndexEmailService.js.map +1 -0
- package/dist/server/services/extract/TextExtractorService.d.ts +9 -0
- package/dist/server/services/extract/TextExtractorService.d.ts.map +1 -0
- package/dist/server/services/extract/TextExtractorService.js +59 -0
- package/dist/server/services/extract/TextExtractorService.js.map +1 -0
- package/dist/server/services/search/SearchTokenService.d.ts +7 -0
- package/dist/server/services/search/SearchTokenService.d.ts.map +1 -0
- package/dist/server/services/search/SearchTokenService.js +107 -0
- package/dist/server/services/search/SearchTokenService.js.map +1 -0
- package/dist/server/workflows/SocialWorkflowContext.d.ts.map +1 -1
- package/dist/server/workflows/SocialWorkflowContext.js +4 -0
- package/dist/server/workflows/SocialWorkflowContext.js.map +1 -1
- package/dist/server/workflows/daily/DailyWorkflow.d.ts.map +1 -1
- package/dist/server/workflows/daily/DailyWorkflow.js +4 -0
- package/dist/server/workflows/daily/DailyWorkflow.js.map +1 -1
- package/dist/server/workflows/email/index/IndexEmailAddressWorkflow.d.ts +11 -0
- package/dist/server/workflows/email/index/IndexEmailAddressWorkflow.d.ts.map +1 -0
- package/dist/server/workflows/email/index/IndexEmailAddressWorkflow.js +69 -0
- package/dist/server/workflows/email/index/IndexEmailAddressWorkflow.js.map +1 -0
- package/dist/server/workflows/email/index/IndexEmailContentWorkflow.d.ts +11 -0
- package/dist/server/workflows/email/index/IndexEmailContentWorkflow.d.ts.map +1 -0
- package/dist/server/workflows/email/index/IndexEmailContentWorkflow.js +64 -0
- package/dist/server/workflows/email/index/IndexEmailContentWorkflow.js.map +1 -0
- package/dist/server/workflows/search/IndexFileContentsWorkflow.d.ts +2 -2
- package/dist/server/workflows/search/IndexFileContentsWorkflow.d.ts.map +1 -1
- package/dist/server/workflows/search/IndexFileContentsWorkflow.js +9 -39
- package/dist/server/workflows/search/IndexFileContentsWorkflow.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/server/model/SocialMailContext.ts +6 -0
- package/src/server/model/SocialMailContextEvents.ts +8 -0
- package/src/server/model/entities/Domain.ts +3 -2
- package/src/server/model/entities/Email.ts +10 -0
- package/src/server/model/entities/EmailAddress.ts +11 -2
- package/src/server/model/entities/NameToken.ts +5 -4
- package/src/server/model/entities/SearchToken.ts +26 -0
- package/src/server/model/entities/SearchTokenEmail.ts +34 -0
- package/src/server/model/entities/SearchWord.ts +1 -1
- package/src/server/model/events/NameTokenEvents.ts +2 -9
- package/src/server/model/events/ReadOnlyEvents.ts +20 -0
- package/src/server/model/events/SearchTokenEmailEvents.ts +6 -0
- package/src/server/model/events/SearchTokenEvents.ts +6 -0
- package/src/server/seed/ui/seed-ui.ts +1 -1
- package/src/server/services/EmailAddressService.ts +2 -13
- package/src/server/services/emails/IndexEmailService.ts +65 -0
- package/src/server/services/extract/TextExtractorService.ts +52 -0
- package/src/server/services/search/SearchTokenService.ts +33 -0
- package/src/server/workflows/SocialWorkflowContext.ts +5 -0
- package/src/server/workflows/daily/DailyWorkflow.ts +4 -0
- package/src/server/workflows/email/index/IndexEmailAddressWorkflow.ts +65 -0
- package/src/server/workflows/email/index/IndexEmailContentWorkflow.ts +54 -0
- package/src/server/workflows/search/IndexFileContentsWorkflow.ts +7 -43
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import Workflow from "@entity-access/entity-access/dist/workflows/Workflow.js";
|
|
2
|
+
import SocialMailContext from "../../../model/SocialMailContext.js";
|
|
3
|
+
import NameTokenService from "../../../services/name-tokens/NameTokenService.js";
|
|
4
|
+
import WorkflowContext from "@entity-access/entity-access/dist/workflows/WorkflowContext.js";
|
|
5
|
+
export default class IndexEmailAddressWorkflow extends Workflow {
|
|
6
|
+
static taskGroup: string;
|
|
7
|
+
static queue(c: WorkflowContext): Promise<string>;
|
|
8
|
+
run(): Promise<void>;
|
|
9
|
+
index(start: number, db?: SocialMailContext, nts?: NameTokenService): Promise<number>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=IndexEmailAddressWorkflow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IndexEmailAddressWorkflow.d.ts","sourceRoot":"","sources":["../../../../../src/server/workflows/email/index/IndexEmailAddressWorkflow.ts"],"names":[],"mappings":"AACA,OAAO,QAA4B,MAAM,yDAAyD,CAAC;AACnG,OAAO,iBAAiB,MAAM,qCAAqC,CAAC;AACpE,OAAO,gBAAgB,MAAM,mDAAmD,CAAC;AACjF,OAAO,eAAe,MAAM,gEAAgE,CAAC;AAE7F,MAAM,CAAC,OAAO,OAAO,yBAA0B,SAAQ,QAAQ;IAE3D,MAAM,CAAC,SAAS,SAAW;IAE3B,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe;IAUzB,GAAG;IAWH,KAAK,CACP,KAAK,EAAE,MAAM,EACL,EAAE,CAAC,EAAE,iBAAiB,EACtB,GAAG,CAAC,EAAE,gBAAgB;CA8BrC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
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 __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
11
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
12
|
+
};
|
|
13
|
+
import Inject from "@entity-access/entity-access/dist/di/di.js";
|
|
14
|
+
import Workflow, { UniqueActivity } from "@entity-access/entity-access/dist/workflows/Workflow.js";
|
|
15
|
+
import SocialMailContext from "../../../model/SocialMailContext.js";
|
|
16
|
+
import NameTokenService from "../../../services/name-tokens/NameTokenService.js";
|
|
17
|
+
class IndexEmailAddressWorkflow extends Workflow {
|
|
18
|
+
static queue(c) {
|
|
19
|
+
const d = new Date();
|
|
20
|
+
d.setMinutes(Math.ceil(d.getMinutes() / 5));
|
|
21
|
+
d.setSeconds(0);
|
|
22
|
+
d.setMilliseconds(0);
|
|
23
|
+
return c.queue(IndexEmailAddressWorkflow, 0, {
|
|
24
|
+
id: `index-ea-${d.getTime().toString(36)}`
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
async run() {
|
|
28
|
+
let start = 0;
|
|
29
|
+
for (;;) {
|
|
30
|
+
start = await this.index(start);
|
|
31
|
+
if (!BigInt(start)) {
|
|
32
|
+
break;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
async index(start, db, nts) {
|
|
37
|
+
for (let i = 0; i < 100; i++) {
|
|
38
|
+
const all = await db.emailAddresses.where({ start }, (p) => (x) => x.nameIndexed === false && x.emailAddressID > p.start)
|
|
39
|
+
.limit(100)
|
|
40
|
+
.toArray();
|
|
41
|
+
if (!all.length) {
|
|
42
|
+
return 0;
|
|
43
|
+
}
|
|
44
|
+
for (const { emailAddressID, name, emailAddress } of all) {
|
|
45
|
+
start = emailAddressID;
|
|
46
|
+
if (name) {
|
|
47
|
+
await nts.updateName(name, { emailAddressID });
|
|
48
|
+
}
|
|
49
|
+
const [username] = emailAddress.split("@", 2);
|
|
50
|
+
await nts.updateName(username, { emailAddressID }, true);
|
|
51
|
+
await db.emailAddresses.statements.update({ nameIndexed: true }, { emailAddressID });
|
|
52
|
+
}
|
|
53
|
+
db.changeSet.clear();
|
|
54
|
+
}
|
|
55
|
+
return start;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
IndexEmailAddressWorkflow.taskGroup = "batch";
|
|
59
|
+
export default IndexEmailAddressWorkflow;
|
|
60
|
+
__decorate([
|
|
61
|
+
UniqueActivity,
|
|
62
|
+
__param(1, Inject),
|
|
63
|
+
__param(2, Inject),
|
|
64
|
+
__metadata("design:type", Function),
|
|
65
|
+
__metadata("design:paramtypes", [Number, SocialMailContext,
|
|
66
|
+
NameTokenService]),
|
|
67
|
+
__metadata("design:returntype", Promise)
|
|
68
|
+
], IndexEmailAddressWorkflow.prototype, "index", null);
|
|
69
|
+
//# sourceMappingURL=IndexEmailAddressWorkflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IndexEmailAddressWorkflow.js","sourceRoot":"","sources":["../../../../../src/server/workflows/email/index/IndexEmailAddressWorkflow.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,MAAM,MAAM,4CAA4C,CAAC;AAChE,OAAO,QAAQ,EAAE,EAAE,cAAc,EAAE,MAAM,yDAAyD,CAAC;AACnG,OAAO,iBAAiB,MAAM,qCAAqC,CAAC;AACpE,OAAO,gBAAgB,MAAM,mDAAmD,CAAC;AAGjF,MAAqB,yBAA0B,SAAQ,QAAQ;IAI3D,MAAM,CAAC,KAAK,CAAC,CAAkB;QAC3B,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;QACrB,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,GAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAChB,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACrB,OAAO,CAAC,CAAC,KAAK,CAAC,yBAAyB,EAAE,CAAC,EAAE;YACzC,EAAE,EAAE,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;SAC7C,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,GAAG;QACL,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,SAAQ,CAAC;YACL,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAChC,IAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChB,MAAM;YACV,CAAC;QACL,CAAC;IACL,CAAC;IAGK,AAAN,KAAK,CAAC,KAAK,CACP,KAAa,EACL,EAAsB,EACtB,GAAsB;QAG9B,KAAI,IAAI,CAAC,GAAC,CAAC,EAAC,CAAC,GAAC,GAAG,EAAC,CAAC,EAAE,EAAE,CAAC;YAEpB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAC1D,CAAC,CAAC,WAAW,KAAK,KAAK,IAAI,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC;iBACzD,KAAK,CAAC,GAAG,CAAC;iBACV,OAAO,EAAE,CAAC;YAEf,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;gBACd,OAAO,CAAC,CAAC;YACb,CAAC;YAED,KAAK,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,GAAG,EAAE,CAAC;gBACvD,KAAK,GAAG,cAAc,CAAC;gBACvB,IAAI,IAAI,EAAE,CAAC;oBACP,MAAM,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;gBACnD,CAAC;gBACD,MAAM,CAAC,QAAQ,CAAE,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBAC/C,MAAM,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,cAAc,EAAE,EAAE,IAAI,CAAC,CAAC;gBACzD,MAAM,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,IAAI,EAAC,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;YACxF,CAAC;YAED,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACzB,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;;AAtDM,mCAAS,GAAG,OAAO,CAAC;eAFV,yBAAyB;AAyBpC;IADL,cAAc;IAGV,WAAA,MAAM,CAAA;IACN,WAAA,MAAM,CAAA;;6CADM,iBAAiB;QAChB,gBAAgB;;sDA4BjC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import Workflow from "@entity-access/entity-access/dist/workflows/Workflow.js";
|
|
2
|
+
import WorkflowContext from "@entity-access/entity-access/dist/workflows/WorkflowContext.js";
|
|
3
|
+
import SocialMailContext from "../../../model/SocialMailContext.js";
|
|
4
|
+
import IndexEmailService from "../../../services/emails/IndexEmailService.js";
|
|
5
|
+
export default class IndexEmailContentWorkflow extends Workflow {
|
|
6
|
+
static taskGroup: string;
|
|
7
|
+
static queue(context: WorkflowContext): Promise<string>;
|
|
8
|
+
run(): Promise<void>;
|
|
9
|
+
index(db?: SocialMailContext, indexService?: IndexEmailService): Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=IndexEmailContentWorkflow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IndexEmailContentWorkflow.d.ts","sourceRoot":"","sources":["../../../../../src/server/workflows/email/index/IndexEmailContentWorkflow.ts"],"names":[],"mappings":"AAGA,OAAO,QAA4B,MAAM,yDAAyD,CAAC;AACnG,OAAO,eAAe,MAAM,gEAAgE,CAAC;AAC7F,OAAO,iBAAiB,MAAM,qCAAqC,CAAC;AACpE,OAAO,iBAAiB,MAAM,+CAA+C,CAAC;AAE9E,MAAM,CAAC,OAAO,OAAO,yBAA0B,SAAQ,QAAQ;IAE3D,MAAM,CAAC,SAAS,SAAW;IAE3B,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,eAAe;IAO/B,GAAG;IAKH,KAAK,CACC,EAAE,CAAC,EAAE,iBAAiB,EACtB,YAAY,CAAC,EAAE,iBAAiB;CA2B/C"}
|
|
@@ -0,0 +1,64 @@
|
|
|
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 __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
11
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
12
|
+
};
|
|
13
|
+
/* eslint-disable no-console */
|
|
14
|
+
import Inject from "@entity-access/entity-access/dist/di/di.js";
|
|
15
|
+
import DateTime from "@entity-access/entity-access/dist/types/DateTime.js";
|
|
16
|
+
import Workflow, { UniqueActivity } from "@entity-access/entity-access/dist/workflows/Workflow.js";
|
|
17
|
+
import SocialMailContext from "../../../model/SocialMailContext.js";
|
|
18
|
+
import IndexEmailService from "../../../services/emails/IndexEmailService.js";
|
|
19
|
+
class IndexEmailContentWorkflow extends Workflow {
|
|
20
|
+
static queue(context) {
|
|
21
|
+
const now = DateTime.now;
|
|
22
|
+
return context.queue(IndexEmailContentWorkflow, "", {
|
|
23
|
+
id: `index-email-${now.msSinceEpoch.toString(36)}`
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
async run() {
|
|
27
|
+
await this.index();
|
|
28
|
+
}
|
|
29
|
+
async index(db, indexService) {
|
|
30
|
+
for (let i = 0; i < 1000; i++) {
|
|
31
|
+
const pending = await db.emails.where(void 0, (p) => (x) => x.searchIndexed === false
|
|
32
|
+
&& x.statePostReceiveInvoked === true)
|
|
33
|
+
.limit(100)
|
|
34
|
+
.map(void 0, (p) => (x) => ({ emailID: x.emailID, textBody: x.textBody }))
|
|
35
|
+
.toArray();
|
|
36
|
+
if (!pending.length) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
for (const email of pending) {
|
|
40
|
+
try {
|
|
41
|
+
await indexService.indexEmail(email);
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
console.error(error);
|
|
45
|
+
}
|
|
46
|
+
const { emailID } = email;
|
|
47
|
+
await db.emails.statements.update({ searchIndexed: true }, { emailID });
|
|
48
|
+
}
|
|
49
|
+
db.changeSet.clear();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
IndexEmailContentWorkflow.taskGroup = "batch";
|
|
54
|
+
export default IndexEmailContentWorkflow;
|
|
55
|
+
__decorate([
|
|
56
|
+
UniqueActivity,
|
|
57
|
+
__param(0, Inject),
|
|
58
|
+
__param(1, Inject),
|
|
59
|
+
__metadata("design:type", Function),
|
|
60
|
+
__metadata("design:paramtypes", [SocialMailContext,
|
|
61
|
+
IndexEmailService]),
|
|
62
|
+
__metadata("design:returntype", Promise)
|
|
63
|
+
], IndexEmailContentWorkflow.prototype, "index", null);
|
|
64
|
+
//# sourceMappingURL=IndexEmailContentWorkflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IndexEmailContentWorkflow.js","sourceRoot":"","sources":["../../../../../src/server/workflows/email/index/IndexEmailContentWorkflow.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+BAA+B;AAC/B,OAAO,MAAM,MAAM,4CAA4C,CAAC;AAChE,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAC3E,OAAO,QAAQ,EAAE,EAAE,cAAc,EAAE,MAAM,yDAAyD,CAAC;AAEnG,OAAO,iBAAiB,MAAM,qCAAqC,CAAC;AACpE,OAAO,iBAAiB,MAAM,+CAA+C,CAAC;AAE9E,MAAqB,yBAA0B,SAAQ,QAAQ;IAI3D,MAAM,CAAC,KAAK,CAAC,OAAwB;QACjC,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;QACzB,OAAO,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,EAAE;YAChD,EAAE,EAAE,eAAe,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;SACrD,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,GAAG;QACL,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAGK,AAAN,KAAK,CAAC,KAAK,CACC,EAAsB,EACtB,YAAgC;QAGxC,KAAI,IAAI,CAAC,GAAG,CAAC,EAAC,CAAC,GAAC,IAAI,EAAC,CAAC,EAAE,EAAE,CAAC;YACvB,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,KAAK,KAAK;mBAC9E,CAAC,CAAC,uBAAuB,KAAK,IAAI,CAAC;iBACrC,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAC,CAAC,CAAC;iBACxE,OAAO,EAAE,CAAC;YAEf,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBAClB,OAAO;YACX,CAAC;YAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC1B,IAAI,CAAC;oBACD,MAAM,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBACzC,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACzB,CAAC;gBACD,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;gBAC1B,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YAC5E,CAAC;YACD,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACzB,CAAC;IACL,CAAC;;AAzCM,mCAAS,GAAG,OAAO,CAAC;eAFV,yBAAyB;AAgBpC;IADL,cAAc;IAEV,WAAA,MAAM,CAAA;IACN,WAAA,MAAM,CAAA;;qCADM,iBAAiB;QACP,iBAAiB;;sDAyB3C"}
|
|
@@ -2,12 +2,12 @@ import Workflow from "@entity-access/entity-access/dist/workflows/Workflow.js";
|
|
|
2
2
|
import SocialMailContext from "../../model/SocialMailContext.js";
|
|
3
3
|
import TempFileService from "../../storage/TempFileService.js";
|
|
4
4
|
import { AppWorkflowContext } from "../AppWorkflowContext.js";
|
|
5
|
+
import TextExtractorService from "../../services/extract/TextExtractorService.js";
|
|
5
6
|
export default class IndexFileContentsWorkflow extends Workflow {
|
|
6
7
|
static taskGroup: string;
|
|
7
8
|
static startIndexing(context: AppWorkflowContext): Promise<string>;
|
|
8
9
|
run(): Promise<void>;
|
|
9
|
-
index(start: any, db?: SocialMailContext, tempFileService?: TempFileService): Promise<any>;
|
|
10
|
-
private extractText;
|
|
10
|
+
index(start: any, db?: SocialMailContext, tempFileService?: TempFileService, te?: TextExtractorService): Promise<any>;
|
|
11
11
|
private saveTextContent;
|
|
12
12
|
}
|
|
13
13
|
//# sourceMappingURL=IndexFileContentsWorkflow.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IndexFileContentsWorkflow.d.ts","sourceRoot":"","sources":["../../../../src/server/workflows/search/IndexFileContentsWorkflow.ts"],"names":[],"mappings":"AACA,OAAO,QAA4B,MAAM,yDAAyD,CAAC;AAEnG,OAAO,iBAAiB,MAAM,kCAAkC,CAAC;AACjE,OAAO,eAAe,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"IndexFileContentsWorkflow.d.ts","sourceRoot":"","sources":["../../../../src/server/workflows/search/IndexFileContentsWorkflow.ts"],"names":[],"mappings":"AACA,OAAO,QAA4B,MAAM,yDAAyD,CAAC;AAEnG,OAAO,iBAAiB,MAAM,kCAAkC,CAAC;AACjE,OAAO,eAAe,MAAM,kCAAkC,CAAC;AAG/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAI9D,OAAO,oBAAoB,MAAM,gDAAgD,CAAC;AAElF,MAAM,CAAC,OAAO,OAAO,yBAA0B,SAAQ,QAAQ;IAE3D,MAAM,CAAC,SAAS,SAAW;IAE3B,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,kBAAkB;IAM1C,GAAG;IAWH,KAAK,CACP,KAAK,KAAA,EACG,EAAE,CAAC,EAAE,iBAAiB,EACtB,eAAe,CAAC,EAAE,eAAe,EACjC,EAAE,CAAC,EAAE,oBAAoB;YAmCvB,eAAe;CAgEhC"}
|
|
@@ -12,16 +12,13 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
12
12
|
};
|
|
13
13
|
/* eslint-disable no-console */
|
|
14
14
|
import Workflow, { UniqueActivity } from "@entity-access/entity-access/dist/workflows/Workflow.js";
|
|
15
|
-
import Inject
|
|
15
|
+
import Inject from "@entity-access/entity-access/dist/di/di.js";
|
|
16
16
|
import SocialMailContext from "../../model/SocialMailContext.js";
|
|
17
17
|
import TempFileService from "../../storage/TempFileService.js";
|
|
18
|
-
import { FileType } from "../../../common/FileType.js";
|
|
19
|
-
import EmailParserService from "../../smtp/services/EmailParserService.js";
|
|
20
|
-
import { parse } from "path";
|
|
21
|
-
import { Extract } from "../../services/extract/Extract.js";
|
|
22
18
|
import { appendFile } from "fs/promises";
|
|
23
19
|
import BufferHelper from "../../../common/BufferHelper.js";
|
|
24
20
|
import sleep from "../../../common/sleep.js";
|
|
21
|
+
import TextExtractorService from "../../services/extract/TextExtractorService.js";
|
|
25
22
|
class IndexFileContentsWorkflow extends Workflow {
|
|
26
23
|
static startIndexing(context) {
|
|
27
24
|
return context.queue(IndexFileContentsWorkflow, 0, {
|
|
@@ -37,7 +34,7 @@ class IndexFileContentsWorkflow extends Workflow {
|
|
|
37
34
|
}
|
|
38
35
|
}
|
|
39
36
|
}
|
|
40
|
-
async index(start, db, tempFileService) {
|
|
37
|
+
async index(start, db, tempFileService, te) {
|
|
41
38
|
db.verifyFilters = false;
|
|
42
39
|
db.raiseEvents = false;
|
|
43
40
|
let q = db.fileContents
|
|
@@ -55,7 +52,7 @@ class IndexFileContentsWorkflow extends Workflow {
|
|
|
55
52
|
for (const iterator of files) {
|
|
56
53
|
start = iterator.fileContentID;
|
|
57
54
|
try {
|
|
58
|
-
await this.saveTextContent(iterator, tempFileService, db);
|
|
55
|
+
await this.saveTextContent(iterator, tempFileService, db, te);
|
|
59
56
|
}
|
|
60
57
|
catch (error) {
|
|
61
58
|
console.error(error);
|
|
@@ -63,36 +60,7 @@ class IndexFileContentsWorkflow extends Workflow {
|
|
|
63
60
|
}
|
|
64
61
|
return start;
|
|
65
62
|
}
|
|
66
|
-
async
|
|
67
|
-
const outputFile = await tempFileService.createTempFile(".txt");
|
|
68
|
-
const isEmail = file.contentType === "message/rfc822";
|
|
69
|
-
if (isEmail) {
|
|
70
|
-
const parser = ServiceProvider.resolve(this, EmailParserService);
|
|
71
|
-
const parsedEmail = await parser.parse(file, true);
|
|
72
|
-
await outputFile.appendLine(parsedEmail.text);
|
|
73
|
-
for (const iterator of parsedEmail.attachments) {
|
|
74
|
-
const { ext } = parse(iterator.filename || "file.dat");
|
|
75
|
-
const tf = await tempFileService.createTempFile(ext, iterator.filename, iterator.contentType);
|
|
76
|
-
await tf.writeAll(iterator.content);
|
|
77
|
-
const t = await this.extractText(tf, tempFileService, db);
|
|
78
|
-
if (t) {
|
|
79
|
-
await outputFile.appendLine(await t.readAsText());
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
return outputFile;
|
|
83
|
-
}
|
|
84
|
-
if (/image\//i.test(file.contentType)) {
|
|
85
|
-
await Extract.text(file, outputFile, true);
|
|
86
|
-
return outputFile;
|
|
87
|
-
}
|
|
88
|
-
if (FileType.canBeCompressed(file)) {
|
|
89
|
-
await Extract.text(file, outputFile);
|
|
90
|
-
return outputFile;
|
|
91
|
-
}
|
|
92
|
-
await outputFile.writeAllText("");
|
|
93
|
-
return outputFile;
|
|
94
|
-
}
|
|
95
|
-
async saveTextContent(fileContent, tempFileService, db) {
|
|
63
|
+
async saveTextContent(fileContent, tempFileService, db, te) {
|
|
96
64
|
let searchable = "";
|
|
97
65
|
// check if file content already has text content to remove duplicates
|
|
98
66
|
const has = await db.textDocuments.statements.select({}, { textDocumentID: fileContent.fileContentID });
|
|
@@ -122,7 +90,7 @@ class IndexFileContentsWorkflow extends Workflow {
|
|
|
122
90
|
}
|
|
123
91
|
}
|
|
124
92
|
if (file) {
|
|
125
|
-
const fx = await
|
|
93
|
+
const fx = await te.extract(file);
|
|
126
94
|
if (fx.contentSize < 10 * 1024 * 1024) {
|
|
127
95
|
// we need to first remove 00 byte sequence...
|
|
128
96
|
const newFile = await tempFileService.createTempFile("txt");
|
|
@@ -149,9 +117,11 @@ __decorate([
|
|
|
149
117
|
UniqueActivity,
|
|
150
118
|
__param(1, Inject),
|
|
151
119
|
__param(2, Inject),
|
|
120
|
+
__param(3, Inject),
|
|
152
121
|
__metadata("design:type", Function),
|
|
153
122
|
__metadata("design:paramtypes", [Object, SocialMailContext,
|
|
154
|
-
TempFileService
|
|
123
|
+
TempFileService,
|
|
124
|
+
TextExtractorService]),
|
|
155
125
|
__metadata("design:returntype", Promise)
|
|
156
126
|
], IndexFileContentsWorkflow.prototype, "index", null);
|
|
157
127
|
//# sourceMappingURL=IndexFileContentsWorkflow.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IndexFileContentsWorkflow.js","sourceRoot":"","sources":["../../../../src/server/workflows/search/IndexFileContentsWorkflow.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+BAA+B;AAC/B,OAAO,QAAQ,EAAE,EAAE,cAAc,EAAE,MAAM,yDAAyD,CAAC;AACnG,OAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"IndexFileContentsWorkflow.js","sourceRoot":"","sources":["../../../../src/server/workflows/search/IndexFileContentsWorkflow.ts"],"names":[],"mappings":"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"}
|