@social-mail/social-mail-web-server 1.5.71 → 1.5.73

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.
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@social-mail/social-mail-web-server",
3
- "version": "1.5.71",
3
+ "version": "1.5.73",
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.282",
25
+ "@entity-access/server-pages": "^1.1.289",
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",
@@ -1,18 +1,24 @@
1
+ import { LocalFile } from "@entity-access/server-pages/dist/core/LocalFile.js";
1
2
  import { dirname, join } from "path";
2
3
  import { fileURLToPath } from "url";
3
4
 
4
- const metaDir = dirname(import.meta.url);
5
- const folder = join(fileURLToPath(metaDir), "..", "..", "images");
5
+ const metaDir = fileURLToPath(dirname(import.meta.url));
6
6
 
7
- export const ImagesFolder = {
8
- folder,
9
- file: (name) =>
10
- join(folder, name)
11
- };
7
+ class PackageFolder {
8
+ constructor(public readonly folder: string) {
12
9
 
10
+ }
13
11
 
14
- const contentFolder = join(fileURLToPath(metaDir), "..", "..", "content");
15
- export const ContentFolder = {
16
- folder: contentFolder,
17
- file: (name) => join(contentFolder, name)
18
- };
12
+ file(... names) {
13
+ return join(this.folder, ... names);
14
+ }
15
+
16
+ localFile(... names) {
17
+ const path= join(this.folder, ... names);
18
+ return new LocalFile(path, names.pop(), void 0, () => void 0);
19
+ }
20
+ }
21
+
22
+ export const ImagesFolder = new PackageFolder(join(metaDir, "..", "..", "images"));
23
+
24
+ export const contentFolder = new PackageFolder(join(metaDir, "..", "..", "content"));
@@ -9,8 +9,7 @@ import { spawnPromise } from "../../../common/spawnPromise.js";
9
9
  import { copyFile, readdir } from "fs/promises";
10
10
  import FFCommand from "../convert/FFCommand.js";
11
11
  import ensureDir from "../../../common/FileApi.js";
12
- import { existsSync } from "fs";
13
- import { ContentFolder } from "../../../common/ImagesFolder.js";
12
+ import { ImagesFolder } from "../../../common/ImagesFolder.js";
14
13
 
15
14
  const cachePath = `./data/img-cache/`;
16
15
 
@@ -22,17 +21,16 @@ export default class ImageConverterService {
22
21
  @Inject
23
22
  tempFileService: TempFileService;
24
23
 
25
- async getImage(file: LocalFile, pageNumber?) {
24
+ async getImage(file: LocalFile, pageNumber?, retry = true) {
26
25
 
27
26
  let outputFile: LocalFile;
28
- let folder: TempFolder;
29
27
  let copy: LocalFile;
30
28
 
31
29
  if (/^image\//.test(file.contentType)) {
32
30
 
33
31
  if (/\.bmp$/i.test(file.fileName)) {
34
- folder = new TempFolder();
35
- copy = folder.get(file.fileName, file.contentType);
32
+ using f1 = new TempFolder();
33
+ copy = await f1.copy(file.fileName, file, file.contentType);
36
34
  outputFile = await this.tempFileService.createTempFile(".bmp", "bmp", "image/bmp");
37
35
  await spawnPromise("convert", [
38
36
  copy.path,
@@ -45,10 +43,9 @@ export default class ImageConverterService {
45
43
  }
46
44
 
47
45
 
48
- folder = new TempFolder();
49
- copy = folder.get(file.fileName, file.contentType);
46
+ using folder = new TempFolder();
47
+ copy = await folder.copy(file.fileName, file, file.contentType);
50
48
  outputFile = await this.tempFileService.createTempFile(".png", "png", "image/png");
51
- await file.copyTo(copy);
52
49
 
53
50
  if (/^video\//.test(file.contentType)) {
54
51
  // this is a video..
@@ -68,6 +65,7 @@ export default class ImageConverterService {
68
65
  args.push("-f");
69
66
  args.push(Number(pageNumber).toString());
70
67
  }
68
+
71
69
  await spawnPromise("pdftoppm", args, {
72
70
  cwd: folder.folder
73
71
  });
@@ -75,18 +73,15 @@ export default class ImageConverterService {
75
73
  const isPng = /\.png$/i;
76
74
 
77
75
  for (const child of await readdir(folder.folder, { withFileTypes: true})) {
78
- const output = join(child.path, child.name);
76
+ const output = join(child.parentPath, child.name);
79
77
  if (isPng.test(child.name)) {
80
78
  await copyFile(output, outputFile.path);
81
79
  return outputFile;
82
80
  }
83
81
  }
84
82
 
85
- if (!existsSync(outputFile.path)) {
86
- // copy protected.pdf
87
- const src = ContentFolder.file("pdf/protected.pdf");
88
- await copyFile(src, outputFile.path);
89
- return outputFile;
83
+ if (!outputFile.exists) {
84
+ return ImagesFolder.localFile("png", "protected.png");
90
85
  }
91
86
  }
92
87
 
@@ -129,6 +124,9 @@ export default class ImageConverterService {
129
124
  }
130
125
 
131
126
  file = await this.getImage(file, args?.[2] ?? void 0);
127
+ if (!file.exists) {
128
+ file = ImagesFolder.localFile("png", "unavailable.png");
129
+ }
132
130
 
133
131
  const { default: fx } = await import("./formats/" + fileName + ".js");
134
132
  let r: sharp.Sharp = await fx(file, ... args);