@social-mail/social-mail-web-server 1.4.712 → 1.4.714

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 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/wwwroot/routes/index.tsx"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,mCAAmC,CAAC;AAEzD,OAAO,cAAc,MAAM,+CAA+C,CAAC;AAG3E,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAG5D,MAAM,CAAC,OAAO,MAAO,SAAQ,IAAI;IAG7B,MAAM,EAAE,QAAQ,CAAC;IAGjB,cAAc,EAAE,cAAc,CAAC;IAE/B,GAAG,EAAE,GAAG,CAAC;IAEH,GAAG;CAoGZ"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/wwwroot/routes/index.tsx"],"names":[],"mappings":"AAEA,OAAO,QAAQ,MAAM,mCAAmC,CAAC;AAEzD,OAAO,cAAc,MAAM,+CAA+C,CAAC;AAG3E,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAG5D,MAAM,CAAC,OAAO,MAAO,SAAQ,IAAI;IAG7B,MAAM,EAAE,QAAQ,CAAC;IAGjB,cAAc,EAAE,cAAc,CAAC;IAE/B,GAAG,EAAE,GAAG,CAAC;IAEH,GAAG;CAoGZ"}
@@ -7,6 +7,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
+ /* eslint-disable no-console */
10
11
  import Inject, { ServiceProvider } from "@entity-access/entity-access/dist/di/di.js";
11
12
  import DBConfig from "../../server/services/DBConfig.js";
12
13
  import { ImagesFolder } from "../../common/ImagesFolder.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/wwwroot/routes/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/wwwroot/routes/index.tsx"],"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.4.712",
3
+ "version": "1.4.714",
4
4
  "description": "## Phase 1",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -12,6 +12,11 @@ import { cacheFor } from "../../../common/cacheFor.js";
12
12
  import { globalEnv } from "../../../common/globalEnv.js";
13
13
  import Sql from "@entity-access/entity-access/dist/sql/Sql.js";
14
14
 
15
+ let cdn = globalEnv.cdn || "";
16
+ if (cdn) {
17
+ cdn = `//${cdn}`;
18
+ }
19
+
15
20
  const joinPath = (root: string, path: string) => {
16
21
  const roots = root.split("/");
17
22
  let paths = path.split("/");
@@ -197,13 +202,6 @@ export default class SnapshotService {
197
202
 
198
203
  async updateCssContent(css: string, parentPath: string) {
199
204
 
200
- const { root } = this;
201
-
202
- let cdn = globalEnv.cdn || "";
203
- if (cdn) {
204
- cdn = `//${cdn}`;
205
- }
206
-
207
205
  const regex = /url\(((\"[^\"]+\")|([^\)]+))\)/gmi;
208
206
 
209
207
  let updated = false;
@@ -229,65 +227,12 @@ export default class SnapshotService {
229
227
  if (encoded) {
230
228
  link = link.substring(1, link.length - 1);
231
229
  }
232
- if (link.startsWith("//")
233
- || link.startsWith("http://")
234
- || link.startsWith("https://")
235
- || link.startsWith("data:")) {
236
- continue;
237
- }
238
-
239
- if (link.startsWith("/api/site/snapshot/")) {
240
- link = `"${cdn}${link}"`;
241
- css = css.replaceAll(fg, link);
242
- updated = true;
243
- continue;
244
- }
245
-
246
- let paths: string[];
247
- let transform = "download";
248
- let fileName: string;
249
- let query = "";
250
-
251
- if (!link.startsWith("/api/site/asset/")) {
252
- // we already have the path...
253
- link = joinPath(parentPath, link);
254
- if (link.startsWith("/")) {
255
- link = link.substring(1);
256
- }
257
- let index = link.indexOf("#");
258
- if (index !== -1) {
259
- link = link.substring(0, index);
260
- }
261
- index = link.indexOf("?");
262
- if (index !== -1) {
263
- query = link.substring(index);
264
- link = link.substring(0, index);
265
- }
266
- paths = link.split("/");
267
- } else {
268
- // find the path...
269
- // /api[0]/site[1]/asset[2]/transform[3]/siteID[4]/fileID[5]/fileContentID[6]/fileName[7]
270
- if (link.startsWith("/")) {
271
- link = link.substring(1);
272
- }
273
- const tokens = link.split("/");
274
- transform = tokens[3];
275
- paths = await this.getRelativePath(tokens[5]);
276
- if (!paths) {
277
- continue;
278
- }
279
- fileName = tokens[7];
280
- }
281
-
282
- const child = await this.findSnapshotChildren(paths);
283
- if (child) {
284
- fileName ??= child.name;
285
- link = `"${cdn}/api/site/snapshot/${transform}/${this.root.appFileID}/${child.fileContentID}/${fileName}${query}"`;
286
- // console.log(`${fg} --> ${link}`);
287
- css = css.replaceAll(fg, link);
288
- updated = true;
230
+ link = await this.rewriteLink(link, parentPath);
231
+ if (!link) {
289
232
  continue;
290
233
  }
234
+ css = css.replaceAll(fg, link);
235
+ updated = true;
291
236
  }
292
237
 
293
238
  if (updated) {
@@ -340,15 +285,74 @@ export default class SnapshotService {
340
285
  return { query, link };
341
286
  }
342
287
 
343
- async updateHtmlContent(html: string, parentPath: string) {
288
+ async rewriteLink(link: string, parentPath: string) {
289
+ if (!link) {
290
+ return;
291
+ }
344
292
 
345
- const { root } = this;
293
+ if (/^((https?\:\/\/)|(data\:\/\/)|(\/\/))/i.test(link)) {
294
+ return;
295
+ }
346
296
 
347
- let cdn = globalEnv.cdn || "";
348
- if (cdn) {
349
- cdn = `//${cdn}`;
297
+ const originalLink = link;
298
+
299
+ if (link.startsWith("/api/site/snapshot/")) {
300
+ link = `${cdn}${link}`;
301
+ return link;
350
302
  }
351
303
 
304
+ let paths: string[];
305
+ let transform = "download";
306
+ let fileName: string;
307
+ let query = "";
308
+
309
+ if (!link.startsWith("/api/site/asset/")) {
310
+ // we already have the path...
311
+ link = joinPath(parentPath, link);
312
+ if (link.startsWith("/")) {
313
+ link = link.substring(1);
314
+ }
315
+ let index = link.indexOf("#");
316
+ if (index !== -1) {
317
+ link = link.substring(0, index);
318
+ }
319
+ index = link.indexOf("?");
320
+ if (index !== -1) {
321
+ query = link.substring(index);
322
+ link = link.substring(0, index);
323
+ }
324
+ paths = link.split("/");
325
+ } else {
326
+ // find the path...
327
+ // /api[0]/site[1]/asset[2]/transform[3]/siteID[4]/fileID[5]/fileContentID[6]/fileName[7]
328
+ if (link.startsWith("/")) {
329
+ link = link.substring(1);
330
+ }
331
+ const tokens = link.split("/");
332
+ transform = tokens[3];
333
+ paths = await this.getRelativePath(tokens[5]);
334
+ if (!paths) {
335
+ return;
336
+ }
337
+ fileName = tokens[7];
338
+ }
339
+
340
+ const child = await this.findSnapshotChildren(paths);
341
+ if (!child) {
342
+ console.warn(`No link found for ${link} with path ${paths.join("/")} in ${this.root.appFileID}, original: ${originalLink}`);
343
+ return;
344
+ }
345
+
346
+ fileName ??= child.name;
347
+ link = `${cdn}/api/site/snapshot/${transform}/${this.root.appFileID}/${child.fileContentID}/${fileName}${query}`;
348
+ return link;
349
+
350
+ }
351
+
352
+ async updateHtmlContent(html: string, parentPath: string) {
353
+
354
+ const { root } = this;
355
+
352
356
  const dom = new JSDOM(html);
353
357
 
354
358
  const { window } = dom;
@@ -360,6 +364,7 @@ export default class SnapshotService {
360
364
 
361
365
  let link: string;
362
366
  let attributeName: string;
367
+ let attributeSet: string[];
363
368
 
364
369
  if(e.tagName === "STYLE") {
365
370
  const text = e.textContent;
@@ -373,74 +378,42 @@ export default class SnapshotService {
373
378
 
374
379
  if (/^(VIDEO|IMG$)/.test(e.tagName)) {
375
380
  attributeName = "src";
381
+ attributeSet = ["data-src-set", "srcset"];
376
382
  }
377
383
 
378
384
  if (/^LINK$/.test(e.tagName) && /^stylesheet$/i.test(e.getAttribute("rel"))) {
379
385
  attributeName = "href";
380
386
  }
381
-
382
- link = e.getAttribute(attributeName);
383
- if (!link) {
387
+ if (!attributeName) {
384
388
  continue;
385
389
  }
386
-
387
- if (link.startsWith("//")
388
- || link.startsWith("http://")
389
- || link.startsWith("https://")
390
- || link.startsWith("data:")) {
391
- continue;
392
- }
393
-
394
- if (link.startsWith("/api/site/snapshot/")) {
395
- link = `${cdn}${link}`;
396
- e.setAttribute(attributeName, link);
397
- updated = true;
398
- continue;
399
- }
400
-
401
- let paths: string[];
402
- let transform = "download";
403
- let fileName: string;
404
- let query = "";
405
-
406
- if (!link.startsWith("/api/site/asset/")) {
407
- // we already have the path...
408
- link = joinPath(parentPath, link);
409
- if (link.startsWith("/")) {
410
- link = link.substring(1);
411
- }
412
- let index = link.indexOf("#");
413
- if (index !== -1) {
414
- link = link.substring(0, index);
415
- }
416
- index = link.indexOf("?");
417
- if (index !== -1) {
418
- query = link.substring(index);
419
- link = link.substring(0, index);
420
- }
421
- paths = link.split("/");
422
- } else {
423
- // find the path...
424
- // /api[0]/site[1]/asset[2]/transform[3]/siteID[4]/fileID[5]/fileContentID[6]/fileName[7]
425
- if (link.startsWith("/")) {
426
- link = link.substring(1);
427
- }
428
- const tokens = link.split("/");
429
- transform = tokens[3];
430
- paths = await this.getRelativePath(tokens[5]);
431
- if (!paths) {
432
- continue;
390
+ link = e.getAttribute(attributeName);
391
+ link = await this.rewriteLink(link, parentPath);
392
+
393
+ if (attributeSet) {
394
+ for (const setName of attributeSet) {
395
+ const srcSet = e.getAttribute(setName);
396
+ if (srcSet) {
397
+ const changedSet = [];
398
+ for (const url of srcSet.split(/\,\;/)) {
399
+ const tokens = url?.split(" ");
400
+ if (!(tokens?.length > 0)) {
401
+ continue;
402
+ }
403
+ link = tokens[0];
404
+ if (!link) {
405
+ continue;
406
+ }
407
+ link = await this.rewriteLink(link, parentPath);
408
+ if (link) {
409
+ changedSet.push(`${link} ${tokens[1]}`);
410
+ }
411
+ }
412
+ if (changedSet.length) {
413
+ e.setAttribute(setName, changedSet.join(","));
414
+ }
415
+ }
433
416
  }
434
- fileName = tokens[7];
435
- }
436
-
437
- const child = await this.findSnapshotChildren(paths);
438
- if (child) {
439
- fileName ??= child.name;
440
- link = `${cdn}/api/site/snapshot/${transform}/${this.root.appFileID}/${child.fileContentID}/${fileName}${query}`;
441
- e.setAttribute(attributeName, link);
442
- updated = true;
443
- continue;
444
417
  }
445
418
  }
446
419
 
@@ -1,3 +1,4 @@
1
+ /* eslint-disable no-console */
1
2
  import Inject, { ServiceProvider } from "@entity-access/entity-access/dist/di/di.js";
2
3
  import DBConfig from "../../server/services/DBConfig.js";
3
4
  import { ImagesFolder } from "../../common/ImagesFolder.js";