@lacrous/omnicloud 0.2.11 → 0.2.13
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/index.cjs +28 -17
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +28 -17
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
- package/server/index.js +29 -18
package/dist/index.cjs
CHANGED
|
@@ -1472,7 +1472,7 @@ var noopActivityRecorder = {
|
|
|
1472
1472
|
// ../core/src/utils/filename.ts
|
|
1473
1473
|
function sanitizeFileName(name) {
|
|
1474
1474
|
const base = name.split(/[/\\]/).pop() ?? name;
|
|
1475
|
-
const cleaned = base.replace(/[\u0000-\u001f\u007f]/g, "").replace(/[<>:"|?*]/g, "_").trim();
|
|
1475
|
+
const cleaned = base.replace(/[\u0000-\u001f\u007f-\u009f]/g, "").replace(/[\u200B-\u200F\u202A-\u202E\u2066-\u2069\uFEFF]/g, "").replace(/[<>:"|?*]/g, "_").trim();
|
|
1476
1476
|
if (!cleaned || cleaned === "." || cleaned === "..") return "";
|
|
1477
1477
|
return cleaned.slice(0, 255);
|
|
1478
1478
|
}
|
|
@@ -1998,6 +1998,23 @@ var FileService = class {
|
|
|
1998
1998
|
}
|
|
1999
1999
|
};
|
|
2000
2000
|
|
|
2001
|
+
// ../core/src/utils/folder-order.ts
|
|
2002
|
+
function deepestFirst(folderIds, folders) {
|
|
2003
|
+
const byId = new Map(folders.map((folder) => [folder.id, folder]));
|
|
2004
|
+
const depthOf = (id) => {
|
|
2005
|
+
let depth = 0;
|
|
2006
|
+
const seen = /* @__PURE__ */ new Set();
|
|
2007
|
+
let cursor = byId.get(id)?.parentId ?? null;
|
|
2008
|
+
while (cursor !== null && !seen.has(cursor)) {
|
|
2009
|
+
seen.add(cursor);
|
|
2010
|
+
depth += 1;
|
|
2011
|
+
cursor = byId.get(cursor)?.parentId ?? null;
|
|
2012
|
+
}
|
|
2013
|
+
return depth;
|
|
2014
|
+
};
|
|
2015
|
+
return [...folderIds].sort((a, b) => depthOf(b) - depthOf(a));
|
|
2016
|
+
}
|
|
2017
|
+
|
|
2001
2018
|
// ../core/src/services/folder-service.ts
|
|
2002
2019
|
var FolderService = class {
|
|
2003
2020
|
constructor(folders, files, engineFor, activity = noopActivityRecorder) {
|
|
@@ -2204,7 +2221,10 @@ var FolderService = class {
|
|
|
2204
2221
|
const remainingFolderIds = new Set(
|
|
2205
2222
|
affected.filter((file) => !removedFileIds.includes(file.id)).map((file) => file.folderId)
|
|
2206
2223
|
);
|
|
2207
|
-
const deletable =
|
|
2224
|
+
const deletable = deepestFirst(
|
|
2225
|
+
folderIds.filter((folderId) => !remainingFolderIds.has(folderId)),
|
|
2226
|
+
subtree
|
|
2227
|
+
);
|
|
2208
2228
|
if (deletable.length > 0) {
|
|
2209
2229
|
await this.folders.deleteMany(deletable);
|
|
2210
2230
|
}
|
|
@@ -2385,22 +2405,13 @@ var TrashService = class {
|
|
|
2385
2405
|
}
|
|
2386
2406
|
const allFolders = await this.folders.listByUser(userId);
|
|
2387
2407
|
const trashedFolders = allFolders.filter((folder) => folder.deletedAt !== null);
|
|
2388
|
-
const
|
|
2389
|
-
|
|
2390
|
-
|
|
2391
|
-
|
|
2392
|
-
while (cursor !== null && !seen.has(cursor)) {
|
|
2393
|
-
seen.add(cursor);
|
|
2394
|
-
const parent = allFolders.find((candidate) => candidate.id === cursor);
|
|
2395
|
-
if (!parent) break;
|
|
2396
|
-
level += 1;
|
|
2397
|
-
cursor = parent.parentId;
|
|
2398
|
-
}
|
|
2399
|
-
return level;
|
|
2400
|
-
};
|
|
2401
|
-
trashedFolders.sort((a, b) => depth(a) - depth(b));
|
|
2408
|
+
const orderedIds = deepestFirst(
|
|
2409
|
+
trashedFolders.map((folder) => folder.id),
|
|
2410
|
+
allFolders
|
|
2411
|
+
);
|
|
2402
2412
|
let deletedFolders = 0;
|
|
2403
|
-
for (const
|
|
2413
|
+
for (const folderId of orderedIds) {
|
|
2414
|
+
const folder = trashedFolders.find((candidate) => candidate.id === folderId);
|
|
2404
2415
|
const stillHasFiles = await this.files.query(
|
|
2405
2416
|
userId,
|
|
2406
2417
|
{ folderId: folder.id, trashed: true },
|