@social-mail/social-mail-web-server 1.7.335 → 1.7.337

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 (22) hide show
  1. package/dist/server/seed/ui/seed-ui.js +1 -1
  2. package/dist/server/services/files/ISiteFolder.d.ts +1 -0
  3. package/dist/server/services/files/ISiteFolder.d.ts.map +1 -1
  4. package/dist/server/services/files/WebSiteContentService.d.ts +9 -7
  5. package/dist/server/services/files/WebSiteContentService.d.ts.map +1 -1
  6. package/dist/server/services/files/WebSiteContentService.js +1 -1
  7. package/dist/server/services/files/WebSiteContentService.js.map +1 -1
  8. package/dist/tsconfig.tsbuildinfo +1 -1
  9. package/dist/wwwroot/routes/social-mail/site/snapshot/[type]/[eSiteID]/[eFileContentID]/index.d.ts +5 -0
  10. package/dist/wwwroot/routes/social-mail/site/snapshot/[type]/[eSiteID]/[eFileContentID]/index.d.ts.map +1 -1
  11. package/dist/wwwroot/routes/social-mail/site/snapshot/[type]/[eSiteID]/[eFileContentID]/index.js +5 -0
  12. package/dist/wwwroot/routes/social-mail/site/snapshot/[type]/[eSiteID]/[eFileContentID]/index.js.map +1 -1
  13. package/dist/wwwroot/routes/social-mail/site/template/files/get.d.ts +11 -0
  14. package/dist/wwwroot/routes/social-mail/site/template/files/get.d.ts.map +1 -0
  15. package/dist/wwwroot/routes/social-mail/site/template/files/get.js +61 -0
  16. package/dist/wwwroot/routes/social-mail/site/template/files/get.js.map +1 -0
  17. package/package.json +1 -1
  18. package/src/server/seed/ui/seed-ui.ts +1 -1
  19. package/src/server/services/files/ISiteFolder.ts +1 -0
  20. package/src/server/services/files/WebSiteContentService.ts +11 -2
  21. package/src/wwwroot/routes/social-mail/site/snapshot/[type]/[eSiteID]/[eFileContentID]/index.ts +5 -0
  22. package/src/wwwroot/routes/social-mail/site/template/files/get.tsx +63 -0
@@ -1,5 +1,10 @@
1
1
  import { TempFileResult } from "@entity-access/server-pages/dist/Content.js";
2
2
  import Page from "@entity-access/server-pages/dist/Page.js";
3
+ /**
4
+ * This route delivers Hosted Web Site's Media Assets such as images/videos/style-sheets etc.
5
+ *
6
+ * This route is set by WebContentTranspileService
7
+ */
3
8
  export default class extends Page {
4
9
  private fcs;
5
10
  private db;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/wwwroot/routes/social-mail/site/snapshot/[type]/[eSiteID]/[eFileContentID]/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,WAAW,CAAqB;IAGxC,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;IAkCH,YAAY,CAAC,MAAM,KAAA,EAAE,aAAa,KAAA,EAAE,SAAS,SAAI;CAsB1D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/wwwroot/routes/social-mail/site/snapshot/[type]/[eSiteID]/[eFileContentID]/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAS5D;;;;GAIG;AACH,MAAM,CAAC,OAAO,MAAO,SAAQ,IAAI;IAG7B,OAAO,CAAC,GAAG,CAAwB;IAGnC,OAAO,CAAC,EAAE,CAAoB;IAG9B,OAAO,CAAC,WAAW,CAAqB;IAGxC,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;IAkCH,YAAY,CAAC,MAAM,KAAA,EAAE,aAAa,KAAA,EAAE,SAAS,SAAI;CAsB1D"}
@@ -17,6 +17,11 @@ import SocialMailContext from "../../../../../../../../server/model/SocialMailCo
17
17
  import FileConversionService from "../../../../../../../../server/services/convert/FileConversionService.js";
18
18
  import EncryptionService from "../../../../../../../../server/services/encryption/EncryptionService.js";
19
19
  import RateLimiterService from "../../../../../../../../server/services/rate-limiter/RateLimiterService.js";
20
+ /**
21
+ * This route delivers Hosted Web Site's Media Assets such as images/videos/style-sheets etc.
22
+ *
23
+ * This route is set by WebContentTranspileService
24
+ */
20
25
  export default class default_1 extends Page {
21
26
  async run() {
22
27
  await this.rateLimiter.acquire("any", `site-asset`, 10);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../../src/wwwroot/routes/social-mail/site/snapshot/[type]/[eSiteID]/[eFileContentID]/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]/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import Page from "@entity-access/server-pages/dist/Page.js";
2
+ import WebSiteContentService from "../../../../../../server/services/files/WebSiteContentService.js";
3
+ import SocialMailContext from "../../../../../../server/model/SocialMailContext.js";
4
+ import EncryptionService from "../../../../../../server/services/encryption/EncryptionService.js";
5
+ export default class extends Page {
6
+ wcs: WebSiteContentService;
7
+ db: SocialMailContext;
8
+ ecs: EncryptionService;
9
+ run(): Promise<import("@entity-access/server-pages/dist/Content.js").default>;
10
+ }
11
+ //# sourceMappingURL=get.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../../../../src/wwwroot/routes/social-mail/site/template/files/get.tsx"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAC5D,OAAO,qBAAqB,MAAM,kEAAkE,CAAC;AACrG,OAAO,iBAAiB,MAAM,qDAAqD,CAAC;AAEpF,OAAO,iBAAiB,MAAM,mEAAmE,CAAC;AAIlG,MAAM,CAAC,OAAO,MAAO,SAAQ,IAAI;IAG7B,GAAG,EAAE,qBAAqB,CAAC;IAG3B,EAAE,EAAE,iBAAiB,CAAC;IAGtB,GAAG,EAAE,iBAAiB,CAAC;IAEjB,GAAG;CA0CZ"}
@@ -0,0 +1,61 @@
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
+ import Inject from "@entity-access/entity-access/dist/di/di.js";
11
+ import Page from "@entity-access/server-pages/dist/Page.js";
12
+ import WebSiteContentService from "../../../../../../server/services/files/WebSiteContentService.js";
13
+ import SocialMailContext from "../../../../../../server/model/SocialMailContext.js";
14
+ import Sql from "@entity-access/entity-access/dist/sql/Sql.js";
15
+ import EncryptionService from "../../../../../../server/services/encryption/EncryptionService.js";
16
+ import { TempFileResult } from "@entity-access/server-pages/dist/Content.js";
17
+ export default class default_1 extends Page {
18
+ async run() {
19
+ const snapshot = await this.wcs.getCurrentSnapshotFolder(this.request.hostName);
20
+ if (!snapshot.isTemplate) {
21
+ return this.notFound();
22
+ }
23
+ const path = this.childPath ?? [];
24
+ const root = `${snapshot.snapshotFolderID}/%`;
25
+ const file = path?.length
26
+ ? await this.wcs.getFileInfo(snapshot.snapshotFolderID, ...path)
27
+ : await this.db.appFiles.where(snapshot, (p) => (x) => x.appFileID === p.snapshotFolderID).first();
28
+ if (file.isFolder) {
29
+ const start = BigInt(this.query.start || "0");
30
+ const size = Number(this.query.size || "100");
31
+ const files = await this.db.appFiles
32
+ .where({ root, start }, (p) => (x) => Sql.text.like(x.path, p.root)
33
+ && x.isDeleted === false
34
+ && x.appFileID > p.start)
35
+ .limit(size)
36
+ .toArray();
37
+ const result = [];
38
+ for (const { appFileID, name, contentType, fileSize, isFolder } of files) {
39
+ result.push({ appFileID, name, contentType, fileSize, isFolder });
40
+ }
41
+ return this.json(result);
42
+ }
43
+ const appFile = await this.wcs.getSnapshotFile(snapshot, path);
44
+ return new TempFileResult(appFile, {
45
+ contentDisposition: "inline",
46
+ });
47
+ }
48
+ }
49
+ __decorate([
50
+ Inject,
51
+ __metadata("design:type", WebSiteContentService)
52
+ ], default_1.prototype, "wcs", void 0);
53
+ __decorate([
54
+ Inject,
55
+ __metadata("design:type", SocialMailContext)
56
+ ], default_1.prototype, "db", void 0);
57
+ __decorate([
58
+ Inject,
59
+ __metadata("design:type", EncryptionService)
60
+ ], default_1.prototype, "ecs", void 0);
61
+ //# sourceMappingURL=get.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../../../../src/wwwroot/routes/social-mail/site/template/files/get.tsx"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,MAAM,MAAM,4CAA4C,CAAC;AAChE,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAC5D,OAAO,qBAAqB,MAAM,kEAAkE,CAAC;AACrG,OAAO,iBAAiB,MAAM,qDAAqD,CAAC;AACpF,OAAO,GAAG,MAAM,8CAA8C,CAAC;AAC/D,OAAO,iBAAiB,MAAM,mEAAmE,CAAC;AAElG,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAE7E,MAAM,CAAC,OAAO,gBAAO,SAAQ,IAAI;IAW7B,KAAK,CAAC,GAAG;QAEL,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEhF,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC3B,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,SAAqB,IAAI,EAAE,CAAC;QAE9C,MAAM,IAAI,GAAG,GAAG,QAAQ,CAAC,gBAAgB,IAAI,CAAC;QAE9C,MAAM,IAAI,GAAG,IAAI,EAAE,MAAM;YACrB,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,gBAAgB,EAAE,GAAI,IAAI,CAAC;YACjE,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,KAAK,EAAE,CAAC;QAEvG,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC;YAC9C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC;YAC9C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ;iBAC/B,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAC9B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;mBAC1B,CAAC,CAAC,SAAS,KAAK,KAAK;mBACrB,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,KAAK,CAC3B;iBACJ,KAAK,CAAC,IAAI,CAAC;iBACX,OAAO,EAAE,CAAC;YAEf,MAAM,MAAM,GAAG,EAAwB,CAAC;YAExC,KAAK,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,KAAK,EAAE,CAAC;gBACvE,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;YACtE,CAAC;YAED,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC/D,OAAO,IAAI,cAAc,CAAC,OAAO,EAAE;YAC/B,kBAAkB,EAAE,QAAQ;SAC/B,CAAC,CAAC;IACP,CAAC;CACJ;AAlDG;IADC,MAAM;8BACF,qBAAqB;sCAAC;AAG3B;IADC,MAAM;8BACH,iBAAiB;qCAAC;AAGtB;IADC,MAAM;8BACF,iBAAiB;sCAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@social-mail/social-mail-web-server",
3
- "version": "1.7.335",
3
+ "version": "1.7.337",
4
4
  "description": "## Phase 1",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -5,7 +5,7 @@ export default async function seedUI(config: DBConfig) {
5
5
  await config.saveVersion(UIPackageConfig, {
6
6
  package: "@social-mail/social-mail-client",
7
7
  view: "dist/web/AppIndex",
8
- version: "1.4.206"
8
+ version: "1.4.207"
9
9
  });
10
10
 
11
11
  await config.saveVersion(WebComponentsPackageConfig, {
@@ -2,4 +2,5 @@ export interface ISiteFolder {
2
2
  snapshotFolderID: number;
3
3
  folderID: number;
4
4
  eSiteID: string;
5
+ isTemplate: boolean;
5
6
  }
@@ -88,7 +88,7 @@ export default class WebSiteContentService
88
88
  }
89
89
 
90
90
  @cacheFor()
91
- async getFileInfo(folderID, ... path: string[]): Promise<{ name, contentType, appFileID, url, fileContentID }> {
91
+ async getFileInfo(folderID, ... path: string[]): Promise<IFileInfo> {
92
92
  const [top, ... paths] = path;
93
93
  const child = await this.db.appFiles
94
94
  .where({ folderID, top },(p) => (x) => x.parentID === p.folderID && x.name === p.top)
@@ -98,7 +98,7 @@ export default class WebSiteContentService
98
98
  return null;
99
99
  }
100
100
  if (paths.length === 0) {
101
- return { name: child.name, contentType: child.contentType, appFileID: child.appFileID, url: child.url, fileContentID: child.fileContentID };
101
+ return { name: child.name, contentType: child.contentType, appFileID: child.appFileID, isFolder: child.isFolder, url: child.url, fileContentID: child.fileContentID };
102
102
  }
103
103
  return await this.getFileInfo(child.appFileID, ... paths);
104
104
  }
@@ -150,4 +150,13 @@ export default class WebSiteContentService
150
150
  return src;
151
151
  }
152
152
 
153
+ }
154
+
155
+ export interface IFileInfo {
156
+ name,
157
+ contentType,
158
+ appFileID,
159
+ isFolder,
160
+ url,
161
+ fileContentID
153
162
  }
@@ -9,6 +9,11 @@ import FileConversionService from "../../../../../../../../server/services/conve
9
9
  import EncryptionService from "../../../../../../../../server/services/encryption/EncryptionService.js";
10
10
  import RateLimiterService from "../../../../../../../../server/services/rate-limiter/RateLimiterService.js";
11
11
 
12
+ /**
13
+ * This route delivers Hosted Web Site's Media Assets such as images/videos/style-sheets etc.
14
+ *
15
+ * This route is set by WebContentTranspileService
16
+ */
12
17
  export default class extends Page {
13
18
 
14
19
  @Inject
@@ -0,0 +1,63 @@
1
+ import Inject from "@entity-access/entity-access/dist/di/di.js";
2
+ import Page from "@entity-access/server-pages/dist/Page.js";
3
+ import WebSiteContentService from "../../../../../../server/services/files/WebSiteContentService.js";
4
+ import SocialMailContext from "../../../../../../server/model/SocialMailContext.js";
5
+ import Sql from "@entity-access/entity-access/dist/sql/Sql.js";
6
+ import EncryptionService from "../../../../../../server/services/encryption/EncryptionService.js";
7
+ import AppFile from "../../../../../../server/model/entities/AppFile.js";
8
+ import { TempFileResult } from "@entity-access/server-pages/dist/Content.js";
9
+
10
+ export default class extends Page {
11
+
12
+ @Inject
13
+ wcs: WebSiteContentService;
14
+
15
+ @Inject
16
+ db: SocialMailContext;
17
+
18
+ @Inject
19
+ ecs: EncryptionService;
20
+
21
+ async run() {
22
+
23
+ const snapshot = await this.wcs.getCurrentSnapshotFolder(this.request.hostName);
24
+
25
+ if (!snapshot.isTemplate) {
26
+ return this.notFound();
27
+ }
28
+
29
+ const path = this.childPath as string[] ?? [];
30
+
31
+ const root = `${snapshot.snapshotFolderID}/%`;
32
+
33
+ const file = path?.length
34
+ ? await this.wcs.getFileInfo(snapshot.snapshotFolderID, ... path)
35
+ : await this.db.appFiles.where(snapshot, (p) => (x) => x.appFileID === p.snapshotFolderID).first();
36
+
37
+ if (file.isFolder) {
38
+ const start = BigInt(this.query.start || "0");
39
+ const size = Number(this.query.size || "100");
40
+ const files = await this.db.appFiles
41
+ .where({ root, start } , (p) => (x) =>
42
+ Sql.text.like(x.path, p.root)
43
+ && x.isDeleted === false
44
+ && x.appFileID > p.start
45
+ )
46
+ .limit(size)
47
+ .toArray();
48
+
49
+ const result = [] as Partial<AppFile>[];
50
+
51
+ for (const { appFileID, name, contentType, fileSize, isFolder } of files) {
52
+ result.push({ appFileID, name, contentType, fileSize, isFolder });
53
+ }
54
+
55
+ return this.json(result);
56
+ }
57
+
58
+ const appFile = await this.wcs.getSnapshotFile(snapshot, path);
59
+ return new TempFileResult(appFile, {
60
+ contentDisposition: "inline",
61
+ });
62
+ }
63
+ }