@social-mail/social-mail-web-server 1.5.86 → 1.5.87
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/tsconfig.tsbuildinfo +1 -1
- package/dist/wwwroot/routes/api/site/draft/index.d.ts +2 -2
- package/dist/wwwroot/routes/api/site/draft/index.d.ts.map +1 -1
- package/dist/wwwroot/routes/api/site/draft/index.js +20 -2
- package/dist/wwwroot/routes/api/site/draft/index.js.map +1 -1
- package/package.json +2 -2
- package/src/wwwroot/routes/api/site/draft/index.ts +26 -2
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { TempFileResult } from "@entity-access/server-pages/dist/Content.js";
|
|
1
|
+
import Content, { StatusResult, 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 db;
|
|
5
5
|
private websiteService;
|
|
6
6
|
private tfs;
|
|
7
|
-
run(): Promise<
|
|
7
|
+
run(): Promise<Content | TempFileResult | import("@entity-access/server-pages/dist/Content.js").Redirect | StatusResult>;
|
|
8
8
|
}
|
|
9
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/wwwroot/routes/api/site/draft/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/wwwroot/routes/api/site/draft/index.ts"],"names":[],"mappings":"AAKA,OAAO,OAAO,EAAE,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AACpG,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAO5D,MAAM,CAAC,OAAO,MAAO,SAAQ,IAAI;IAG7B,OAAO,CAAC,EAAE,CAAoB;IAG9B,OAAO,CAAC,cAAc,CAAiB;IAGvC,OAAO,CAAC,GAAG,CAAkB;IAEvB,GAAG;CAkHZ"}
|
|
@@ -12,7 +12,7 @@ import Inject from "@entity-access/entity-access/dist/di/di.js";
|
|
|
12
12
|
import SocialMailContext from "../../../../../server/model/SocialMailContext.js";
|
|
13
13
|
import WebSiteService from "../../../../../server/services/files/WebSiteService.js";
|
|
14
14
|
import TempFileService from "../../../../../server/storage/TempFileService.js";
|
|
15
|
-
import { TempFileResult } from "@entity-access/server-pages/dist/Content.js";
|
|
15
|
+
import { StatusResult, TempFileResult } from "@entity-access/server-pages/dist/Content.js";
|
|
16
16
|
import Page from "@entity-access/server-pages/dist/Page.js";
|
|
17
17
|
import { Prepare } from "@entity-access/server-pages/dist/decorators/Prepare.js";
|
|
18
18
|
import { JSDOM } from 'jsdom';
|
|
@@ -47,6 +47,8 @@ let default_1 = class extends Page {
|
|
|
47
47
|
const localFile = await this.tfs.downloadAppFile(file);
|
|
48
48
|
// we need to change html if it contains inject
|
|
49
49
|
if (/text\/html/i.test(file.contentType)) {
|
|
50
|
+
// we cannot use etag for these requests
|
|
51
|
+
// as injected content might have changed
|
|
50
52
|
let body = await localFile.readAsText();
|
|
51
53
|
if (/\<inject\s/i.test(body)) {
|
|
52
54
|
// perform inject...
|
|
@@ -77,12 +79,28 @@ let default_1 = class extends Page {
|
|
|
77
79
|
return this.content({ body, contentType: "text/html" });
|
|
78
80
|
}
|
|
79
81
|
if (/text\/css/i.test(file.contentType)) {
|
|
82
|
+
// it is safe to assume that CSS will not require any changes
|
|
83
|
+
// unless etag has been changed
|
|
84
|
+
// inline resources will be resolved separately via download url
|
|
85
|
+
let etag = this.request.headers["if-none-match"];
|
|
86
|
+
if (/^(\"|\')/i.test(etag)) {
|
|
87
|
+
etag = JSON.parse(etag);
|
|
88
|
+
}
|
|
89
|
+
if (etag === file.fileContentID.toString()) {
|
|
90
|
+
return new StatusResult(304);
|
|
91
|
+
}
|
|
80
92
|
const all = [...path];
|
|
81
93
|
all.pop();
|
|
82
94
|
const pagePath = join(`/api/site/draft/${siteID}/`, ...all);
|
|
83
95
|
let body = await localFile.readAsText();
|
|
84
96
|
body = updateCss(body, pagePath);
|
|
85
|
-
return this.content({
|
|
97
|
+
return this.content({
|
|
98
|
+
body,
|
|
99
|
+
contentType: "text/css",
|
|
100
|
+
headers: {
|
|
101
|
+
etag: JSON.stringify(file.fileContentID.toString())
|
|
102
|
+
}
|
|
103
|
+
});
|
|
86
104
|
}
|
|
87
105
|
return new TempFileResult(localFile, {
|
|
88
106
|
contentDisposition: "inline",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/wwwroot/routes/api/site/draft/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,+BAA+B;AAC/B,OAAO,MAAM,MAAM,4CAA4C,CAAC;AAChE,OAAO,iBAAiB,MAAM,kDAAkD,CAAC;AACjF,OAAO,cAAc,MAAM,wDAAwD,CAAC;AACpF,OAAO,eAAe,MAAM,kDAAkD,CAAC;AAC/E,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/wwwroot/routes/api/site/draft/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.5.
|
|
3
|
+
"version": "1.5.87",
|
|
4
4
|
"description": "## Phase 1",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"@aws-sdk/client-s3": "^3.609.0",
|
|
23
23
|
"@azure/storage-blob": "^12.25.0",
|
|
24
24
|
"@entity-access/entity-access": "^1.0.360",
|
|
25
|
-
"@entity-access/server-pages": "^1.1.
|
|
25
|
+
"@entity-access/server-pages": "^1.1.292",
|
|
26
26
|
"@otplib/preset-v11": "^12.0.1",
|
|
27
27
|
"@social-mail/noto-emoji-svg": "^2.0.42",
|
|
28
28
|
"@social-mail/shared": "^1.0.11",
|
|
@@ -3,7 +3,7 @@ import Inject from "@entity-access/entity-access/dist/di/di.js";
|
|
|
3
3
|
import SocialMailContext from "../../../../../server/model/SocialMailContext.js";
|
|
4
4
|
import WebSiteService from "../../../../../server/services/files/WebSiteService.js";
|
|
5
5
|
import TempFileService from "../../../../../server/storage/TempFileService.js";
|
|
6
|
-
import { TempFileResult } from "@entity-access/server-pages/dist/Content.js";
|
|
6
|
+
import Content, { StatusResult, TempFileResult } from "@entity-access/server-pages/dist/Content.js";
|
|
7
7
|
import Page from "@entity-access/server-pages/dist/Page.js";
|
|
8
8
|
import { Prepare } from "@entity-access/server-pages/dist/decorators/Prepare.js";
|
|
9
9
|
import { JSDOM } from 'jsdom';
|
|
@@ -60,6 +60,10 @@ export default class extends Page {
|
|
|
60
60
|
|
|
61
61
|
// we need to change html if it contains inject
|
|
62
62
|
if (/text\/html/i.test(file.contentType)) {
|
|
63
|
+
|
|
64
|
+
// we cannot use etag for these requests
|
|
65
|
+
// as injected content might have changed
|
|
66
|
+
|
|
63
67
|
let body = await localFile.readAsText();
|
|
64
68
|
if(/\<inject\s/i.test(body)) {
|
|
65
69
|
// perform inject...
|
|
@@ -91,12 +95,32 @@ export default class extends Page {
|
|
|
91
95
|
}
|
|
92
96
|
|
|
93
97
|
if (/text\/css/i.test(file.contentType)) {
|
|
98
|
+
|
|
99
|
+
// it is safe to assume that CSS will not require any changes
|
|
100
|
+
// unless etag has been changed
|
|
101
|
+
|
|
102
|
+
// inline resources will be resolved separately via download url
|
|
103
|
+
|
|
104
|
+
let etag = this.request.headers["if-none-match"];
|
|
105
|
+
if (/^(\"|\')/i.test(etag)) {
|
|
106
|
+
etag = JSON.parse(etag);
|
|
107
|
+
}
|
|
108
|
+
if (etag === file.fileContentID.toString()) {
|
|
109
|
+
return new StatusResult(304);
|
|
110
|
+
}
|
|
111
|
+
|
|
94
112
|
const all = [ ... path];
|
|
95
113
|
all.pop();
|
|
96
114
|
const pagePath = join(`/api/site/draft/${siteID}/`, ... all);
|
|
97
115
|
let body = await localFile.readAsText();
|
|
98
116
|
body = updateCss(body, pagePath);
|
|
99
|
-
return this.content({
|
|
117
|
+
return this.content({
|
|
118
|
+
body,
|
|
119
|
+
contentType: "text/css",
|
|
120
|
+
headers: {
|
|
121
|
+
etag: JSON.stringify(file.fileContentID.toString())
|
|
122
|
+
}
|
|
123
|
+
});
|
|
100
124
|
}
|
|
101
125
|
|
|
102
126
|
|