@social-mail/social-mail-web-server 1.7.190 → 1.7.192
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/server/model/entities/CachedItem.d.ts +1 -0
- package/dist/server/model/entities/CachedItem.d.ts.map +1 -1
- package/dist/server/model/entities/CachedItem.js +4 -0
- package/dist/server/model/entities/CachedItem.js.map +1 -1
- package/dist/server/seed/ui/seed-ui.js +1 -1
- package/dist/server/services/cache/DiskCacheService.d.ts.map +1 -1
- package/dist/server/services/cache/DiskCacheService.js +66 -57
- package/dist/server/services/cache/DiskCacheService.js.map +1 -1
- package/dist/server/storage/LockFile.d.ts +1 -1
- package/dist/server/storage/LockFile.d.ts.map +1 -1
- package/dist/server/storage/LockFile.js +2 -2
- package/dist/server/storage/LockFile.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/server/model/entities/CachedItem.ts +3 -0
- package/src/server/seed/ui/seed-ui.ts +1 -1
- package/src/server/services/cache/DiskCacheService.ts +9 -6
- package/src/server/storage/LockFile.ts +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CachedItem.d.ts","sourceRoot":"","sources":["../../../../src/server/model/entities/CachedItem.ts"],"names":[],"mappings":"AAGA,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAgB3E,MAAM,CAAC,OAAO,OAAO,UAAU;IAGpB,MAAM,EAAE,MAAM,CAAC;IAGf,OAAO,EAAE,MAAM,CAAC;IAGhB,GAAG,EAAE,MAAM,CAAC;IAGZ,MAAM,EAAE,QAAQ,CAAC;IAGjB,KAAK,EAAE,OAAO,CAAC;IAGf,KAAK,EAAE,OAAO,CAAC;CACzB"}
|
|
1
|
+
{"version":3,"file":"CachedItem.d.ts","sourceRoot":"","sources":["../../../../src/server/model/entities/CachedItem.ts"],"names":[],"mappings":"AAGA,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAgB3E,MAAM,CAAC,OAAO,OAAO,UAAU;IAGpB,MAAM,EAAE,MAAM,CAAC;IAGf,OAAO,EAAE,MAAM,CAAC;IAGhB,GAAG,EAAE,MAAM,CAAC;IAGZ,MAAM,EAAE,QAAQ,CAAC;IAGjB,KAAK,EAAE,OAAO,CAAC;IAGf,KAAK,EAAE,MAAM,CAAC;IAGd,KAAK,EAAE,OAAO,CAAC;CACzB"}
|
|
@@ -33,6 +33,10 @@ __decorate([
|
|
|
33
33
|
Column({ dataType: "Boolean", default: () => false }),
|
|
34
34
|
__metadata("design:type", Boolean)
|
|
35
35
|
], CachedItem.prototype, "ready", void 0);
|
|
36
|
+
__decorate([
|
|
37
|
+
Column({ dataType: "Char", nullable: true }),
|
|
38
|
+
__metadata("design:type", String)
|
|
39
|
+
], CachedItem.prototype, "value", void 0);
|
|
36
40
|
__decorate([
|
|
37
41
|
Column({ dataType: "Boolean", default: () => true }),
|
|
38
42
|
__metadata("design:type", Boolean)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CachedItem.js","sourceRoot":"","sources":["../../../../src/server/model/entities/CachedItem.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,MAAM,MAAM,wDAAwD,CAAC;AAC5E,OAAO,KAAK,MAAM,uDAAuD,CAAC;AAC1E,OAAO,KAAK,MAAM,uDAAuD,CAAC;AAC1E,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAgB5D,IAAM,UAAU,GAAhB,MAAM,UAAU;
|
|
1
|
+
{"version":3,"file":"CachedItem.js","sourceRoot":"","sources":["../../../../src/server/model/entities/CachedItem.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,MAAM,MAAM,wDAAwD,CAAC;AAC5E,OAAO,KAAK,MAAM,uDAAuD,CAAC;AAC1E,OAAO,KAAK,MAAM,uDAAuD,CAAC;AAC1E,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAgB5D,IAAM,UAAU,GAAhB,MAAM,UAAU;CAsB9B,CAAA;AAnBU;IADN,MAAM,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAC,CAAC;;0CAC1C;AAGf;IADN,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;;2CACnB;AAGhB;IADN,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAC,CAAC;;uCACT;AAGZ;IADN,MAAM,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAC,CAAC;8BACjB,QAAQ;0CAAC;AAGjB;IADN,MAAM,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC;;yCAChC;AAGf;IADN,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;yCACxB;AAGd;IADN,MAAM,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;;yCAC/B;AArBL,UAAU;IAd9B,KAAK,CAAC,YAAY,CAAC;IACnB,KAAK,CAAC;QACH,IAAI,EAAE,uBAAuB;QAC7B,OAAO,EAAE;YACL,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE;SAChD;QACD,MAAM,EAAE,IAAI;KACf,CAAC;IACD,KAAK,CAAC;QACH,IAAI,EAAE,sBAAsB;QAC5B,OAAO,EAAE;YACL,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE;SAC/C;KACJ,CAAC;GACmB,UAAU,CAsB9B;eAtBoB,UAAU"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { UIPackageConfig } from "../../services/DBConfig.js";
|
|
2
2
|
import semver from "semver";
|
|
3
3
|
export default async function seedUI(config) {
|
|
4
|
-
const version = "1.4.
|
|
4
|
+
const version = "1.4.138";
|
|
5
5
|
const existing = await config.getValue(UIPackageConfig, false);
|
|
6
6
|
if (existing) {
|
|
7
7
|
if (semver.gte(existing.version, version)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DiskCacheService.d.ts","sourceRoot":"","sources":["../../../../src/server/services/cache/DiskCacheService.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,SAAS,EAAE,MAAM,oDAAoD,CAAC;AAqB/E,MAAM,CAAC,OAAO,OAAO,gBAAgB;;
|
|
1
|
+
{"version":3,"file":"DiskCacheService.d.ts","sourceRoot":"","sources":["../../../../src/server/services/cache/DiskCacheService.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,SAAS,EAAE,MAAM,oDAAoD,CAAC;AAqB/E,MAAM,CAAC,OAAO,OAAO,gBAAgB;;IAQ3B,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,QAAQ,KAAA,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,SAAS;IAyC5E,KAAK;CAiFd"}
|
|
@@ -60,7 +60,6 @@ import { join, parse } from "path";
|
|
|
60
60
|
import { globalEnv } from "../../../common/globalEnv.js";
|
|
61
61
|
import fsp from "node:fs/promises";
|
|
62
62
|
import FileSize from "../../../common/FileSize.js";
|
|
63
|
-
import cluster from "cluster";
|
|
64
63
|
import ensureDir from "../../../common/FileApi.js";
|
|
65
64
|
import DateTime from "@entity-access/entity-access/dist/types/DateTime.js";
|
|
66
65
|
import { LocalFile } from "@entity-access/server-pages/dist/core/LocalFile.js";
|
|
@@ -69,7 +68,6 @@ import { existsSync } from "fs";
|
|
|
69
68
|
import { randomUUID } from "crypto";
|
|
70
69
|
import sleep from "../../../common/sleep.js";
|
|
71
70
|
import EntityAccessError from "@entity-access/entity-access/dist/common/EntityAccessError.js";
|
|
72
|
-
import { parentPort } from "worker_threads";
|
|
73
71
|
import { unlink } from "fs/promises";
|
|
74
72
|
const cacheRoot = globalEnv.cacheDir;
|
|
75
73
|
const serverCache = globalEnv.cacheDir;
|
|
@@ -79,11 +77,9 @@ const minSize = tempSize / 2;
|
|
|
79
77
|
const doNothing = () => void 0;
|
|
80
78
|
let DiskCacheService = class DiskCacheService {
|
|
81
79
|
constructor() {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
setTimeout(() => this.clear().catch(console.error), 60000);
|
|
86
|
-
}
|
|
80
|
+
// it is important to clean
|
|
81
|
+
// in the beginning to avoid no file space errors.
|
|
82
|
+
setTimeout(() => this.clear().catch(console.error), 1000);
|
|
87
83
|
}
|
|
88
84
|
async getOrCreate(path, factory, ext = ".dat") {
|
|
89
85
|
path = join(serverCache, path);
|
|
@@ -95,6 +91,7 @@ let DiskCacheService = class DiskCacheService {
|
|
|
95
91
|
try {
|
|
96
92
|
const lock = __addDisposableResource(env_1, await LockFile.lock(path), false);
|
|
97
93
|
if (existsSync(path)) {
|
|
94
|
+
// change
|
|
98
95
|
return new LocalFile(path, void 0, void 0, doNothing);
|
|
99
96
|
}
|
|
100
97
|
const tmpPath = join(serverCache, randomUUID() + (parsedPath.ext || ext));
|
|
@@ -124,70 +121,82 @@ let DiskCacheService = class DiskCacheService {
|
|
|
124
121
|
}
|
|
125
122
|
async clear() {
|
|
126
123
|
try {
|
|
127
|
-
const
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
const
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
124
|
+
const env_2 = { stack: [], error: void 0, hasError: false };
|
|
125
|
+
try {
|
|
126
|
+
const l = __addDisposableResource(env_2, await LockFile.lock("clean-" + cacheRoot, void 0, 10000), false);
|
|
127
|
+
const s = await fsp.statfs(cacheRoot);
|
|
128
|
+
const freeSize = s.bavail * s.bsize;
|
|
129
|
+
if (freeSize < minSize) {
|
|
130
|
+
let target = minSize - freeSize;
|
|
131
|
+
const finalTarget = target;
|
|
132
|
+
console.log(`Clearing temp files to delete ${target} bytes.`);
|
|
133
|
+
let old = DateTime.now.addDays(-8);
|
|
134
|
+
while (target > 0) {
|
|
135
|
+
old = old.addDays(1);
|
|
136
|
+
const dir = await fsp.opendir(cacheRoot, { recursive: true });
|
|
137
|
+
const filesToDelete = [];
|
|
138
|
+
try {
|
|
139
|
+
for await (const entry of dir) {
|
|
140
|
+
if (!entry.isFile()) {
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
try {
|
|
144
|
+
const filePath = join(entry.path, entry.name);
|
|
145
|
+
const st = await fsp.stat(filePath);
|
|
146
|
+
if (st.mtimeMs < old.msSinceEpoch) {
|
|
147
|
+
target -= st.size;
|
|
148
|
+
if (filesToDelete.length < 100) {
|
|
149
|
+
filesToDelete.push(filePath);
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
break;
|
|
153
|
+
}
|
|
154
|
+
// console.log(`${filePath} deleted.`);
|
|
155
|
+
// await fsp.unlink(filePath);
|
|
156
|
+
if (target < 0) {
|
|
157
|
+
break;
|
|
158
|
+
}
|
|
158
159
|
}
|
|
159
160
|
}
|
|
161
|
+
catch {
|
|
162
|
+
// we will ignore the error...
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
finally {
|
|
167
|
+
try {
|
|
168
|
+
await dir.close();
|
|
160
169
|
}
|
|
161
170
|
catch {
|
|
162
|
-
//
|
|
171
|
+
// ignore error..
|
|
163
172
|
}
|
|
164
173
|
}
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
for (const element of filesToDelete) {
|
|
175
|
-
console.log(`${element} deleted.`);
|
|
176
|
-
try {
|
|
177
|
-
await fsp.unlink(element);
|
|
178
|
-
}
|
|
179
|
-
catch {
|
|
180
|
-
// ignore this error as someone else might have deleted
|
|
181
|
-
// it
|
|
174
|
+
for (const element of filesToDelete) {
|
|
175
|
+
console.log(`${element} deleted.`);
|
|
176
|
+
try {
|
|
177
|
+
await fsp.unlink(element);
|
|
178
|
+
}
|
|
179
|
+
catch {
|
|
180
|
+
// ignore this error as someone else might have deleted
|
|
181
|
+
// it
|
|
182
|
+
}
|
|
182
183
|
}
|
|
183
184
|
}
|
|
185
|
+
console.log(`Temp folder cleared, ${finalTarget - target} bytes freed.`);
|
|
184
186
|
}
|
|
185
|
-
|
|
187
|
+
}
|
|
188
|
+
catch (e_2) {
|
|
189
|
+
env_2.error = e_2;
|
|
190
|
+
env_2.hasError = true;
|
|
191
|
+
}
|
|
192
|
+
finally {
|
|
193
|
+
__disposeResources(env_2);
|
|
186
194
|
}
|
|
187
195
|
}
|
|
188
196
|
catch (error) {
|
|
189
197
|
console.error(error);
|
|
190
198
|
}
|
|
199
|
+
await sleep(30000);
|
|
191
200
|
setTimeout(() => this.clear().catch(console.error), 60000);
|
|
192
201
|
}
|
|
193
202
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DiskCacheService.js","sourceRoot":"","sources":["../../../../src/server/services/cache/DiskCacheService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAA+B;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAC/E,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,GAAG,MAAM,kBAAkB,CAAC;AACnC,OAAO,QAAQ,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"DiskCacheService.js","sourceRoot":"","sources":["../../../../src/server/services/cache/DiskCacheService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export default class LockFile implements Disposable {
|
|
2
2
|
private readonly lockFile;
|
|
3
|
-
static lock(someKey: string, timeout?: number): Promise<LockFile>;
|
|
3
|
+
static lock(someKey: string, timeout?: number, interval?: number): Promise<LockFile>;
|
|
4
4
|
timer: any;
|
|
5
5
|
fd: any;
|
|
6
6
|
constructor(lockFile: any);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LockFile.d.ts","sourceRoot":"","sources":["../../../src/server/storage/LockFile.ts"],"names":[],"mappings":"AAwBA,MAAM,CAAC,OAAO,OAAO,QAAS,YAAW,UAAU;IAyCnC,OAAO,CAAC,QAAQ,CAAC,QAAQ;WAvCxB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,SAAY;
|
|
1
|
+
{"version":3,"file":"LockFile.d.ts","sourceRoot":"","sources":["../../../src/server/storage/LockFile.ts"],"names":[],"mappings":"AAwBA,MAAM,CAAC,OAAO,OAAO,QAAS,YAAW,UAAU;IAyCnC,OAAO,CAAC,QAAQ,CAAC,QAAQ;WAvCxB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,SAAY,EAAE,QAAQ,SAAO;IAoCvE,KAAK,EAAE,GAAG,CAAC;IACX,EAAE,EAAE,GAAG,CAAC;gBAEqB,QAAQ,KAAA;IAerC,CAAC,MAAM,CAAC,OAAO,CAAC;CAWnB"}
|
|
@@ -16,7 +16,7 @@ const { O_EXCL, O_DIRECT, O_SYNC } = constants;
|
|
|
16
16
|
// eslint-disable-next-line no-bitwise
|
|
17
17
|
const openMode = O_EXCL | O_DIRECT | O_SYNC;
|
|
18
18
|
export default class LockFile {
|
|
19
|
-
static async lock(someKey, timeout = 2 * hours) {
|
|
19
|
+
static async lock(someKey, timeout = 2 * hours, interval = 3000) {
|
|
20
20
|
const sha256 = createHash("sha256");
|
|
21
21
|
const hash = sha256.update(someKey).digest("hex");
|
|
22
22
|
const lockFile = join(lockFolder, hash + ".lock");
|
|
@@ -40,7 +40,7 @@ export default class LockFile {
|
|
|
40
40
|
// do nothing
|
|
41
41
|
console.error(error);
|
|
42
42
|
}
|
|
43
|
-
await sleep(
|
|
43
|
+
await sleep(interval);
|
|
44
44
|
now = Date.now();
|
|
45
45
|
} while (now < till);
|
|
46
46
|
throw new Error("Could not acquire lock");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LockFile.js","sourceRoot":"","sources":["../../../src/server/storage/LockFile.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAChI,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,MAAM,uBAAuB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEtD,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;AAEhC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEzC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;IAC1B,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,CAAC;AACrB,MAAM,OAAO,GAAG,EAAE,GAAC,OAAO,CAAC;AAC3B,MAAM,KAAK,GAAG,EAAE,GAAC,OAAO,CAAC;AAEzB,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;AAE/C,sCAAsC;AACtC,MAAM,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE5C,MAAM,CAAC,OAAO,OAAO,QAAQ;IAEzB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAe,EAAE,OAAO,GAAG,CAAC,GAAG,KAAK;
|
|
1
|
+
{"version":3,"file":"LockFile.js","sourceRoot":"","sources":["../../../src/server/storage/LockFile.ts"],"names":[],"mappings":"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"}
|