@social-mail/social-mail-web-server 1.8.422 → 1.8.424

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 (52) hide show
  1. package/dist/server/services/replica/ReplicaReader.d.ts +7 -0
  2. package/dist/server/services/replica/ReplicaReader.d.ts.map +1 -0
  3. package/dist/server/services/replica/ReplicaReader.js +45 -0
  4. package/dist/server/services/replica/ReplicaReader.js.map +1 -0
  5. package/dist/tsconfig.tsbuildinfo +1 -1
  6. package/dist/wwwroot/routes/api/files/get.d.ts +2 -2
  7. package/dist/wwwroot/routes/api/files/get.d.ts.map +1 -1
  8. package/dist/wwwroot/routes/api/files/get.js +26 -13
  9. package/dist/wwwroot/routes/api/files/get.js.map +1 -1
  10. package/dist/wwwroot/routes/social-mail/c/d/[domain]/[type]/[postID]/[fileID]/index.d.ts +2 -3
  11. package/dist/wwwroot/routes/social-mail/c/d/[domain]/[type]/[postID]/[fileID]/index.d.ts.map +1 -1
  12. package/dist/wwwroot/routes/social-mail/c/d/[domain]/[type]/[postID]/[fileID]/index.js +9 -5
  13. package/dist/wwwroot/routes/social-mail/c/d/[domain]/[type]/[postID]/[fileID]/index.js.map +1 -1
  14. package/dist/wwwroot/routes/social-mail/c/e/[eDomain]/[type]/[eFileContentID]/index.d.ts +2 -3
  15. package/dist/wwwroot/routes/social-mail/c/e/[eDomain]/[type]/[eFileContentID]/index.d.ts.map +1 -1
  16. package/dist/wwwroot/routes/social-mail/c/e/[eDomain]/[type]/[eFileContentID]/index.js +9 -5
  17. package/dist/wwwroot/routes/social-mail/c/e/[eDomain]/[type]/[eFileContentID]/index.js.map +1 -1
  18. package/dist/wwwroot/routes/social-mail/c/u/[activityID]/[accessCode]/index.d.ts +2 -0
  19. package/dist/wwwroot/routes/social-mail/c/u/[activityID]/[accessCode]/index.d.ts.map +1 -1
  20. package/dist/wwwroot/routes/social-mail/c/u/[activityID]/[accessCode]/index.js +7 -2
  21. package/dist/wwwroot/routes/social-mail/c/u/[activityID]/[accessCode]/index.js.map +1 -1
  22. package/dist/wwwroot/routes/social-mail/cd/[domain]/[type]/[postID]/[fileID]/index.d.ts +1 -1
  23. package/dist/wwwroot/routes/social-mail/cd/[domain]/[type]/[postID]/[fileID]/index.d.ts.map +1 -1
  24. package/dist/wwwroot/routes/social-mail/cd/[domain]/[type]/[postID]/[fileID]/index.js +5 -5
  25. package/dist/wwwroot/routes/social-mail/cd/[domain]/[type]/[postID]/[fileID]/index.js.map +1 -1
  26. package/dist/wwwroot/routes/social-mail/fd/[type]/[eFileID]/[eFileContentID]/[name]/index.d.ts +2 -3
  27. package/dist/wwwroot/routes/social-mail/fd/[type]/[eFileID]/[eFileContentID]/[name]/index.d.ts.map +1 -1
  28. package/dist/wwwroot/routes/social-mail/fd/[type]/[eFileID]/[eFileContentID]/[name]/index.js +8 -4
  29. package/dist/wwwroot/routes/social-mail/fd/[type]/[eFileID]/[eFileContentID]/[name]/index.js.map +1 -1
  30. package/dist/wwwroot/routes/social-mail/social/t/index.d.ts +2 -0
  31. package/dist/wwwroot/routes/social-mail/social/t/index.d.ts.map +1 -1
  32. package/dist/wwwroot/routes/social-mail/social/t/index.js +12 -6
  33. package/dist/wwwroot/routes/social-mail/social/t/index.js.map +1 -1
  34. package/package.json +1 -1
  35. package/src/server/services/replica/ReplicaReader.ts +34 -0
  36. package/src/wwwroot/routes/api/files/get.ts +29 -15
  37. package/src/wwwroot/routes/social-mail/c/d/[domain]/[type]/[postID]/[fileID]/index.ts +9 -4
  38. package/src/wwwroot/routes/social-mail/c/e/[eDomain]/[type]/[eFileContentID]/index.ts +9 -4
  39. package/src/wwwroot/routes/social-mail/c/u/[activityID]/[accessCode]/index.tsx +6 -2
  40. package/src/wwwroot/routes/social-mail/cd/[domain]/[type]/[postID]/[fileID]/index.ts +4 -4
  41. package/src/wwwroot/routes/social-mail/fd/[type]/[eFileID]/[eFileContentID]/[name]/index.ts +7 -3
  42. package/src/wwwroot/routes/social-mail/social/t/index.tsx +10 -4
  43. package/dist/wwwroot/routes/api/emails/content/attachment/index.d.ts +0 -2
  44. package/dist/wwwroot/routes/api/emails/content/attachment/index.d.ts.map +0 -1
  45. package/dist/wwwroot/routes/api/emails/content/attachment/index.js +0 -41
  46. package/dist/wwwroot/routes/api/emails/content/attachment/index.js.map +0 -1
  47. package/dist/wwwroot/routes/api/emails/content/html/index.d.ts +0 -2
  48. package/dist/wwwroot/routes/api/emails/content/html/index.d.ts.map +0 -1
  49. package/dist/wwwroot/routes/api/emails/content/html/index.js +0 -41
  50. package/dist/wwwroot/routes/api/emails/content/html/index.js.map +0 -1
  51. package/src/wwwroot/routes/api/emails/content/attachment/index.ts +0 -53
  52. package/src/wwwroot/routes/api/emails/content/html/index.ts +0 -52
@@ -1,8 +1,8 @@
1
- import { TempFileResult } from "@entity-access/server-pages/dist/Content.js";
2
1
  import Page from "@entity-access/server-pages/dist/Page.js";
3
2
  export default class extends Page {
4
3
  private fcs;
4
+ private replica;
5
5
  private db;
6
- run(): Promise<TempFileResult>;
6
+ run(): Promise<import("@entity-access/server-pages/dist/Content.js").default>;
7
7
  }
8
8
  //# sourceMappingURL=get.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../../src/wwwroot/routes/api/files/get.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAK5D,MAAM,CAAC,OAAO,MAAO,SAAQ,IAAI;IAG7B,OAAO,CAAC,GAAG,CAAwB;IAGnC,OAAO,CAAC,EAAE,CAAoB;IAExB,GAAG;CA+CZ"}
1
+ {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../../src/wwwroot/routes/api/files/get.ts"],"names":[],"mappings":"AAEA,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAO5D,MAAM,CAAC,OAAO,MAAO,SAAQ,IAAI;IAG7B,OAAO,CAAC,GAAG,CAAwB;IAGnC,OAAO,CAAC,OAAO,CAAgB;IAG/B,OAAO,CAAC,EAAE,CAAoB;IAExB,GAAG;CAyDZ"}
@@ -8,11 +8,12 @@ var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
10
  import Inject from "@entity-access/entity-access/dist/di/di.js";
11
- import SocialMailContext from "../../../../server/model/SocialMailContext.js";
12
11
  import { TempFileResult } from "@entity-access/server-pages/dist/Content.js";
13
12
  import Page from "@entity-access/server-pages/dist/Page.js";
14
13
  import { Prepare } from "@entity-access/server-pages/dist/decorators/Prepare.js";
15
14
  import FileConversionService from "../../../../server/services/convert/FileConversionService.js";
15
+ import ReplicaReader from "../../../../server/services/replica/ReplicaReader.js";
16
+ import SocialMailContext from "../../../../server/model/SocialMailContext.js";
16
17
  let default_1 = class extends Page {
17
18
  async run() {
18
19
  const type = this.childPath[0];
@@ -20,20 +21,28 @@ let default_1 = class extends Page {
20
21
  const fileID = this.childPath[1];
21
22
  let fileContentID = this.childPath[2];
22
23
  const fileName = this.childPath[this.childPath.length - 1];
23
- if (!fileContentID) {
24
- // redirect...
25
- const fc1 = await this.db.appFiles.where({ fileID }, (p) => (x) => x.appFileID === p.fileID)
26
- .select(void 0, (p) => (x) => ({ fileContentID: x.fileContentID }))
24
+ const appFile = await this.replica.query(async (db) => {
25
+ if (!fileContentID) {
26
+ // redirect...
27
+ const fc1 = await db.appFiles.where({ fileID }, (p) => (x) => x.appFileID === p.fileID)
28
+ .select(void 0, (p) => (x) => ({ fileContentID: x.fileContentID }))
29
+ .first();
30
+ if (!fc1) {
31
+ return null;
32
+ }
33
+ fileContentID = fc1.fileContentID;
34
+ }
35
+ db.verifyFilters = true;
36
+ return await db.appFiles
37
+ .filtered("read")
38
+ .where({ fileID, fileContentID }, (p) => (x) => x.fileContentID === p.fileContentID
39
+ && x.appFileID === p.fileID)
40
+ .include((x) => x.fileContent)
27
41
  .first();
28
- fileContentID = fc1.fileContentID;
42
+ });
43
+ if (!appFile) {
44
+ return this.notFound();
29
45
  }
30
- this.db.verifyFilters = true;
31
- const appFile = await this.db.appFiles
32
- .filtered("read")
33
- .where({ fileID, fileContentID }, (p) => (x) => x.fileContentID === p.fileContentID
34
- && x.appFileID === p.fileID)
35
- .include((x) => x.fileContent)
36
- .firstOrFail();
37
46
  this.db.verifyFilters = false;
38
47
  this.db.raiseEvents = false;
39
48
  this.cacheControl = "public, max-age=2592000, immutable";
@@ -56,6 +65,10 @@ __decorate([
56
65
  Inject,
57
66
  __metadata("design:type", FileConversionService)
58
67
  ], default_1.prototype, "fcs", void 0);
68
+ __decorate([
69
+ Inject,
70
+ __metadata("design:type", ReplicaReader)
71
+ ], default_1.prototype, "replica", void 0);
59
72
  __decorate([
60
73
  Inject,
61
74
  __metadata("design:type", SocialMailContext)
@@ -1 +1 @@
1
- {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../../src/wwwroot/routes/api/files/get.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,MAAM,MAAM,4CAA4C,CAAC;AAChE,OAAO,iBAAiB,MAAM,+CAA+C,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,wDAAwD,CAAC;AACjF,OAAO,qBAAqB,MAAM,8DAA8D,CAAC;AAGlF,gBAAA,KAAM,SAAQ,IAAI;IAQ7B,KAAK,CAAC,GAAG;QAEL,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC/B,wDAAwD;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAsB,CAAC;QACtD,IAAI,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAsB,CAAC;QAE3D,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC;QAEzD,IAAI,CAAC,aAAa,EAAE,CAAC;YACjB,cAAc;YACd,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,MAAM,CAAC;iBACvF,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAC,aAAa,EAAG,CAAC,CAAC,aAAa,EAAC,CAAC,CAAC;iBACjE,KAAK,EAAE,CAAC;YACb,aAAa,GAAG,GAAG,CAAC,aAAa,CAAC;QACtC,CAAC;QAED,IAAI,CAAC,EAAE,CAAC,aAAa,GAAG,IAAI,CAAC;QAC7B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ;aACjC,QAAQ,CAAC,MAAM,CAAC;aAChB,KAAK,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,EAC5B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,aAAa;eAC1C,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,MAAM,CAAC;aACnC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;aAC7B,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,EAAE,CAAC,aAAa,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,EAAE,CAAC,WAAW,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,YAAY,GAAG,oCAAoC,CAAC;QAEzD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC;YAC9C,OAAO;YACP,QAAQ;YACR,aAAa;YACb,IAAI;SACP,CAAC,CAAC;QAEH,OAAO,IAAI,cAAc,CACrB,IAAI,EACJ;YACI,kBAAkB,EAAE,IAAI,KAAK,UAAU;gBACnC,CAAC,CAAC,YAAY;gBACd,CAAC,CAAC,QAAQ;YACd,SAAS,EAAE,IAAI;YACf,IAAI,EAAE,KAAK;SACd,CACJ,CAAC;IACN,CAAC;CACJ,CAAA;AApDW;IADP,MAAM;8BACM,qBAAqB;sCAAC;AAG3B;IADP,MAAM;8BACK,iBAAiB;qCAAC;AANnB;IADd,OAAO,CAAC,SAAS;aAwDjB"}
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../../src/wwwroot/routes/api/files/get.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,MAAM,MAAM,4CAA4C,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,wDAAwD,CAAC;AACjF,OAAO,qBAAqB,MAAM,8DAA8D,CAAC;AACjG,OAAO,aAAa,MAAM,sDAAsD,CAAC;AACjF,OAAO,iBAAiB,MAAM,+CAA+C,CAAC;AAG/D,gBAAA,KAAM,SAAQ,IAAI;IAW7B,KAAK,CAAC,GAAG;QAEL,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC/B,wDAAwD;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAsB,CAAC;QACtD,IAAI,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAsB,CAAC;QAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC;QAEzD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;YAElD,IAAI,CAAC,aAAa,EAAE,CAAC;gBACjB,cAAc;gBACd,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,MAAM,CAAC;qBAClF,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAC,aAAa,EAAG,CAAC,CAAC,aAAa,EAAC,CAAC,CAAC;qBACjE,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,GAAG,EAAE,CAAC;oBACP,OAAO,IAAI,CAAC;gBAChB,CAAC;gBACD,aAAa,GAAG,GAAG,CAAC,aAAa,CAAC;YACtC,CAAC;YAED,EAAE,CAAC,aAAa,GAAG,IAAI,CAAC;YACxB,OAAO,MAAM,EAAE,CAAC,QAAQ;iBACnB,QAAQ,CAAC,MAAM,CAAC;iBAChB,KAAK,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,EAC5B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,aAAa;mBAC1C,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,MAAM,CAAC;iBACnC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;iBAC7B,KAAK,EAAE,CAAC;QACjB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC3B,CAAC;QAED,IAAI,CAAC,EAAE,CAAC,aAAa,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,EAAE,CAAC,WAAW,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,YAAY,GAAG,oCAAoC,CAAC;QAEzD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC;YAC9C,OAAO;YACP,QAAQ;YACR,aAAa;YACb,IAAI;SACP,CAAC,CAAC;QAEH,OAAO,IAAI,cAAc,CACrB,IAAI,EACJ;YACI,kBAAkB,EAAE,IAAI,KAAK,UAAU;gBACnC,CAAC,CAAC,YAAY;gBACd,CAAC,CAAC,QAAQ;YACd,SAAS,EAAE,IAAI;YACf,IAAI,EAAE,KAAK;SACd,CACJ,CAAC;IACN,CAAC;CACJ,CAAA;AAjEW;IADP,MAAM;8BACM,qBAAqB;sCAAC;AAG3B;IADP,MAAM;8BACU,aAAa;0CAAC;AAGvB;IADP,MAAM;8BACK,iBAAiB;qCAAC;AATnB;IADd,OAAO,CAAC,SAAS;aAqEjB"}
@@ -1,13 +1,12 @@
1
- import { TempFileResult } from "@entity-access/server-pages/dist/Content.js";
2
1
  import Page from "@entity-access/server-pages/dist/Page.js";
3
2
  export default class extends Page {
4
3
  private fcs;
5
- private db;
4
+ private replica;
6
5
  private ecs;
7
6
  private domain;
8
7
  private type;
9
8
  private postID;
10
9
  private fileID;
11
- run(): Promise<TempFileResult>;
10
+ run(): Promise<import("@entity-access/server-pages/dist/Content.js").default>;
12
11
  }
13
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/wwwroot/routes/social-mail/c/d/[domain]/[type]/[postID]/[fileID]/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAO5D,MAAM,CAAC,OAAO,MAAO,SAAQ,IAAI;IAG7B,OAAO,CAAC,GAAG,CAAwB;IAGnC,OAAO,CAAC,EAAE,CAAoB;IAG9B,OAAO,CAAC,GAAG,CAAoB;IAG/B,OAAO,CAAC,MAAM,CAAS;IAGvB,OAAO,CAAC,IAAI,CAAS;IAGrB,OAAO,CAAC,MAAM,CAAM;IAGpB,OAAO,CAAC,MAAM,CAAM;IAEd,GAAG;CAoCZ"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/wwwroot/routes/social-mail/c/d/[domain]/[type]/[postID]/[fileID]/index.ts"],"names":[],"mappings":"AAEA,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAO5D,MAAM,CAAC,OAAO,MAAO,SAAQ,IAAI;IAG7B,OAAO,CAAC,GAAG,CAAwB;IAGnC,OAAO,CAAC,OAAO,CAAgB;IAG/B,OAAO,CAAC,GAAG,CAAoB;IAG/B,OAAO,CAAC,MAAM,CAAS;IAGvB,OAAO,CAAC,IAAI,CAAS;IAGrB,OAAO,CAAC,MAAM,CAAM;IAGpB,OAAO,CAAC,MAAM,CAAM;IAEd,GAAG;CAyCZ"}
@@ -12,20 +12,24 @@ import { TempFileResult } from "@entity-access/server-pages/dist/Content.js";
12
12
  import Page from "@entity-access/server-pages/dist/Page.js";
13
13
  import { Route } from "@entity-access/server-pages/dist/core/Route.js";
14
14
  import { CORS } from "../../../../../../../../../common/CORS.js";
15
- import SocialMailContext from "../../../../../../../../../server/model/SocialMailContext.js";
16
15
  import FileConversionService from "../../../../../../../../../server/services/convert/FileConversionService.js";
17
16
  import EncryptionService from "../../../../../../../../../server/services/encryption/EncryptionService.js";
17
+ import ReplicaReader from "../../../../../../../../../server/services/replica/ReplicaReader.js";
18
18
  export default class default_1 extends Page {
19
19
  async run() {
20
20
  const { postID, type, fileID } = this;
21
21
  const emailID = this.ecs.general.decrypt(postID);
22
22
  const fileName = this.domain + "." + this.childPath[this.childPath.length - 1];
23
23
  // verify host ...
24
- const appFile = await this.db.appFiles
24
+ const appFile = await this.replica.query((db) => db.appFiles
25
25
  .where({ fileID, emailID }, (p) => (x) => x.appFileID === p.fileID
26
26
  && x.emailID === p.emailID)
27
27
  .include((x) => x.fileContent)
28
- .first();
28
+ .first());
29
+ if (!appFile) {
30
+ this.cacheControl = "public, max-age=600";
31
+ return this.notFound();
32
+ }
29
33
  this.cacheControl = "public, max-age=2592000, immutable";
30
34
  const file = await this.fcs.downloadConvertedFile({
31
35
  appFile,
@@ -48,8 +52,8 @@ __decorate([
48
52
  ], default_1.prototype, "fcs", void 0);
49
53
  __decorate([
50
54
  Inject,
51
- __metadata("design:type", SocialMailContext)
52
- ], default_1.prototype, "db", void 0);
55
+ __metadata("design:type", ReplicaReader)
56
+ ], default_1.prototype, "replica", void 0);
53
57
  __decorate([
54
58
  Inject,
55
59
  __metadata("design:type", EncryptionService)
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../../../src/wwwroot/routes/social-mail/c/d/[domain]/[type]/[postID]/[fileID]/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,MAAM,MAAM,4CAA4C,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,gDAAgD,CAAC;AACvE,OAAO,EAAE,IAAI,EAAE,MAAM,2CAA2C,CAAC;AACjE,OAAO,iBAAiB,MAAM,8DAA8D,CAAC;AAC7F,OAAO,qBAAqB,MAAM,6EAA6E,CAAC;AAChH,OAAO,iBAAiB,MAAM,4EAA4E,CAAC;AAE3G,MAAM,CAAC,OAAO,gBAAO,SAAQ,IAAI;IAuB7B,KAAK,CAAC,GAAG;QAEL,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAEtC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAQ,CAAC;QAExD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC;QAE7E,kBAAkB;QAClB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ;aACjC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAC7B,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,MAAM;eACrB,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,CACrC;aACA,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;aAC7B,KAAK,EAAE,CAAC;QAEb,IAAI,CAAC,YAAY,GAAG,oCAAoC,CAAC;QAEzD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC;YAC9C,OAAO;YACP,QAAQ;YACR,IAAI;SACP,CAAC,CAAC;QAEH,OAAO,IAAI,cAAc,CACrB,IAAI,EAAE;YACF,kBAAkB,EAAE,IAAI,KAAK,UAAU;gBACnC,CAAC,CAAC,YAAY;gBACd,CAAC,CAAC,QAAQ;YACd,SAAS,EAAE,IAAI;YACf,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,IAAI,CAAC,QAAQ;SACzB,CACJ,CAAC;IACN,CAAC;CACJ;AAxDW;IADP,MAAM;8BACM,qBAAqB;sCAAC;AAG3B;IADP,MAAM;8BACK,iBAAiB;qCAAC;AAGtB;IADP,MAAM;8BACM,iBAAiB;sCAAC;AAGvB;IADP,KAAK;;yCACiB;AAGf;IADP,KAAK;;uCACe;AAGb;IADP,KAAK;;yCACc;AAGZ;IADP,KAAK;;yCACc"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../../../src/wwwroot/routes/social-mail/c/d/[domain]/[type]/[postID]/[fileID]/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,MAAM,MAAM,4CAA4C,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,gDAAgD,CAAC;AACvE,OAAO,EAAE,IAAI,EAAE,MAAM,2CAA2C,CAAC;AACjE,OAAO,qBAAqB,MAAM,6EAA6E,CAAC;AAChH,OAAO,iBAAiB,MAAM,4EAA4E,CAAC;AAC3G,OAAO,aAAa,MAAM,qEAAqE,CAAC;AAEhG,MAAM,CAAC,OAAO,gBAAO,SAAQ,IAAI;IAuB7B,KAAK,CAAC,GAAG;QAEL,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAEtC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAQ,CAAC;QAExD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC;QAE7E,kBAAkB;QAClB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ;aACvD,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAC7B,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,MAAM;eACrB,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,CACrC;aACA,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;aAC7B,KAAK,EAAE,CAAC,CAAC;QAEd,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,GAAG,qBAAqB,CAAC;YAC1C,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC3B,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,oCAAoC,CAAC;QAEzD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC;YAC9C,OAAO;YACP,QAAQ;YACR,IAAI;SACP,CAAC,CAAC;QAEH,OAAO,IAAI,cAAc,CACrB,IAAI,EAAE;YACF,kBAAkB,EAAE,IAAI,KAAK,UAAU;gBACnC,CAAC,CAAC,YAAY;gBACd,CAAC,CAAC,QAAQ;YACd,SAAS,EAAE,IAAI;YACf,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,IAAI,CAAC,QAAQ;SACzB,CACJ,CAAC;IACN,CAAC;CACJ;AA7DW;IADP,MAAM;8BACM,qBAAqB;sCAAC;AAG3B;IADP,MAAM;8BACU,aAAa;0CAAC;AAGvB;IADP,MAAM;8BACM,iBAAiB;sCAAC;AAGvB;IADP,KAAK;;yCACiB;AAGf;IADP,KAAK;;uCACe;AAGb;IADP,KAAK;;yCACc;AAGZ;IADP,KAAK;;yCACc"}
@@ -1,12 +1,11 @@
1
- import { TempFileResult } from "@entity-access/server-pages/dist/Content.js";
2
1
  import Page from "@entity-access/server-pages/dist/Page.js";
3
2
  export default class extends Page {
4
3
  private fcs;
5
- private db;
4
+ private replica;
6
5
  private ecs;
7
6
  private eDomain;
8
7
  private type;
9
8
  private eFileContentID;
10
- run(): Promise<TempFileResult>;
9
+ run(): Promise<import("@entity-access/server-pages/dist/Content.js").default>;
11
10
  }
12
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/wwwroot/routes/social-mail/c/e/[eDomain]/[type]/[eFileContentID]/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAO5D,MAAM,CAAC,OAAO,MAAO,SAAQ,IAAI;IAG7B,OAAO,CAAC,GAAG,CAAwB;IAGnC,OAAO,CAAC,EAAE,CAAoB;IAG9B,OAAO,CAAC,GAAG,CAAoB;IAG/B,OAAO,CAAC,OAAO,CAAS;IAGxB,OAAO,CAAC,IAAI,CAAS;IAGrB,OAAO,CAAC,cAAc,CAAM;IAEtB,GAAG;CAsCZ"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/wwwroot/routes/social-mail/c/e/[eDomain]/[type]/[eFileContentID]/index.ts"],"names":[],"mappings":"AAEA,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAO5D,MAAM,CAAC,OAAO,MAAO,SAAQ,IAAI;IAG7B,OAAO,CAAC,GAAG,CAAwB;IAGnC,OAAO,CAAC,OAAO,CAAgB;IAG/B,OAAO,CAAC,GAAG,CAAoB;IAG/B,OAAO,CAAC,OAAO,CAAS;IAGxB,OAAO,CAAC,IAAI,CAAS;IAGrB,OAAO,CAAC,cAAc,CAAM;IAEtB,GAAG;CA2CZ"}
@@ -12,9 +12,9 @@ import { TempFileResult } from "@entity-access/server-pages/dist/Content.js";
12
12
  import Page from "@entity-access/server-pages/dist/Page.js";
13
13
  import { Route } from "@entity-access/server-pages/dist/core/Route.js";
14
14
  import { CORS } from "../../../../../../../../common/CORS.js";
15
- import SocialMailContext from "../../../../../../../../server/model/SocialMailContext.js";
16
15
  import FileConversionService from "../../../../../../../../server/services/convert/FileConversionService.js";
17
16
  import EncryptionService from "../../../../../../../../server/services/encryption/EncryptionService.js";
17
+ import ReplicaReader from "../../../../../../../../server/services/replica/ReplicaReader.js";
18
18
  export default class default_1 extends Page {
19
19
  async run() {
20
20
  const { type } = this;
@@ -22,10 +22,14 @@ export default class default_1 extends Page {
22
22
  const eFileContentID = this.ecs.general.decrypt(this.eFileContentID);
23
23
  const fileName = senderDomain + "." + this.childPath[this.childPath.length - 1];
24
24
  // verify host ...
25
- const appFile = await this.db.appFiles
25
+ const appFile = await this.replica.query((db) => db.appFiles
26
26
  .where({ eFileContentID }, (p) => (x) => x.fileContentID === p.eFileContentID)
27
27
  .include((x) => x.fileContent)
28
- .first();
28
+ .first());
29
+ if (!appFile) {
30
+ this.cacheControl = "public, max-age=600";
31
+ return this.notFound();
32
+ }
29
33
  this.cacheControl = "public, max-age=2592000, immutable";
30
34
  const file = await this.fcs.downloadConvertedFile({
31
35
  appFile,
@@ -49,8 +53,8 @@ __decorate([
49
53
  ], default_1.prototype, "fcs", void 0);
50
54
  __decorate([
51
55
  Inject,
52
- __metadata("design:type", SocialMailContext)
53
- ], default_1.prototype, "db", void 0);
56
+ __metadata("design:type", ReplicaReader)
57
+ ], default_1.prototype, "replica", void 0);
54
58
  __decorate([
55
59
  Inject,
56
60
  __metadata("design:type", EncryptionService)
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../../src/wwwroot/routes/social-mail/c/e/[eDomain]/[type]/[eFileContentID]/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,MAAM,MAAM,4CAA4C,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,gDAAgD,CAAC;AACvE,OAAO,EAAE,IAAI,EAAE,MAAM,wCAAwC,CAAC;AAC9D,OAAO,iBAAiB,MAAM,2DAA2D,CAAC;AAC1F,OAAO,qBAAqB,MAAM,0EAA0E,CAAC;AAC7G,OAAO,iBAAiB,MAAM,yEAAyE,CAAC;AAExG,MAAM,CAAC,OAAO,gBAAO,SAAQ,IAAI;IAoB7B,KAAK,CAAC,GAAG;QAEL,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;QAEtB,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE5D,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAQ,CAAC;QAE5E,MAAM,QAAQ,GAAG,YAAY,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC;QAE9E,kBAAkB;QAClB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ;aACjC,KAAK,CAAC,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAChC,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,cAAc,CAC3C;aACA,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;aAC7B,KAAK,EAAE,CAAC;QAEb,IAAI,CAAC,YAAY,GAAG,oCAAoC,CAAC;QAEzD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC;YAC9C,OAAO;YACP,QAAQ;YACR,YAAY;YACZ,IAAI;SACP,CAAC,CAAC;QAEH,OAAO,IAAI,cAAc,CACrB,IAAI,EAAE;YACF,kBAAkB,EAAE,IAAI,KAAK,UAAU;gBACnC,CAAC,CAAC,YAAY;gBACd,CAAC,CAAC,QAAQ;YACd,SAAS,EAAE,IAAI;YACf,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,IAAI,CAAC,QAAQ;SACzB,CACJ,CAAC;IACN,CAAC;CACJ;AAvDW;IADP,MAAM;8BACM,qBAAqB;sCAAC;AAG3B;IADP,MAAM;8BACK,iBAAiB;qCAAC;AAGtB;IADP,MAAM;8BACM,iBAAiB;sCAAC;AAGvB;IADP,KAAK;;0CACkB;AAGhB;IADP,KAAK;;uCACe;AAGb;IADP,KAAK;;iDACsB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../../src/wwwroot/routes/social-mail/c/e/[eDomain]/[type]/[eFileContentID]/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,MAAM,MAAM,4CAA4C,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,gDAAgD,CAAC;AACvE,OAAO,EAAE,IAAI,EAAE,MAAM,wCAAwC,CAAC;AAC9D,OAAO,qBAAqB,MAAM,0EAA0E,CAAC;AAC7G,OAAO,iBAAiB,MAAM,yEAAyE,CAAC;AACxG,OAAO,aAAa,MAAM,kEAAkE,CAAC;AAE7F,MAAM,CAAC,OAAO,gBAAO,SAAQ,IAAI;IAoB7B,KAAK,CAAC,GAAG;QAEL,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;QAEtB,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE5D,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAQ,CAAC;QAE5E,MAAM,QAAQ,GAAG,YAAY,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC;QAE9E,kBAAkB;QAClB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ;aACvD,KAAK,CAAC,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAChC,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,cAAc,CAC3C;aACA,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;aAC7B,KAAK,EAAE,CAAC,CAAC;QAEd,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,GAAG,qBAAqB,CAAC;YAC1C,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC3B,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,oCAAoC,CAAC;QAEzD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC;YAC9C,OAAO;YACP,QAAQ;YACR,YAAY;YACZ,IAAI;SACP,CAAC,CAAC;QAEH,OAAO,IAAI,cAAc,CACrB,IAAI,EAAE;YACF,kBAAkB,EAAE,IAAI,KAAK,UAAU;gBACnC,CAAC,CAAC,YAAY;gBACd,CAAC,CAAC,QAAQ;YACd,SAAS,EAAE,IAAI;YACf,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,IAAI,CAAC,QAAQ;SACzB,CACJ,CAAC;IACN,CAAC;CACJ;AA5DW;IADP,MAAM;8BACM,qBAAqB;sCAAC;AAG3B;IADP,MAAM;8BACU,aAAa;0CAAC;AAGvB;IADP,MAAM;8BACM,iBAAiB;sCAAC;AAGvB;IADP,KAAK;;0CACkB;AAGhB;IADP,KAAK;;uCACe;AAGb;IADP,KAAK;;iDACsB"}
@@ -1,10 +1,12 @@
1
1
  import Content from "@entity-access/server-pages/dist/Content.js";
2
2
  import Page from "@entity-access/server-pages/dist/Page.js";
3
3
  import SocialMailContext from "../../../../../../../server/model/SocialMailContext.js";
4
+ import ReplicaReader from "../../../../../../../server/services/replica/ReplicaReader.js";
4
5
  export default class UnsubscribePage extends Page {
5
6
  accessCode: string;
6
7
  activityID: string;
7
8
  db: SocialMailContext;
9
+ replica: ReplicaReader;
8
10
  run(): Promise<Content>;
9
11
  }
10
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../src/wwwroot/routes/social-mail/c/u/[activityID]/[accessCode]/index.tsx"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,6CAA6C,CAAC;AAIlE,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAC5D,OAAO,iBAAiB,MAAM,wDAAwD,CAAC;AAGvF,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,IAAI;IAG7C,UAAU,EAAE,MAAM,CAAC;IAGnB,UAAU,EAAE,MAAM,CAAC;IAGnB,EAAE,EAAE,iBAAiB,CAAC;IAEhB,GAAG;CAmDZ"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../src/wwwroot/routes/social-mail/c/u/[activityID]/[accessCode]/index.tsx"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,6CAA6C,CAAC;AAIlE,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAC5D,OAAO,iBAAiB,MAAM,wDAAwD,CAAC;AAEvF,OAAO,aAAa,MAAM,+DAA+D,CAAC;AAE1F,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,IAAI;IAG7C,UAAU,EAAE,MAAM,CAAC;IAGnB,UAAU,EAAE,MAAM,CAAC;IAGnB,EAAE,EAAE,iBAAiB,CAAC;IAGtB,OAAO,EAAE,aAAa,CAAC;IAEjB,GAAG;CAmDZ"}
@@ -15,12 +15,13 @@ import XNode from "@entity-access/server-pages/dist/html/XNode.js";
15
15
  import Page from "@entity-access/server-pages/dist/Page.js";
16
16
  import SocialMailContext from "../../../../../../../server/model/SocialMailContext.js";
17
17
  import { Base36 } from "../../../../../../../common/Base36.js";
18
+ import ReplicaReader from "../../../../../../../server/services/replica/ReplicaReader.js";
18
19
  export default class UnsubscribePage extends Page {
19
20
  async run() {
20
21
  const { accessCode, activityID } = this;
21
22
  const uid = Base36.decode(activityID);
22
- const sentActivity = await this.db.subscriberActivities.where({ uid, accessCode }, (p) => (x) => x.accessCode === p.accessCode
23
- && x.activityID === p.uid).first();
23
+ const sentActivity = await this.replica.query((db) => db.subscriberActivities.where({ uid, accessCode }, (p) => (x) => x.accessCode === p.accessCode
24
+ && x.activityID === p.uid).first());
24
25
  if (!sentActivity) {
25
26
  return Content.html(XNode.create(HtmlDocument, null,
26
27
  XNode.create("head", null,
@@ -57,4 +58,8 @@ __decorate([
57
58
  Inject,
58
59
  __metadata("design:type", SocialMailContext)
59
60
  ], UnsubscribePage.prototype, "db", void 0);
61
+ __decorate([
62
+ Inject,
63
+ __metadata("design:type", ReplicaReader)
64
+ ], UnsubscribePage.prototype, "replica", void 0);
60
65
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../src/wwwroot/routes/social-mail/c/u/[activityID]/[accessCode]/index.tsx"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,MAAM,MAAM,4CAA4C,CAAC;AAChE,OAAO,OAAO,MAAM,6CAA6C,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,MAAM,gDAAgD,CAAC;AACvE,OAAO,YAAY,MAAM,uDAAuD,CAAC;AACjF,OAAO,KAAK,MAAM,gDAAgD,CAAC;AACnE,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAC5D,OAAO,iBAAiB,MAAM,wDAAwD,CAAC;AACvF,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAE/D,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,IAAI;IAW7C,KAAK,CAAC,GAAG;QAEL,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QAExC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAQ,CAAC;QAE7C,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAC5F,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU;eAC1B,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,GAAG,CAC5B,CAAC,KAAK,EAAE,CAAC;QAEV,IAAI,CAAC,YAAY,EAAE,CAAC;YAChB,OAAO,OAAO,CAAC,IAAI,CAAC,aAAC,YAAY;gBAC7B;oBACI,iDAAiC,CAC9B;gBACP;oBACI;wBACI,4GAEU,CACP,CACJ,CACI,CAAC,CAAC;QACrB,CAAC;QAED,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,YAAY,CAAC;QAEnD,oCAAoC;QACpC,MAAM,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC;YAC5C,MAAM,EAAE,cAAc;SACzB,EAAE;YACC,SAAS;YACT,cAAc;SACjB,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,IAAI,CAAC,aAAC,YAAY;YAC7B;gBACI,qDAAqC,CAClC;YACP;gBACI;oBACI,4DAEU,CACP,CACJ,CACI,CAAC,CAAC;IACrB,CAAC;CAGJ;AA3DG;IADC,KAAK;;mDACa;AAGnB;IADC,KAAK;;mDACa;AAGnB;IADC,MAAM;8BACH,iBAAiB;2CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../src/wwwroot/routes/social-mail/c/u/[activityID]/[accessCode]/index.tsx"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,MAAM,MAAM,4CAA4C,CAAC;AAChE,OAAO,OAAO,MAAM,6CAA6C,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,MAAM,gDAAgD,CAAC;AACvE,OAAO,YAAY,MAAM,uDAAuD,CAAC;AACjF,OAAO,KAAK,MAAM,gDAAgD,CAAC;AACnE,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAC5D,OAAO,iBAAiB,MAAM,wDAAwD,CAAC;AACvF,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAC/D,OAAO,aAAa,MAAM,+DAA+D,CAAC;AAE1F,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,IAAI;IAc7C,KAAK,CAAC,GAAG;QAEL,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QAExC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAQ,CAAC;QAE7C,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAClH,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU;eAC1B,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,GAAG,CAC5B,CAAC,KAAK,EAAE,CAAC,CAAC;QAEX,IAAI,CAAC,YAAY,EAAE,CAAC;YAChB,OAAO,OAAO,CAAC,IAAI,CAAC,aAAC,YAAY;gBAC7B;oBACI,iDAAiC,CAC9B;gBACP;oBACI;wBACI,4GAEU,CACP,CACJ,CACI,CAAC,CAAC;QACrB,CAAC;QAED,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,YAAY,CAAC;QAEnD,oCAAoC;QACpC,MAAM,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC;YAC5C,MAAM,EAAE,cAAc;SACzB,EAAE;YACC,SAAS;YACT,cAAc;SACjB,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,IAAI,CAAC,aAAC,YAAY;YAC7B;gBACI,qDAAqC,CAClC;YACP;gBACI;oBACI,4DAEU,CACP,CACJ,CACI,CAAC,CAAC;IACrB,CAAC;CAGJ;AA9DG;IADC,KAAK;;mDACa;AAGnB;IADC,KAAK;;mDACa;AAGnB;IADC,MAAM;8BACH,iBAAiB;2CAAC;AAGtB;IADC,MAAM;8BACE,aAAa;gDAAC"}
@@ -2,7 +2,7 @@ import { TempFileResult } from "@entity-access/server-pages/dist/Content.js";
2
2
  import Page from "@entity-access/server-pages/dist/Page.js";
3
3
  export default class extends Page {
4
4
  private fcs;
5
- private db;
5
+ private replica;
6
6
  private ecs;
7
7
  private domain;
8
8
  private type;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/wwwroot/routes/social-mail/cd/[domain]/[type]/[postID]/[fileID]/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAS5D,MAAM,CAAC,OAAO,MAAO,SAAQ,IAAI;IAG7B,OAAO,CAAC,GAAG,CAAwB;IAGnC,OAAO,CAAC,EAAE,CAAoB;IAG9B,OAAO,CAAC,GAAG,CAAoB;IAG/B,OAAO,CAAC,MAAM,CAAS;IAGvB,OAAO,CAAC,IAAI,CAAS;IAGrB,OAAO,CAAC,MAAM,CAAM;IAGpB,OAAO,CAAC,MAAM,CAAM;IAEd,GAAG;CAoCZ"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/wwwroot/routes/social-mail/cd/[domain]/[type]/[postID]/[fileID]/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAS5D,MAAM,CAAC,OAAO,MAAO,SAAQ,IAAI;IAG7B,OAAO,CAAC,GAAG,CAAwB;IAGnC,OAAO,CAAC,OAAO,CAAgB;IAG/B,OAAO,CAAC,GAAG,CAAoB;IAG/B,OAAO,CAAC,MAAM,CAAS;IAGvB,OAAO,CAAC,IAAI,CAAS;IAGrB,OAAO,CAAC,MAAM,CAAM;IAGpB,OAAO,CAAC,MAAM,CAAM;IAEd,GAAG;CAoCZ"}
@@ -13,20 +13,20 @@ import Page from "@entity-access/server-pages/dist/Page.js";
13
13
  import { Prepare } from "@entity-access/server-pages/dist/decorators/Prepare.js";
14
14
  import { Route } from "@entity-access/server-pages/dist/core/Route.js";
15
15
  import { CORS } from "../../../../../../../../common/CORS.js";
16
- import SocialMailContext from "../../../../../../../../server/model/SocialMailContext.js";
17
16
  import FileConversionService from "../../../../../../../../server/services/convert/FileConversionService.js";
18
17
  import EncryptionService from "../../../../../../../../server/services/encryption/EncryptionService.js";
18
+ import ReplicaReader from "../../../../../../../../server/services/replica/ReplicaReader.js";
19
19
  let default_1 = class extends Page {
20
20
  async run() {
21
21
  const { postID, type, fileID } = this;
22
22
  const emailID = this.ecs.general.decrypt(postID);
23
23
  const fileName = this.domain + "." + this.childPath[this.childPath.length - 1];
24
24
  // verify host ...
25
- const appFile = await this.db.appFiles
25
+ const appFile = await this.replica.query((db) => db.appFiles
26
26
  .where({ fileID, emailID }, (p) => (x) => x.appFileID === p.fileID
27
27
  && x.emailID === p.emailID)
28
28
  .include((x) => x.fileContent)
29
- .first();
29
+ .first());
30
30
  this.cacheControl = "public, max-age=2592000, immutable";
31
31
  const file = await this.fcs.downloadConvertedFile({
32
32
  appFile,
@@ -49,8 +49,8 @@ __decorate([
49
49
  ], default_1.prototype, "fcs", void 0);
50
50
  __decorate([
51
51
  Inject,
52
- __metadata("design:type", SocialMailContext)
53
- ], default_1.prototype, "db", void 0);
52
+ __metadata("design:type", ReplicaReader)
53
+ ], default_1.prototype, "replica", void 0);
54
54
  __decorate([
55
55
  Inject,
56
56
  __metadata("design:type", EncryptionService)
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../../src/wwwroot/routes/social-mail/cd/[domain]/[type]/[postID]/[fileID]/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,MAAM,MAAM,4CAA4C,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,wDAAwD,CAAC;AACjF,OAAO,EAAE,KAAK,EAAE,MAAM,gDAAgD,CAAC;AACvE,OAAO,EAAE,IAAI,EAAE,MAAM,wCAAwC,CAAC;AAC9D,OAAO,iBAAiB,MAAM,2DAA2D,CAAC;AAC1F,OAAO,qBAAqB,MAAM,0EAA0E,CAAC;AAC7G,OAAO,iBAAiB,MAAM,yEAAyE,CAAC;AAGzF,gBAAA,KAAM,SAAQ,IAAI;IAuB7B,KAAK,CAAC,GAAG;QAEL,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAEtC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAQ,CAAC;QAExD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC;QAE7E,kBAAkB;QAClB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ;aACjC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAC7B,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,MAAM;eACrB,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,CACrC;aACA,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;aAC7B,KAAK,EAAE,CAAC;QAEb,IAAI,CAAC,YAAY,GAAG,oCAAoC,CAAC;QAEzD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC;YAC9C,OAAO;YACP,QAAQ;YACR,IAAI;SACP,CAAC,CAAC;QAEH,OAAO,IAAI,cAAc,CACrB,IAAI,EAAE;YACF,kBAAkB,EAAE,IAAI,KAAK,UAAU;gBACnC,CAAC,CAAC,YAAY;gBACd,CAAC,CAAC,QAAQ;YACd,SAAS,EAAE,IAAI;YACf,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,IAAI,CAAC,QAAQ;SACzB,CACJ,CAAC;IACN,CAAC;CACJ,CAAA;AAxDW;IADP,MAAM;8BACM,qBAAqB;sCAAC;AAG3B;IADP,MAAM;8BACK,iBAAiB;qCAAC;AAGtB;IADP,MAAM;8BACM,iBAAiB;sCAAC;AAGvB;IADP,KAAK;;yCACiB;AAGf;IADP,KAAK;;uCACe;AAGb;IADP,KAAK;;yCACc;AAGZ;IADP,KAAK;;yCACc;AArBT;IADd,OAAO,CAAC,SAAS;aA4DjB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../../src/wwwroot/routes/social-mail/cd/[domain]/[type]/[postID]/[fileID]/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,MAAM,MAAM,4CAA4C,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,wDAAwD,CAAC;AACjF,OAAO,EAAE,KAAK,EAAE,MAAM,gDAAgD,CAAC;AACvE,OAAO,EAAE,IAAI,EAAE,MAAM,wCAAwC,CAAC;AAC9D,OAAO,qBAAqB,MAAM,0EAA0E,CAAC;AAC7G,OAAO,iBAAiB,MAAM,yEAAyE,CAAC;AACxG,OAAO,aAAa,MAAM,kEAAkE,CAAC;AAG9E,gBAAA,KAAM,SAAQ,IAAI;IAuB7B,KAAK,CAAC,GAAG;QAEL,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAEtC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAQ,CAAC;QAExD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC;QAE7E,kBAAkB;QAClB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ;aACvD,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAC7B,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,MAAM;eACrB,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,CACrC;aACA,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;aAC7B,KAAK,EAAE,CAAC,CAAC;QAEd,IAAI,CAAC,YAAY,GAAG,oCAAoC,CAAC;QAEzD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC;YAC9C,OAAO;YACP,QAAQ;YACR,IAAI;SACP,CAAC,CAAC;QAEH,OAAO,IAAI,cAAc,CACrB,IAAI,EAAE;YACF,kBAAkB,EAAE,IAAI,KAAK,UAAU;gBACnC,CAAC,CAAC,YAAY;gBACd,CAAC,CAAC,QAAQ;YACd,SAAS,EAAE,IAAI;YACf,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,IAAI,CAAC,QAAQ;SACzB,CACJ,CAAC;IACN,CAAC;CACJ,CAAA;AAxDW;IADP,MAAM;8BACM,qBAAqB;sCAAC;AAG3B;IADP,MAAM;8BACU,aAAa;0CAAC;AAGvB;IADP,MAAM;8BACM,iBAAiB;sCAAC;AAGvB;IADP,KAAK;;yCACiB;AAGf;IADP,KAAK;;uCACe;AAGb;IADP,KAAK;;yCACc;AAGZ;IADP,KAAK;;yCACc;AArBT;IADd,OAAO,CAAC,SAAS;aA4DjB"}
@@ -1,14 +1,13 @@
1
- import { TempFileResult } from "@entity-access/server-pages/dist/Content.js";
2
1
  import Page from "@entity-access/server-pages/dist/Page.js";
3
2
  export default class extends Page {
4
3
  private fcs;
5
- private db;
4
+ private replica;
6
5
  private sessionSecurity;
7
6
  private ecs;
8
7
  private eFileID;
9
8
  private type;
10
9
  private eFileContentID;
11
10
  private name;
12
- run(): Promise<TempFileResult>;
11
+ run(): Promise<import("@entity-access/server-pages/dist/Content.js").default>;
13
12
  }
14
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/wwwroot/routes/social-mail/fd/[type]/[eFileID]/[eFileContentID]/[name]/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAU5D,MAAM,CAAC,OAAO,MAAO,SAAQ,IAAI;IAG7B,OAAO,CAAC,GAAG,CAAwB;IAGnC,OAAO,CAAC,EAAE,CAAoB;IAG9B,OAAO,CAAC,eAAe,CAAkB;IAGzC,OAAO,CAAC,GAAG,CAAoB;IAG/B,OAAO,CAAC,OAAO,CAAS;IAGxB,OAAO,CAAC,IAAI,CAAS;IAGrB,OAAO,CAAC,cAAc,CAAM;IAG5B,OAAO,CAAC,IAAI,CAAM;IAEZ,GAAG;CA+BZ"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/wwwroot/routes/social-mail/fd/[type]/[eFileID]/[eFileContentID]/[name]/index.ts"],"names":[],"mappings":"AAEA,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAU5D,MAAM,CAAC,OAAO,MAAO,SAAQ,IAAI;IAG7B,OAAO,CAAC,GAAG,CAAwB;IAGnC,OAAO,CAAC,OAAO,CAAgB;IAG/B,OAAO,CAAC,eAAe,CAAkB;IAGzC,OAAO,CAAC,GAAG,CAAoB;IAG/B,OAAO,CAAC,OAAO,CAAS;IAGxB,OAAO,CAAC,IAAI,CAAS;IAGrB,OAAO,CAAC,cAAc,CAAM;IAG5B,OAAO,CAAC,IAAI,CAAM;IAEZ,GAAG;CAmCZ"}
@@ -13,16 +13,20 @@ import Page from "@entity-access/server-pages/dist/Page.js";
13
13
  import { Prepare } from "@entity-access/server-pages/dist/decorators/Prepare.js";
14
14
  import { Route } from "@entity-access/server-pages/dist/core/Route.js";
15
15
  import { CORS } from "../../../../../../../../common/CORS.js";
16
- import SocialMailContext from "../../../../../../../../server/model/SocialMailContext.js";
17
16
  import FileConversionService from "../../../../../../../../server/services/convert/FileConversionService.js";
18
17
  import EncryptionService from "../../../../../../../../server/services/encryption/EncryptionService.js";
19
18
  import SessionSecurity from "@entity-access/server-pages/dist/services/SessionSecurity.js";
19
+ import ReplicaReader from "../../../../../../../../server/services/replica/ReplicaReader.js";
20
20
  let default_1 = class extends Page {
21
21
  async run() {
22
22
  const keys = this.sessionSecurity.decryptKey(this.eFileID);
23
23
  const fileContentID = this.ecs.general.decrypt(this.eFileContentID);
24
24
  const { type } = this;
25
- const appFile = await this.db.appFiles.loadByKeys(keys);
25
+ const appFile = await this.replica.query((db) => db.appFiles.loadByKeys(keys));
26
+ if (!appFile) {
27
+ this.cacheControl = "public, max-age=300";
28
+ return this.notFound();
29
+ }
26
30
  this.cacheControl = "public, max-age=2592000, immutable";
27
31
  const file = await this.fcs.downloadConvertedFile({
28
32
  appFile,
@@ -46,8 +50,8 @@ __decorate([
46
50
  ], default_1.prototype, "fcs", void 0);
47
51
  __decorate([
48
52
  Inject,
49
- __metadata("design:type", SocialMailContext)
50
- ], default_1.prototype, "db", void 0);
53
+ __metadata("design:type", ReplicaReader)
54
+ ], default_1.prototype, "replica", void 0);
51
55
  __decorate([
52
56
  Inject,
53
57
  __metadata("design:type", SessionSecurity)
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../../src/wwwroot/routes/social-mail/fd/[type]/[eFileID]/[eFileContentID]/[name]/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,MAAM,MAAM,4CAA4C,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,wDAAwD,CAAC;AACjF,OAAO,EAAE,KAAK,EAAE,MAAM,gDAAgD,CAAC;AACvE,OAAO,EAAE,IAAI,EAAE,MAAM,wCAAwC,CAAC;AAC9D,OAAO,iBAAiB,MAAM,2DAA2D,CAAC;AAC1F,OAAO,qBAAqB,MAAM,0EAA0E,CAAC;AAC7G,OAAO,iBAAiB,MAAM,yEAAyE,CAAC;AACxG,OAAO,eAAe,MAAM,8DAA8D,CAAC;AAG5E,gBAAA,KAAM,SAAQ,IAAI;IA0B7B,KAAK,CAAC,GAAG;QAEL,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE3D,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAQ,CAAC;QAE3E,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;QAEtB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAGxD,IAAI,CAAC,YAAY,GAAG,oCAAoC,CAAC;QAEzD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC;YAC9C,OAAO;YACP,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,IAAI;YACJ,aAAa;SAChB,CAAC,CAAC;QAEH,OAAO,IAAI,cAAc,CACrB,IAAI,EAAE;YACF,kBAAkB,EAAE,IAAI,KAAK,UAAU;gBACnC,CAAC,CAAC,YAAY;gBACd,CAAC,CAAC,QAAQ;YACd,SAAS,EAAE,IAAI;YACf,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,IAAI,CAAC,QAAQ;SACzB,CACJ,CAAC;IACN,CAAC;CACJ,CAAA;AAtDW;IADP,MAAM;8BACM,qBAAqB;sCAAC;AAG3B;IADP,MAAM;8BACK,iBAAiB;qCAAC;AAGtB;IADP,MAAM;8BACkB,eAAe;kDAAC;AAGjC;IADP,MAAM;8BACM,iBAAiB;sCAAC;AAGvB;IADP,KAAK;;0CACkB;AAGhB;IADP,KAAK;;uCACe;AAGb;IADP,KAAK;;iDACsB;AAGpB;IADP,KAAK;;uCACY;AAxBP;IADd,OAAO,CAAC,SAAS;aA0DjB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../../src/wwwroot/routes/social-mail/fd/[type]/[eFileID]/[eFileContentID]/[name]/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,MAAM,MAAM,4CAA4C,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,wDAAwD,CAAC;AACjF,OAAO,EAAE,KAAK,EAAE,MAAM,gDAAgD,CAAC;AACvE,OAAO,EAAE,IAAI,EAAE,MAAM,wCAAwC,CAAC;AAC9D,OAAO,qBAAqB,MAAM,0EAA0E,CAAC;AAC7G,OAAO,iBAAiB,MAAM,yEAAyE,CAAC;AACxG,OAAO,eAAe,MAAM,8DAA8D,CAAC;AAC3F,OAAO,aAAa,MAAM,kEAAkE,CAAC;AAG9E,gBAAA,KAAM,SAAQ,IAAI;IA0B7B,KAAK,CAAC,GAAG;QAEL,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE3D,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAQ,CAAC;QAE3E,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;QAEtB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAE/E,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,GAAG,qBAAqB,CAAC;YAC1C,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC3B,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,oCAAoC,CAAC;QAEzD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC;YAC9C,OAAO;YACP,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,IAAI;YACJ,aAAa;SAChB,CAAC,CAAC;QAEH,OAAO,IAAI,cAAc,CACrB,IAAI,EAAE;YACF,kBAAkB,EAAE,IAAI,KAAK,UAAU;gBACnC,CAAC,CAAC,YAAY;gBACd,CAAC,CAAC,QAAQ;YACd,SAAS,EAAE,IAAI;YACf,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,IAAI,CAAC,QAAQ;SACzB,CACJ,CAAC;IACN,CAAC;CACJ,CAAA;AA1DW;IADP,MAAM;8BACM,qBAAqB;sCAAC;AAG3B;IADP,MAAM;8BACU,aAAa;0CAAC;AAGvB;IADP,MAAM;8BACkB,eAAe;kDAAC;AAGjC;IADP,MAAM;8BACM,iBAAiB;sCAAC;AAGvB;IADP,KAAK;;0CACkB;AAGhB;IADP,KAAK;;uCACe;AAGb;IADP,KAAK;;iDACsB;AAGpB;IADP,KAAK;;uCACY;AAxBP;IADd,OAAO,CAAC,SAAS;aA8DjB"}
@@ -1,6 +1,7 @@
1
1
  import Page from "@entity-access/server-pages/dist/Page.js";
2
2
  import SocialMailContext from "../../../../../server/model/SocialMailContext.js";
3
3
  import UnreadCountService from "../../../../../server/services/emails/UnreadCountService.js";
4
+ import ReplicaReader from "../../../../../server/services/replica/ReplicaReader.js";
4
5
  /**
5
6
  * Simple Social Mail Tracker
6
7
  *
@@ -18,6 +19,7 @@ import UnreadCountService from "../../../../../server/services/emails/UnreadCoun
18
19
  */
19
20
  export default class extends Page {
20
21
  static canHandle(): boolean;
22
+ replica: ReplicaReader;
21
23
  db: SocialMailContext;
22
24
  ucr: UnreadCountService;
23
25
  run(): Promise<import("@entity-access/server-pages/dist/Content.js").default>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/wwwroot/routes/social-mail/social/t/index.tsx"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAG5D,OAAO,iBAAiB,MAAM,kDAAkD,CAAC;AACjF,OAAO,kBAAkB,MAAM,6DAA6D,CAAC;AAI7F;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,OAAO,MAAO,SAAQ,IAAI;IAE7B,MAAM,CAAC,SAAS;IAKhB,EAAE,EAAE,iBAAiB,CAAC;IAGtB,GAAG,EAAE,kBAAkB,CAAC;IAGlB,GAAG;CA6BZ"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/wwwroot/routes/social-mail/social/t/index.tsx"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAG5D,OAAO,iBAAiB,MAAM,kDAAkD,CAAC;AACjF,OAAO,kBAAkB,MAAM,6DAA6D,CAAC;AAC7F,OAAO,aAAa,MAAM,yDAAyD,CAAC;AAIpF;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,OAAO,MAAO,SAAQ,IAAI;IAE7B,MAAM,CAAC,SAAS;IAKhB,OAAO,EAAE,aAAa,CAAC;IAGvB,EAAE,EAAE,iBAAiB,CAAC;IAGtB,GAAG,EAAE,kBAAkB,CAAC;IAGlB,GAAG;CA+BZ"}
@@ -12,6 +12,7 @@ import { Base36 } from "../../../../../common/Base36.js";
12
12
  import Inject from "@entity-access/entity-access/dist/di/di.js";
13
13
  import SocialMailContext from "../../../../../server/model/SocialMailContext.js";
14
14
  import UnreadCountService from "../../../../../server/services/emails/UnreadCountService.js";
15
+ import ReplicaReader from "../../../../../server/services/replica/ReplicaReader.js";
15
16
  const body = Buffer.from("R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==", "base64");
16
17
  /**
17
18
  * Simple Social Mail Tracker
@@ -34,14 +35,15 @@ export default class default_1 extends Page {
34
35
  }
35
36
  // send 1x1 gif
36
37
  async run() {
37
- const { db } = this;
38
38
  const [_p0, p1] = this.childPath;
39
- db.verifyFilters = false;
40
39
  const activityID = Base36.decode(p1);
41
40
  if (activityID) {
42
- const activity = await db.subscriberActivities
43
- .where({ activityID }, (p) => (x) => x.activityID === p.activityID)
44
- .first();
41
+ const activity = await this.replica.query((db) => {
42
+ db.verifyFilters = false;
43
+ return db.subscriberActivities
44
+ .where({ activityID }, (p) => (x) => x.activityID === p.activityID)
45
+ .first();
46
+ });
45
47
  if (!activity) {
46
48
  return;
47
49
  }
@@ -49,7 +51,7 @@ export default class default_1 extends Page {
49
51
  delete activity.activityID;
50
52
  activity.activity = "view";
51
53
  activity.ipAddress = this.request?.remoteIPAddress?.slice(0, 49);
52
- await this.db.subscriberActivities.statements.insert(activity);
54
+ await this.db.subscriberActivities.statements.insert({ ...activity });
53
55
  }
54
56
  this.cacheControl = "public, max-age=860000";
55
57
  return this.content({
@@ -58,6 +60,10 @@ export default class default_1 extends Page {
58
60
  });
59
61
  }
60
62
  }
63
+ __decorate([
64
+ Inject,
65
+ __metadata("design:type", ReplicaReader)
66
+ ], default_1.prototype, "replica", void 0);
61
67
  __decorate([
62
68
  Inject,
63
69
  __metadata("design:type", SocialMailContext)
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/wwwroot/routes/social-mail/social/t/index.tsx"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AACzD,OAAO,MAAM,MAAM,4CAA4C,CAAC;AAChE,OAAO,iBAAiB,MAAM,kDAAkD,CAAC;AACjF,OAAO,kBAAkB,MAAM,6DAA6D,CAAC;AAE7F,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,8DAA8D,EAAE,QAAQ,CAAC,CAAC;AAEnG;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,OAAO,gBAAO,SAAQ,IAAI;IAE7B,MAAM,CAAC,SAAS;QACZ,OAAO,IAAI,CAAC;IAChB,CAAC;IAQD,eAAe;IACf,KAAK,CAAC,GAAG;QAEL,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QAEpB,MAAM,CAAE,GAAG,EAAE,EAAE,CAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAEnC,EAAE,CAAC,aAAa,GAAG,KAAK,CAAC;QACzB,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAQ,CAAC;QAE5C,IAAI,UAAU,EAAE,CAAC;YACb,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,oBAAoB;iBACzC,KAAK,CAAC,EAAE,UAAU,EAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU,CAAC;iBACjE,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACZ,OAAO;YACX,CAAC;YACD,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACpC,OAAO,QAAQ,CAAC,UAAU,CAAC;YAC3B,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC;YAC3B,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACjE,MAAM,IAAI,CAAC,EAAE,CAAC,oBAAoB,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,wBAAwB,CAAC;QAC7C,OAAO,IAAI,CAAC,OAAO,CAAC;YAChB,IAAI;YACJ,WAAW,EAAE,WAAW;SAC3B,CAAC,CAAC;IACP,CAAC;CAEJ;AAnCG;IADC,MAAM;8BACH,iBAAiB;qCAAC;AAGtB;IADC,MAAM;8BACF,kBAAkB;sCAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/wwwroot/routes/social-mail/social/t/index.tsx"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AACzD,OAAO,MAAM,MAAM,4CAA4C,CAAC;AAChE,OAAO,iBAAiB,MAAM,kDAAkD,CAAC;AACjF,OAAO,kBAAkB,MAAM,6DAA6D,CAAC;AAC7F,OAAO,aAAa,MAAM,yDAAyD,CAAC;AAEpF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,8DAA8D,EAAE,QAAQ,CAAC,CAAC;AAEnG;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,OAAO,gBAAO,SAAQ,IAAI;IAE7B,MAAM,CAAC,SAAS;QACZ,OAAO,IAAI,CAAC;IAChB,CAAC;IAWD,eAAe;IACf,KAAK,CAAC,GAAG;QAGL,MAAM,CAAE,GAAG,EAAE,EAAE,CAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAEnC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAQ,CAAC;QAE5C,IAAI,UAAU,EAAE,CAAC;YACb,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE;gBAC7C,EAAE,CAAC,aAAa,GAAG,KAAK,CAAC;gBAEzB,OAAO,EAAE,CAAC,oBAAoB;qBAC7B,KAAK,CAAC,EAAE,UAAU,EAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU,CAAC;qBACjE,KAAK,EAAE,CAAC;YACb,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACZ,OAAO;YACX,CAAC;YACD,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACpC,OAAO,QAAQ,CAAC,UAAU,CAAC;YAC3B,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC;YAC3B,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACjE,MAAM,IAAI,CAAC,EAAE,CAAC,oBAAoB,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,GAAI,QAAQ,EAAE,CAAC,CAAC;QAC3E,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,wBAAwB,CAAC;QAC7C,OAAO,IAAI,CAAC,OAAO,CAAC;YAChB,IAAI;YACJ,WAAW,EAAE,WAAW;SAC3B,CAAC,CAAC;IACP,CAAC;CAEJ;AAxCG;IADC,MAAM;8BACE,aAAa;0CAAC;AAGvB;IADC,MAAM;8BACH,iBAAiB;qCAAC;AAGtB;IADC,MAAM;8BACF,kBAAkB;sCAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@social-mail/social-mail-web-server",
3
- "version": "1.8.422",
3
+ "version": "1.8.424",
4
4
  "description": "## Phase 1",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -0,0 +1,34 @@
1
+ import Inject, { RegisterScoped } from "@entity-access/entity-access/dist/di/di.js";
2
+ import ReadOnlySocialMailContext from "../../model/ReadOnlySocialMailContext.js";
3
+ import SocialMailContext from "../../model/SocialMailContext.js";
4
+ import { globalEnv } from "../../../common/globalEnv.js";
5
+
6
+ @RegisterScoped
7
+ export default class ReplicaReader {
8
+
9
+ @Inject
10
+ private replica: ReadOnlySocialMailContext;
11
+
12
+ @Inject
13
+ private db: SocialMailContext;
14
+
15
+ async query<T>(fx: (x: SocialMailContext) => Promise<T>): Promise<T> {
16
+
17
+ if (globalEnv.db.readOnlyReplica === globalEnv.db.host) {
18
+ return fx(this.db);
19
+ }
20
+
21
+ const result = await fx(this.replica);
22
+ if (result) {
23
+ if (Array.isArray(result)) {
24
+ if (result.length) {
25
+ return result;
26
+ }
27
+ } else {
28
+ return result;
29
+ }
30
+ }
31
+ return await fx(this.db);
32
+ }
33
+
34
+ }