@social-mail/social-mail-web-server 1.5.21 → 1.5.22

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@social-mail/social-mail-web-server",
3
- "version": "1.5.21",
3
+ "version": "1.5.22",
4
4
  "description": "## Phase 1",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -100,6 +100,9 @@ export default class DiskCacheService {
100
100
  old = old.addDays(1);
101
101
 
102
102
  const dir = await fsp.opendir(cacheRoot, { recursive: true });
103
+
104
+ const filesToDelete = [];
105
+
103
106
  try {
104
107
  for await (const entry of dir) {
105
108
  if (!entry.isFile()) {
@@ -110,8 +113,13 @@ export default class DiskCacheService {
110
113
  const st = await fsp.stat(filePath);
111
114
  if (st.mtimeMs < old.msSinceEpoch) {
112
115
  target -= st.size;
113
- console.log(`${filePath} deleted.`);
114
- await fsp.unlink(filePath);
116
+ if (filesToDelete.length < 100) {
117
+ filesToDelete.push(filePath);
118
+ } else {
119
+ break;
120
+ }
121
+ // console.log(`${filePath} deleted.`);
122
+ // await fsp.unlink(filePath);
115
123
 
116
124
  if (target < 0) {
117
125
  break;
@@ -121,9 +129,16 @@ export default class DiskCacheService {
121
129
  // we will ignore the error...
122
130
  }
123
131
  }
132
+
124
133
  } finally {
125
134
  await dir.close();
126
135
  }
136
+
137
+ for (const element of filesToDelete) {
138
+ console.log(`${element} deleted.`);
139
+ await fsp.unlink(element);
140
+ }
141
+
127
142
  }
128
143
 
129
144
  console.log(`Temp folder cleared, ${finalTarget-target} bytes freed.`);
@@ -178,6 +178,25 @@ export default class TempFileService {
178
178
  return tf;
179
179
  }
180
180
 
181
+ public async createLink(fileName: string, src: string, contentType: string) {
182
+ if (fileName) {
183
+ fileName = fileName.replace(/([\/\<\>\:\"\\\|\?\*]+)/g, "-");
184
+ } else {
185
+ fileName = "temp.dat";
186
+ }
187
+ const qIndex = fileName.indexOf("?");
188
+ if (qIndex !== -1) {
189
+ fileName = fileName.substring(0, qIndex);
190
+ }
191
+ const fileInfo = path.parse(fileName);
192
+ const tf = await this.createTempFile(fileInfo.ext, fileName, contentType);
193
+ // this should save some space...
194
+ await fsp.link(src, tf.path);
195
+ // await fsp.writeFile(tf.path, content);
196
+ return tf;
197
+ }
198
+
199
+
181
200
  [Symbol.dispose]() {
182
201
  for (const iterator of this.files) {
183
202
  iterator.delete().catch((error) => console.error(error));