@social-mail/social-mail-web-server 1.8.434 → 1.8.439

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 (106) hide show
  1. package/dist/server/model/SocialMailContext.d.ts +4 -0
  2. package/dist/server/model/SocialMailContext.d.ts.map +1 -1
  3. package/dist/server/model/SocialMailContext.js +4 -0
  4. package/dist/server/model/SocialMailContext.js.map +1 -1
  5. package/dist/server/model/SocialMailContextEvents.d.ts.map +1 -1
  6. package/dist/server/model/SocialMailContextEvents.js +6 -0
  7. package/dist/server/model/SocialMailContextEvents.js.map +1 -1
  8. package/dist/server/model/entities/Domain.d.ts.map +1 -1
  9. package/dist/server/model/entities/Domain.js +3 -2
  10. package/dist/server/model/entities/Domain.js.map +1 -1
  11. package/dist/server/model/entities/Email.d.ts +3 -0
  12. package/dist/server/model/entities/Email.d.ts.map +1 -1
  13. package/dist/server/model/entities/Email.js +9 -0
  14. package/dist/server/model/entities/Email.js.map +1 -1
  15. package/dist/server/model/entities/EmailAddress.d.ts +1 -0
  16. package/dist/server/model/entities/EmailAddress.d.ts.map +1 -1
  17. package/dist/server/model/entities/EmailAddress.js +12 -2
  18. package/dist/server/model/entities/EmailAddress.js.map +1 -1
  19. package/dist/server/model/entities/NameToken.d.ts +1 -1
  20. package/dist/server/model/entities/NameToken.d.ts.map +1 -1
  21. package/dist/server/model/entities/NameToken.js +5 -4
  22. package/dist/server/model/entities/NameToken.js.map +1 -1
  23. package/dist/server/model/entities/SearchToken.d.ts +8 -0
  24. package/dist/server/model/entities/SearchToken.d.ts.map +1 -0
  25. package/dist/server/model/entities/SearchToken.js +37 -0
  26. package/dist/server/model/entities/SearchToken.js.map +1 -0
  27. package/dist/server/model/entities/SearchTokenEmail.d.ts +12 -0
  28. package/dist/server/model/entities/SearchTokenEmail.d.ts.map +1 -0
  29. package/dist/server/model/entities/SearchTokenEmail.js +42 -0
  30. package/dist/server/model/entities/SearchTokenEmail.js.map +1 -0
  31. package/dist/server/model/entities/SearchWord.d.ts +1 -1
  32. package/dist/server/model/events/NameTokenEvents.d.ts +2 -4
  33. package/dist/server/model/events/NameTokenEvents.d.ts.map +1 -1
  34. package/dist/server/model/events/NameTokenEvents.js +2 -8
  35. package/dist/server/model/events/NameTokenEvents.js.map +1 -1
  36. package/dist/server/model/events/ReadOnlyEvents.d.ts +7 -0
  37. package/dist/server/model/events/ReadOnlyEvents.d.ts.map +1 -0
  38. package/dist/server/model/events/ReadOnlyEvents.js +16 -0
  39. package/dist/server/model/events/ReadOnlyEvents.js.map +1 -0
  40. package/dist/server/model/events/SearchTokenEmailEvents.d.ts +5 -0
  41. package/dist/server/model/events/SearchTokenEmailEvents.d.ts.map +1 -0
  42. package/dist/server/model/events/SearchTokenEmailEvents.js +4 -0
  43. package/dist/server/model/events/SearchTokenEmailEvents.js.map +1 -0
  44. package/dist/server/model/events/SearchTokenEvents.d.ts +5 -0
  45. package/dist/server/model/events/SearchTokenEvents.d.ts.map +1 -0
  46. package/dist/server/model/events/SearchTokenEvents.js +4 -0
  47. package/dist/server/model/events/SearchTokenEvents.js.map +1 -0
  48. package/dist/server/seed/ui/seed-ui.js +1 -1
  49. package/dist/server/services/EmailAddressService.d.ts.map +1 -1
  50. package/dist/server/services/EmailAddressService.js +2 -12
  51. package/dist/server/services/EmailAddressService.js.map +1 -1
  52. package/dist/server/services/emails/IndexEmailService.d.ts +14 -0
  53. package/dist/server/services/emails/IndexEmailService.d.ts.map +1 -0
  54. package/dist/server/services/emails/IndexEmailService.js +72 -0
  55. package/dist/server/services/emails/IndexEmailService.js.map +1 -0
  56. package/dist/server/services/extract/TextExtractorService.d.ts +9 -0
  57. package/dist/server/services/extract/TextExtractorService.d.ts.map +1 -0
  58. package/dist/server/services/extract/TextExtractorService.js +59 -0
  59. package/dist/server/services/extract/TextExtractorService.js.map +1 -0
  60. package/dist/server/services/search/SearchTokenService.d.ts +7 -0
  61. package/dist/server/services/search/SearchTokenService.d.ts.map +1 -0
  62. package/dist/server/services/search/SearchTokenService.js +107 -0
  63. package/dist/server/services/search/SearchTokenService.js.map +1 -0
  64. package/dist/server/workflows/SocialWorkflowContext.d.ts.map +1 -1
  65. package/dist/server/workflows/SocialWorkflowContext.js +4 -0
  66. package/dist/server/workflows/SocialWorkflowContext.js.map +1 -1
  67. package/dist/server/workflows/daily/DailyWorkflow.d.ts.map +1 -1
  68. package/dist/server/workflows/daily/DailyWorkflow.js +4 -0
  69. package/dist/server/workflows/daily/DailyWorkflow.js.map +1 -1
  70. package/dist/server/workflows/email/index/IndexEmailAddressWorkflow.d.ts +11 -0
  71. package/dist/server/workflows/email/index/IndexEmailAddressWorkflow.d.ts.map +1 -0
  72. package/dist/server/workflows/email/index/IndexEmailAddressWorkflow.js +69 -0
  73. package/dist/server/workflows/email/index/IndexEmailAddressWorkflow.js.map +1 -0
  74. package/dist/server/workflows/email/index/IndexEmailContentWorkflow.d.ts +11 -0
  75. package/dist/server/workflows/email/index/IndexEmailContentWorkflow.d.ts.map +1 -0
  76. package/dist/server/workflows/email/index/IndexEmailContentWorkflow.js +64 -0
  77. package/dist/server/workflows/email/index/IndexEmailContentWorkflow.js.map +1 -0
  78. package/dist/server/workflows/search/IndexFileContentsWorkflow.d.ts +2 -2
  79. package/dist/server/workflows/search/IndexFileContentsWorkflow.d.ts.map +1 -1
  80. package/dist/server/workflows/search/IndexFileContentsWorkflow.js +9 -39
  81. package/dist/server/workflows/search/IndexFileContentsWorkflow.js.map +1 -1
  82. package/dist/tsconfig.tsbuildinfo +1 -1
  83. package/package.json +2 -2
  84. package/src/server/model/SocialMailContext.ts +6 -0
  85. package/src/server/model/SocialMailContextEvents.ts +8 -0
  86. package/src/server/model/entities/Domain.ts +3 -2
  87. package/src/server/model/entities/Email.ts +10 -0
  88. package/src/server/model/entities/EmailAddress.ts +11 -2
  89. package/src/server/model/entities/NameToken.ts +5 -4
  90. package/src/server/model/entities/SearchToken.ts +26 -0
  91. package/src/server/model/entities/SearchTokenEmail.ts +34 -0
  92. package/src/server/model/entities/SearchWord.ts +1 -1
  93. package/src/server/model/events/NameTokenEvents.ts +2 -9
  94. package/src/server/model/events/ReadOnlyEvents.ts +20 -0
  95. package/src/server/model/events/SearchTokenEmailEvents.ts +6 -0
  96. package/src/server/model/events/SearchTokenEvents.ts +6 -0
  97. package/src/server/seed/ui/seed-ui.ts +1 -1
  98. package/src/server/services/EmailAddressService.ts +2 -13
  99. package/src/server/services/emails/IndexEmailService.ts +65 -0
  100. package/src/server/services/extract/TextExtractorService.ts +52 -0
  101. package/src/server/services/search/SearchTokenService.ts +33 -0
  102. package/src/server/workflows/SocialWorkflowContext.ts +5 -0
  103. package/src/server/workflows/daily/DailyWorkflow.ts +4 -0
  104. package/src/server/workflows/email/index/IndexEmailAddressWorkflow.ts +65 -0
  105. package/src/server/workflows/email/index/IndexEmailContentWorkflow.ts +54 -0
  106. 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;AAO/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAK9D,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;YAkC/B,WAAW;YAmCX,eAAe;CAgEhC"}
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, { ServiceProvider } from "@entity-access/entity-access/dist/di/di.js";
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 extractText(file, tempFileService, db) {
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 this.extractText(file, tempFileService, db);
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":"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"}
1
+ {"version":3,"file":"IndexFileContentsWorkflow.js","sourceRoot":"","sources":["../../../../src/server/workflows/search/IndexFileContentsWorkflow.ts"],"names":[],"mappings":"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"}