@social-mail/social-mail-web-server 1.8.399 → 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.
- package/dist/WebServer.d.ts.map +1 -1
- package/dist/WebServer.js +2 -0
- package/dist/WebServer.js.map +1 -1
- package/dist/common/globalEnv.d.ts +1 -0
- package/dist/common/globalEnv.d.ts.map +1 -1
- package/dist/common/globalEnv.js +1 -0
- package/dist/common/globalEnv.js.map +1 -1
- package/dist/server/model/ReadOnlySocialMailContext.d.ts +5 -0
- package/dist/server/model/ReadOnlySocialMailContext.d.ts.map +1 -0
- package/dist/server/model/ReadOnlySocialMailContext.js +19 -0
- package/dist/server/model/ReadOnlySocialMailContext.js.map +1 -0
- package/dist/server/model/entities/Email.d.ts.map +1 -1
- package/dist/server/model/entities/Email.js +2 -1
- package/dist/server/model/entities/Email.js.map +1 -1
- package/dist/server/services/cache/CacheService.d.ts +1 -0
- package/dist/server/services/cache/CacheService.d.ts.map +1 -1
- package/dist/server/services/cache/CacheService.js +6 -1
- package/dist/server/services/cache/CacheService.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/wwwroot/routes/social-mail/site/snapshot/[type]/[eSiteID]/[eFileContentID]/[name]/index.d.ts.map +1 -1
- package/dist/wwwroot/routes/social-mail/site/snapshot/[type]/[eSiteID]/[eFileContentID]/[name]/index.js +1 -0
- package/dist/wwwroot/routes/social-mail/site/snapshot/[type]/[eSiteID]/[eFileContentID]/[name]/index.js.map +1 -1
- package/package.json +1 -1
- package/src/WebServer.ts +3 -0
- package/src/common/globalEnv.ts +1 -0
- package/src/server/model/ReadOnlySocialMailContext.ts +22 -0
- package/src/server/model/entities/Email.ts +2 -1
- package/src/server/services/cache/CacheService.ts +5 -1
- 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;
|
|
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":";;;;;;;;;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,GAAG,MAAM,8CAA8C,CAAC;AAC/D,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;;;;GAIG;AACH,MAAM,CAAC,OAAO,gBAAO,SAAQ,IAAI;IAuB7B,KAAK,CAAC,GAAG;QAEL,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAQ,CAAC;QAE7D,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,YAAY,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAE/D,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;QACzD,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;QAE5D,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAE9F,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC;YAC9C,OAAO;YACP,QAAQ;YACR,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,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,SAAS,EAAE,IAAI;YACf,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,IAAI,CAAC,QAAQ;SACzB,CACJ,CAAC;IACN,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,GAAG,CAAC;QACnD,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;QACpG,IAAI,SAAS,EAAE,CAAC;YACZ,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,SAAS,EAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;QAC9E,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,CAAC;aAClB,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC;aAC3D,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC;aAChC,KAAK,EAAE,CAAC;QAEb,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,IAAI,GAAG,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC;QAE/C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;eAC1G,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;QAEpD,IAAI,OAAO,EAAE,CAAC;YACV,OAAO,OAAO,CAAC;QACnB,CAAC;QAED,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAEpF,CAAC;CACJ;AAvFW;IADP,MAAM;8BACM,qBAAqB;sCAAC;AAG3B;IADP,MAAM;8BACK,iBAAiB;qCAAC;AAGtB;IADP,MAAM;8BACM,iBAAiB;sCAAC;AAGvB;IADP,KAAK;;uCACe;AAGb;IADP,KAAK;;0CACe;AAGb;IADP,KAAK;;iDACsB;AAGpB;IADP,KAAK;;uCACY"}
|
package/package.json
CHANGED
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);
|
package/src/common/globalEnv.ts
CHANGED
|
@@ -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
|
+
}
|
|
@@ -237,7 +237,8 @@ export class Email {
|
|
|
237
237
|
@Column({ dataType: "BigInt" , nullable: true })
|
|
238
238
|
@RelateTo(Email, {
|
|
239
239
|
property: (x) => x.lastReply,
|
|
240
|
-
inverseProperty: (x) => x.lastRepliedThreads
|
|
240
|
+
inverseProperty: (x) => x.lastRepliedThreads,
|
|
241
|
+
dotNotCreateIndex: true
|
|
241
242
|
})
|
|
242
243
|
public lastReplyID: number;
|
|
243
244
|
|
|
@@ -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.
|
|
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) {
|