@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.
@@ -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<import("@entity-access/server-pages/dist/Content.js").default | TempFileResult | import("@entity-access/server-pages/dist/Content.js").Redirect>;
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;AAC7E,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;CA0FZ"}
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({ body, contentType: "text/css" });
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,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,OAAO,CAAC;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAC;AAG5D,gBAAA,KAAM,SAAQ,IAAI;IAW7B,KAAK,CAAC,GAAG;QAEL,MAAM,CAAC,MAAM,EAAE,GAAI,IAAI,CAAC,GAAG,IAAI,CAAC,SAAkB,CAAC;QAEnD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;QAED,0CAA0C;QAE1C,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,MAAM,CAAC;aAC5G,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC;iBACpH,WAAW,EAAE,CAAC;QACnB,CAAC;QAED,IAAG,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC5B,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC1E,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;YACtD,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;QAED,oCAAoC;QACpC,oBAAoB;QACpB,IAAI,+BAA+B,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACzD,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3C,CAAC;QAGD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAEvD,+CAA+C;QAC/C,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACvC,IAAI,IAAI,GAAG,MAAM,SAAS,CAAC,UAAU,EAAE,CAAC;YACxC,IAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1B,oBAAoB;gBACpB,MAAM,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;gBACjD,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;gBACpD,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBACzC,CAAC,CAAC,IAAI,GAAG,mBAAmB,MAAM,GAAG,CAAC;gBACtC,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;gBACrD,KAAI,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;oBAClE,IAAI,GAAG,GAAG,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;oBAChC,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;wBACtB,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;oBAC3B,CAAC;oBACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;oBACvF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;oBAC5D,MAAM,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC,MAAM,WAAW,CAAC,UAAU,EAAE,EAAE,WAAW,CAAC,CAAC;oBACnF,KAAI,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;wBAC/C,EAAE,CAAC,MAAM,EAAE,CAAC;wBACZ,CAAC,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;oBACxC,CAAC;oBACD,CAAC,CAAC,MAAM,EAAE,CAAC;gBACf,CAAC;gBACD,IAAI,GAAG,kBAAkB,QAAQ,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC;YAClE,CAAC;iBAAM,CAAC;gBACJ,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,+BAA+B,MAAM,aAAa,CAAC,CAAC;YAC9F,CAAC;YAED,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAC,CAAC,CAAC;QAC3D,CAAC;QAED,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACtC,MAAM,GAAG,GAAG,CAAE,GAAI,IAAI,CAAC,CAAC;YACxB,GAAG,CAAC,GAAG,EAAE,CAAC;YACV,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,MAAM,GAAG,EAAE,GAAI,GAAG,CAAC,CAAC;YAC7D,IAAI,IAAI,GAAG,MAAM,SAAS,CAAC,UAAU,EAAE,CAAC;YACxC,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACjC,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAC,CAAC,CAAC;QAC1D,CAAC;QAID,OAAO,IAAI,cAAc,CACrB,SAAS,EACT;YACI,kBAAkB,EAAE,QAAQ;YAC5B,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,CAAC;SACZ,CACJ,CAAC;IAEN,CAAC;CAEJ,CAAA;AAlGW;IADP,MAAM;8BACK,iBAAiB;qCAAC;AAGtB;IADP,MAAM;8BACiB,cAAc;iDAAC;AAG/B;IADP,MAAM;8BACM,eAAe;sCAAC;AATlB;IADd,OAAO,CAAC,SAAS;aAsGjB;;AAED,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,QAAgB,EAAG,EAAE;IACjD,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,aAAa,CAAC,GAAG,EAAE,mCAAmC,CAAC,EAAE,CAAC;QACnF,IAAI,KAAK,EAAE,CAAC;YACR,IAAI,IAAI,GAAG,KAAK,CAAC;YACjB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM,OAAO,GAAG,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,CAAC;YAC/C,IAAI,OAAO,EAAE,CAAC;gBACV,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC9C,CAAC;YACD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvB,IAAI,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC;gBACnC,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACtC,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC,CAAC"}
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.86",
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.291",
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({ body, contentType: "text/css"});
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