@social-mail/social-mail-web-server 1.8.400 → 1.8.401

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 (25) hide show
  1. package/dist/WebServer.d.ts.map +1 -1
  2. package/dist/WebServer.js +2 -0
  3. package/dist/WebServer.js.map +1 -1
  4. package/dist/common/globalEnv.d.ts +1 -0
  5. package/dist/common/globalEnv.d.ts.map +1 -1
  6. package/dist/common/globalEnv.js +1 -0
  7. package/dist/common/globalEnv.js.map +1 -1
  8. package/dist/server/model/ReadOnlySocialMailContext.d.ts +5 -0
  9. package/dist/server/model/ReadOnlySocialMailContext.d.ts.map +1 -0
  10. package/dist/server/model/ReadOnlySocialMailContext.js +19 -0
  11. package/dist/server/model/ReadOnlySocialMailContext.js.map +1 -0
  12. package/dist/server/services/cache/CacheService.d.ts +1 -0
  13. package/dist/server/services/cache/CacheService.d.ts.map +1 -1
  14. package/dist/server/services/cache/CacheService.js +6 -1
  15. package/dist/server/services/cache/CacheService.js.map +1 -1
  16. package/dist/tsconfig.tsbuildinfo +1 -1
  17. package/dist/wwwroot/routes/social-mail/site/snapshot/[type]/[eSiteID]/[eFileContentID]/[name]/index.d.ts.map +1 -1
  18. package/dist/wwwroot/routes/social-mail/site/snapshot/[type]/[eSiteID]/[eFileContentID]/[name]/index.js +1 -0
  19. package/dist/wwwroot/routes/social-mail/site/snapshot/[type]/[eSiteID]/[eFileContentID]/[name]/index.js.map +1 -1
  20. package/package.json +1 -1
  21. package/src/WebServer.ts +3 -0
  22. package/src/common/globalEnv.ts +1 -0
  23. package/src/server/model/ReadOnlySocialMailContext.ts +22 -0
  24. package/src/server/services/cache/CacheService.ts +5 -1
  25. package/src/wwwroot/routes/social-mail/site/snapshot/[type]/[eSiteID]/[eFileContentID]/[name]/index.ts +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/wwwroot/routes/social-mail/site/snapshot/[type]/[eSiteID]/[eFileContentID]/[name]/index.ts"],"names":[],"mappings":"AAEA,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAQ5D;;;;GAIG;AACH,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,IAAI,CAAS;IAGrB,OAAO,CAAC,OAAO,CAAM;IAGrB,OAAO,CAAC,cAAc,CAAM;IAG5B,OAAO,CAAC,IAAI,CAAM;IAEZ,GAAG;IAwCH,YAAY,CAAC,MAAM,KAAA,EAAE,aAAa,KAAA,EAAE,SAAS,SAAI;CA0B1D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/wwwroot/routes/social-mail/site/snapshot/[type]/[eSiteID]/[eFileContentID]/[name]/index.ts"],"names":[],"mappings":"AAEA,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAQ5D;;;;GAIG;AACH,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,IAAI,CAAS;IAGrB,OAAO,CAAC,OAAO,CAAM;IAGrB,OAAO,CAAC,cAAc,CAAM;IAG5B,OAAO,CAAC,IAAI,CAAM;IAEZ,GAAG;IAyCH,YAAY,CAAC,MAAM,KAAA,EAAE,aAAa,KAAA,EAAE,SAAS,SAAI;CA0B1D"}
@@ -28,6 +28,7 @@ export default class default_1 extends Page {
28
28
  const { type } = this;
29
29
  const appFile = await this.getAppFileID(siteID, fileContentID);
30
30
  if (!appFile) {
31
+ this.cacheControl = "no-cache, max-age=0";
31
32
  return this.notFound();
32
33
  }
33
34
  this.cacheControl = "public, max-age=2592000, immutable";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../../../src/wwwroot/routes/social-mail/site/snapshot/[type]/[eSiteID]/[eFileContentID]/[name]/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../../../src/wwwroot/routes/social-mail/site/snapshot/[type]/[eSiteID]/[eFileContentID]/[name]/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@social-mail/social-mail-web-server",
3
- "version": "1.8.400",
3
+ "version": "1.8.401",
4
4
  "description": "## Phase 1",
5
5
  "main": "index.js",
6
6
  "type": "module",
package/src/WebServer.ts CHANGED
@@ -57,6 +57,7 @@ import ReportDbContext from "./reports/model/ReportDbContext.js";
57
57
  import ReportDbContextEvents from "./reports/model/ReportDbContextEvents.js";
58
58
  import ContextEvents from "@entity-access/entity-access/dist/model/events/ContextEvents.js";
59
59
  import ReportWorkflowContext from "./reports/workflows/ReportWorkflowContext.js";
60
+ import ReadOnlySocialMailContext from "./server/model/ReadOnlySocialMailContext.js";
60
61
 
61
62
  ServiceCollection.registerMultiple("Singleton", [SecureContextService, SocialSecureContextService], SocialSecureContextService);
62
63
 
@@ -251,6 +252,8 @@ export default class WebServer {
251
252
  ServiceCollection.register("Scoped", ReportDbContext);
252
253
  ServiceCollection.register("Singleton", ReportWorkflowContext);
253
254
 
255
+ ServiceCollection.register("Scoped", ReadOnlySocialMailContext);
256
+
254
257
  ServiceCollection.registerMultiple("Scoped", [ AppDbContext, SocialMailContext], SocialMailContext);
255
258
  ServiceCollection.register("Scoped", UserInfoProvider);
256
259
  ServiceCollection.registerMultiple("Singleton", [AppSocketService, SocketService], AppSocketService);
@@ -26,6 +26,7 @@ const db = {
26
26
  ssl: JSON.parse(process.env.SOCIAL_MAIL_DB_SSL ?? "true"),
27
27
  user: process.env.SOCIAL_MAIL_DB_USER ?? "postgres",
28
28
  password: process.env.SOCIAL_MAIL_DB_PASSWORD ?? "abcd123",
29
+ readOnlyReplica: process.env.SOCIAL_MAIL_DB_READ_ONLY_REPLICA ?? process.env.SOCIAL_MAIL_DB_SERVER ?? "postgres",
29
30
  };
30
31
 
31
32
  const host = process.env.SOCIAL_MAIL_HOST;
@@ -0,0 +1,22 @@
1
+ import PostgreSqlDriver from "@entity-access/entity-access/dist/drivers/postgres/PostgreSqlDriver.js";
2
+ import SocialMailContext from "./SocialMailContext.js";
3
+ import { globalEnv } from "../../common/globalEnv.js";
4
+
5
+ const driver = new PostgreSqlDriver({
6
+ host: globalEnv.db.readOnlyReplica,
7
+ port: globalEnv.db.port,
8
+ ssl: globalEnv.db.ssl,
9
+ database: globalEnv.db.database,
10
+ user: globalEnv.db.user,
11
+ password: globalEnv.db.password,
12
+ /** Since we are going to use cluster, a single worker should not hold more than 10 connections */
13
+ poolSize: 10
14
+ });
15
+
16
+ export default class ReadOnlySocialMailContext extends SocialMailContext {
17
+
18
+ constructor(_, events, logger) {
19
+ super(driver, events, logger);
20
+ }
21
+
22
+ }
@@ -14,6 +14,7 @@ import EntityAccessError from "@entity-access/entity-access/dist/common/EntityAc
14
14
  import { appendFile } from "fs/promises";
15
15
  import DbLockService from "../db-lock/DbLockService.js";
16
16
  import RateLimiterService from "../rate-limiter/RateLimiterService.js";
17
+ import ReadOnlySocialMailContext from "../../model/ReadOnlySocialMailContext.js";
17
18
 
18
19
  export class CachedFile implements Disposable {
19
20
 
@@ -38,6 +39,9 @@ export default class CacheService {
38
39
  @Inject
39
40
  private db: SocialMailContext;
40
41
 
42
+ @Inject
43
+ private replica: ReadOnlySocialMailContext;
44
+
41
45
  @Inject
42
46
  private storage: BaseStorage;
43
47
 
@@ -146,7 +150,7 @@ export default class CacheService {
146
150
 
147
151
  const expiry = now.add(ttl);
148
152
 
149
- let cachedItem = await this.db.cachedItems.statements.select({}, keys);
153
+ let cachedItem = await this.replica.cachedItems.statements.select({}, keys);
150
154
  if (cachedItem?.ready) {
151
155
  if(DateTime.from(cachedItem.expiry).msSinceEpoch > Date.now()) {
152
156
  if (cachedItem.slide) {
@@ -47,6 +47,7 @@ export default class extends Page {
47
47
  const appFile = await this.getAppFileID(siteID, fileContentID);
48
48
 
49
49
  if (!appFile) {
50
+ this.cacheControl = "no-cache, max-age=0";
50
51
  return this.notFound();
51
52
  }
52
53