@lacrous/omnicloud 0.2.10 → 0.2.12
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 +27 -16
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +27 -16
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
- package/server/index.js +31 -18
package/dist/index.cjs
CHANGED
|
@@ -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 },
|