@filen/sync 0.2.1 → 0.3.2

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.
Files changed (152) hide show
  1. package/.node-version +1 -1
  2. package/dist/ignorer.d.ts +6 -0
  3. package/dist/ignorer.js +43 -24
  4. package/dist/ignorer.js.map +1 -1
  5. package/dist/index.d.ts +4 -1
  6. package/dist/index.js +3 -1
  7. package/dist/index.js.map +1 -1
  8. package/dist/lib/deltas.d.ts +58 -2
  9. package/dist/lib/deltas.js +693 -108
  10. package/dist/lib/deltas.js.map +1 -1
  11. package/dist/lib/environment.d.ts +47 -0
  12. package/dist/lib/environment.js +71 -0
  13. package/dist/lib/environment.js.map +1 -0
  14. package/dist/lib/filesystems/dirTree.d.ts +70 -0
  15. package/dist/lib/filesystems/dirTree.js +157 -0
  16. package/dist/lib/filesystems/dirTree.js.map +1 -0
  17. package/dist/lib/filesystems/local.d.ts +18 -8
  18. package/dist/lib/filesystems/local.js +166 -160
  19. package/dist/lib/filesystems/local.js.map +1 -1
  20. package/dist/lib/filesystems/remote.d.ts +12 -5
  21. package/dist/lib/filesystems/remote.js +226 -172
  22. package/dist/lib/filesystems/remote.js.map +1 -1
  23. package/dist/lib/ipc.js +1 -2
  24. package/dist/lib/ipc.js.map +1 -1
  25. package/dist/lib/lock.js +19 -12
  26. package/dist/lib/lock.js.map +1 -1
  27. package/dist/lib/logger.js +9 -7
  28. package/dist/lib/logger.js.map +1 -1
  29. package/dist/lib/state.js +159 -63
  30. package/dist/lib/state.js.map +1 -1
  31. package/dist/lib/sync.d.ts +18 -0
  32. package/dist/lib/sync.js +165 -96
  33. package/dist/lib/sync.js.map +1 -1
  34. package/dist/lib/tasks.d.ts +7 -8
  35. package/dist/lib/tasks.js +38 -45
  36. package/dist/lib/tasks.js.map +1 -1
  37. package/dist/semaphore.d.ts +1 -0
  38. package/dist/semaphore.js +22 -5
  39. package/dist/semaphore.js.map +1 -1
  40. package/dist/utils.js +51 -35
  41. package/dist/utils.js.map +1 -1
  42. package/eslint.config.mjs +36 -0
  43. package/package.json +19 -15
  44. package/tests/bench/collapse.bench.ts +114 -0
  45. package/tests/bench/cycle.bench.ts +111 -0
  46. package/tests/bench/deltas.bench.ts +151 -0
  47. package/tests/bench/harness/fake-sync.ts +32 -0
  48. package/tests/bench/harness/measure.ts +276 -0
  49. package/tests/bench/harness/scale-world.ts +160 -0
  50. package/tests/bench/harness/trees.ts +275 -0
  51. package/tests/bench/local-scan.bench.ts +74 -0
  52. package/tests/bench/longrun.bench.ts +130 -0
  53. package/tests/bench/profile-incremental.ts +90 -0
  54. package/tests/bench/remote-build.bench.ts +104 -0
  55. package/tests/bench/render.ts +14 -0
  56. package/tests/bench/semaphore.bench.ts +79 -0
  57. package/tests/bench/state.bench.ts +85 -0
  58. package/tests/bench/tasks-dispatch.bench.ts +156 -0
  59. package/tests/conformance/virtual-fs.test.ts +213 -0
  60. package/tests/e2e/backup.e2e.test.ts +130 -0
  61. package/tests/e2e/confirm.e2e.test.ts +191 -0
  62. package/tests/e2e/conflict.e2e.test.ts +261 -0
  63. package/tests/e2e/edge.e2e.test.ts +339 -0
  64. package/tests/e2e/harness/account.ts +104 -0
  65. package/tests/e2e/harness/assert.ts +127 -0
  66. package/tests/e2e/harness/drive.ts +88 -0
  67. package/tests/e2e/harness/mutations.ts +249 -0
  68. package/tests/e2e/harness/world.ts +222 -0
  69. package/tests/e2e/ignore.e2e.test.ts +123 -0
  70. package/tests/e2e/lifecycle.e2e.test.ts +290 -0
  71. package/tests/e2e/modes.e2e.test.ts +215 -0
  72. package/tests/e2e/platform.e2e.test.ts +157 -0
  73. package/tests/e2e/property.e2e.test.ts +163 -0
  74. package/tests/e2e/races.e2e.test.ts +90 -0
  75. package/tests/e2e/regressions.e2e.test.ts +212 -0
  76. package/tests/e2e/resilience.e2e.test.ts +231 -0
  77. package/tests/e2e/special.e2e.test.ts +185 -0
  78. package/tests/e2e/state.e2e.test.ts +229 -0
  79. package/tests/e2e/sync.e2e.test.ts +222 -0
  80. package/tests/fakes/fake-cloud.test.ts +267 -0
  81. package/tests/fakes/fake-cloud.ts +1094 -0
  82. package/tests/fakes/virtual-fs.ts +354 -0
  83. package/tests/harness/known-bug.ts +17 -0
  84. package/tests/harness/mutations.ts +65 -0
  85. package/tests/harness/runner.ts +141 -0
  86. package/tests/harness/snapshot.ts +113 -0
  87. package/tests/harness/world.ts +187 -0
  88. package/tests/scenarios/a-baseline.test.ts +107 -0
  89. package/tests/scenarios/aa-races.test.ts +258 -0
  90. package/tests/scenarios/ab-mode-property.test.ts +189 -0
  91. package/tests/scenarios/ac-platform.test.ts +320 -0
  92. package/tests/scenarios/ad-unicode-normalization.test.ts +67 -0
  93. package/tests/scenarios/b-additions.test.ts +160 -0
  94. package/tests/scenarios/c-modifications.test.ts +194 -0
  95. package/tests/scenarios/d-deletions.test.ts +259 -0
  96. package/tests/scenarios/e-rename-move.test.ts +288 -0
  97. package/tests/scenarios/f-ignore-filter.test.ts +346 -0
  98. package/tests/scenarios/g-large-deletion.test.ts +277 -0
  99. package/tests/scenarios/h-resilience.test.ts +167 -0
  100. package/tests/scenarios/i-lifecycle.test.ts +353 -0
  101. package/tests/scenarios/j-state-cache.test.ts +264 -0
  102. package/tests/scenarios/k-scale.test.ts +202 -0
  103. package/tests/scenarios/l-property.test.ts +145 -0
  104. package/tests/scenarios/m-golden.test.ts +452 -0
  105. package/tests/scenarios/o-task-errors.test.ts +497 -0
  106. package/tests/scenarios/p-remote-originated.test.ts +306 -0
  107. package/tests/scenarios/q-cycle-lifecycle.test.ts +234 -0
  108. package/tests/scenarios/r-rename-stress.test.ts +208 -0
  109. package/tests/scenarios/s-upgrade-transition.test.ts +171 -0
  110. package/tests/scenarios/t-type-change.test.ts +144 -0
  111. package/tests/scenarios/u-mode-local-to-cloud.test.ts +347 -0
  112. package/tests/scenarios/v-mode-local-backup.test.ts +201 -0
  113. package/tests/scenarios/w-mode-cloud-to-local.test.ts +304 -0
  114. package/tests/scenarios/x-mode-cloud-backup.test.ts +201 -0
  115. package/tests/scenarios/y-conflict-matrix.test.ts +292 -0
  116. package/tests/scenarios/z-cross-ops.test.ts +285 -0
  117. package/tests/scenarios/zb-dir-rename-cross.test.ts +296 -0
  118. package/tests/scenarios/zc-crash-recovery.test.ts +189 -0
  119. package/tests/scenarios/zd-inode-reuse.test.ts +118 -0
  120. package/tests/scenarios/ze-move-into-new-dir.test.ts +130 -0
  121. package/tests/scenarios/zf-remote-change-unchanged-local.test.ts +81 -0
  122. package/tests/scenarios/zg-edit-during-scan.test.ts +68 -0
  123. package/tests/scenarios/zh-dir-delete-vs-child.test.ts +104 -0
  124. package/tests/scenarios/zi-smoke-test-outage.test.ts +78 -0
  125. package/tests/scenarios/zj-trash-cleanup.test.ts +133 -0
  126. package/tests/scenarios/zk-ignore-asymmetry.test.ts +150 -0
  127. package/tests/scenarios/zl-mode-atomicity.test.ts +104 -0
  128. package/tests/scenarios/zm-scan-concurrency.test.ts +78 -0
  129. package/tests/scenarios/zn-delta-ordering.test.ts +130 -0
  130. package/tests/scenarios/zo-download-temp-cleanup.test.ts +65 -0
  131. package/tests/unit/collapse-deltas.test.ts +276 -0
  132. package/tests/unit/dir-tree.test.ts +159 -0
  133. package/tests/unit/icloud.test.ts +115 -0
  134. package/tests/unit/ignorer-cache-regression.test.ts +70 -0
  135. package/tests/unit/ignorer.test.ts +63 -0
  136. package/tests/unit/ipc-lock.test.ts +438 -0
  137. package/tests/unit/lock.test.ts +135 -0
  138. package/tests/unit/n-unit.test.ts +632 -0
  139. package/tests/unit/remote-tree-unordered-regression.test.ts +101 -0
  140. package/tests/unit/semaphore-regression.test.ts +140 -0
  141. package/tests/unit/state-refencode-regression.test.ts +224 -0
  142. package/tests/unit/state.test.ts +809 -0
  143. package/tests/unit/tasks-dispatch-order-regression.test.ts +53 -0
  144. package/tests/unit/worker-api.test.ts +379 -0
  145. package/tsconfig.json +10 -1
  146. package/tsconfig.test.json +12 -0
  147. package/tsconfig.tsbuildinfo +1 -0
  148. package/vitest.bench.config.ts +32 -0
  149. package/vitest.config.ts +27 -0
  150. package/vitest.e2e.config.ts +68 -0
  151. package/.eslintrc +0 -16
  152. package/jest.config.js +0 -5
@@ -3,12 +3,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.LocalFileSystem = void 0;
7
- const fs_extra_1 = __importDefault(require("fs-extra"));
8
- const watcher_1 = __importDefault(require("@parcel/watcher"));
6
+ exports.LocalFileSystem = exports.LOCAL_SCAN_CONCURRENCY = void 0;
9
7
  const utils_1 = require("../../utils");
10
8
  const path_1 = __importDefault(require("path"));
11
- const process_1 = __importDefault(require("process"));
12
9
  const constants_1 = require("../../constants");
13
10
  const crypto_1 = __importDefault(require("crypto"));
14
11
  const stream_1 = require("stream");
@@ -19,6 +16,18 @@ const semaphore_1 = require("../../semaphore");
19
16
  const uuid_1 = require("uuid");
20
17
  const fast_glob_1 = __importDefault(require("fast-glob"));
21
18
  const pipelineAsync = (0, util_1.promisify)(stream_1.pipeline);
19
+ /**
20
+ * Upper bound on how many local entries are stat'd concurrently during a single tree scan.
21
+ *
22
+ * The scan fans a filesystem `lstat` (+ `access`) out over every glob entry. Mapping all entries to
23
+ * promises up front would, on a tree with millions of entries, allocate millions of pending promises
24
+ * and in-flight stat results at once — an O(n) peak-memory spike on top of the (unavoidable) result
25
+ * tree, plus unbounded pressure on the libuv thread pool and open file descriptors. Walking the entries
26
+ * in fixed-size batches caps peak concurrency — and therefore peak memory — without reducing throughput,
27
+ * since the thread pool only services a handful of these operations in parallel regardless of how many
28
+ * are queued. Batches run sequentially, so the first-occurrence-wins dedup order is preserved exactly.
29
+ */
30
+ exports.LOCAL_SCAN_CONCURRENCY = 1000;
22
31
  /**
23
32
  * LocalFileSystem
24
33
  * @date 3/2/2024 - 12:38:22 PM
@@ -46,8 +55,7 @@ class LocalFileSystem {
46
55
  size: 0
47
56
  };
48
57
  this.watcherRunning = false;
49
- this.watcherInstanceParcel = null;
50
- this.watcherInstanceNode = null;
58
+ this.watcherInstance = null;
51
59
  this.itemsMutex = new semaphore_1.Semaphore(1);
52
60
  this.mutex = new semaphore_1.Semaphore(1);
53
61
  this.mkdirMutex = new semaphore_1.Semaphore(1);
@@ -57,8 +65,11 @@ class LocalFileSystem {
57
65
  this.sync = sync;
58
66
  }
59
67
  isPathIgnored(relativePath, absolutePath, type) {
60
- if (this.ignoredCache.get(relativePath)) {
61
- return this.ignoredCache.get(relativePath);
68
+ // One cache lookup, not two — this runs per file on every scan (a cache hit for every unchanged
69
+ // path now that the cache survives a cycle), so the second redundant get() was pure overhead.
70
+ const cached = this.ignoredCache.get(relativePath);
71
+ if (cached) {
72
+ return cached;
62
73
  }
63
74
  if ((0, utils_1.isPathOverMaxLength)(absolutePath)) {
64
75
  this.ignoredCache.set(relativePath, {
@@ -151,6 +162,14 @@ class LocalFileSystem {
151
162
  this.getDirectoryTreeCache.ignored = [];
152
163
  this.getDirectoryTreeCache.errors = [];
153
164
  this.getDirectoryTreeCache.size = 0;
165
+ // Stamp the cache as of the moment the walk BEGINS, not when it ends. The freshness check above
166
+ // skips a rescan while `lastDirectoryChangeTimestamp < cache.timestamp`; a file edited DURING
167
+ // this walk (after we lstat it, before the walk returns) fires the watcher with a change time
168
+ // that is earlier than an end-of-walk stamp, so the next cycle would wrongly consider the cache
169
+ // fresh and never re-read the edit — a silently lost update until some later change. Stamping at
170
+ // the start guarantees any change racing with or following the walk has a change time >= this
171
+ // stamp, so the strict `<` fails and the next cycle rescans.
172
+ const scanStartedAt = Date.now();
154
173
  const pathsAdded = {};
155
174
  let size = 0;
156
175
  const entries = await fast_glob_1.default.async("**/*", {
@@ -161,102 +180,99 @@ class LocalFileSystem {
161
180
  cwd: this.sync.syncPair.localPath,
162
181
  followSymbolicLinks: false,
163
182
  deep: Infinity,
164
- fs: fs_extra_1.default,
183
+ fs: this.sync.environment.globFs,
165
184
  suppressErrors: true,
166
185
  stats: false,
167
186
  unique: false,
168
187
  objectMode: false
169
188
  });
170
- await (0, utils_1.promiseAllChunked)(entries.map(async (entry) => {
171
- const entryItem = entry;
172
- if (!entryItem) {
173
- return;
174
- }
175
- const entryPath = "/" + entryItem;
176
- if (entryPath.includes(constants_1.LOCAL_TRASH_NAME)) {
177
- return;
178
- }
179
- const absolutePath = path_1.default.join(this.sync.syncPair.localPath, entryItem);
180
- const lowercasePath = entryPath.toLowerCase();
181
- if (pathsAdded[lowercasePath]) {
182
- this.getDirectoryTreeCache.ignored.push({
183
- localPath: absolutePath,
184
- relativePath: entryPath,
185
- reason: "duplicate"
186
- });
187
- return;
188
- }
189
- pathsAdded[lowercasePath] = true;
190
- let stats = null;
191
- try {
192
- stats = await fs_extra_1.default.stat(absolutePath);
193
- }
194
- catch (_a) {
195
- this.getDirectoryTreeCache.ignored.push({
196
- localPath: absolutePath,
197
- relativePath: entryPath,
198
- reason: "permissions"
199
- });
200
- return;
201
- }
202
- const ignored = this.isPathIgnored(entryItem, absolutePath, stats.isFile() ? "file" : "directory");
203
- if (ignored.ignored) {
204
- this.getDirectoryTreeCache.ignored.push({
205
- localPath: absolutePath,
206
- relativePath: entryPath,
207
- reason: ignored.reason
208
- });
209
- return;
210
- }
211
- if (stats.isBlockDevice() || stats.isCharacterDevice() || stats.isFIFO() || stats.isSocket()) {
212
- this.getDirectoryTreeCache.ignored.push({
213
- localPath: absolutePath,
214
- relativePath: entryPath,
215
- reason: "invalidType"
216
- });
217
- return;
218
- }
219
- if (stats.isSymbolicLink()) {
220
- this.getDirectoryTreeCache.ignored.push({
221
- localPath: absolutePath,
222
- relativePath: entryPath,
223
- reason: "symlink"
224
- });
225
- return;
226
- }
227
- if (stats.isFile() && stats.size <= 0) {
228
- this.getDirectoryTreeCache.ignored.push({
229
- localPath: absolutePath,
230
- relativePath: entryPath,
231
- reason: "empty"
232
- });
233
- return;
234
- }
235
- try {
236
- await fs_extra_1.default.access(absolutePath, fs_extra_1.default.constants.R_OK);
237
- }
238
- catch (_b) {
239
- this.getDirectoryTreeCache.ignored.push({
240
- localPath: absolutePath,
241
- relativePath: entryPath,
242
- reason: "permissions"
243
- });
244
- return;
245
- }
246
- const item = {
247
- lastModified: (0, utils_1.normalizeUTime)(stats.mtimeMs), // Sometimes comes as a float, but we need an int
248
- type: stats.isDirectory() ? "directory" : "file",
249
- path: entryPath,
250
- creation: (0, utils_1.normalizeUTime)(stats.birthtimeMs), // Sometimes comes as a float, but we need an int
251
- size: stats.size,
252
- inode: stats.ino
253
- };
254
- this.getDirectoryTreeCache.tree[entryPath] = item;
255
- this.getDirectoryTreeCache.inodes[item.inode] = item;
256
- size += 1;
257
- }), 10000, false);
189
+ for (let offset = 0; offset < entries.length; offset += exports.LOCAL_SCAN_CONCURRENCY) {
190
+ await Promise.all(entries.slice(offset, offset + exports.LOCAL_SCAN_CONCURRENCY).map(async (entry) => {
191
+ const entryItem = entry;
192
+ if (!entryItem) {
193
+ return;
194
+ }
195
+ const entryPath = "/" + entryItem;
196
+ if (entryPath.includes(constants_1.LOCAL_TRASH_NAME)) {
197
+ return;
198
+ }
199
+ const absolutePath = path_1.default.join(this.sync.syncPair.localPath, entryItem);
200
+ const lowercasePath = entryPath.toLowerCase();
201
+ if (pathsAdded[lowercasePath]) {
202
+ this.getDirectoryTreeCache.ignored.push({
203
+ localPath: absolutePath,
204
+ relativePath: entryPath,
205
+ reason: "duplicate"
206
+ });
207
+ return;
208
+ }
209
+ pathsAdded[lowercasePath] = true;
210
+ let stats;
211
+ try {
212
+ // lstat (not stat) so a symlink is detected as a link rather than followed to its
213
+ // target — symlinks are skipped structurally below (reason "symlink") instead of being
214
+ // silently dereferenced (which collided on the target's inode and caused churn).
215
+ stats = await this.sync.environment.fs.lstat(absolutePath);
216
+ }
217
+ catch (_a) {
218
+ this.getDirectoryTreeCache.ignored.push({
219
+ localPath: absolutePath,
220
+ relativePath: entryPath,
221
+ reason: "permissions"
222
+ });
223
+ return;
224
+ }
225
+ const ignored = this.isPathIgnored(entryItem, absolutePath, stats.isFile() ? "file" : "directory");
226
+ if (ignored.ignored) {
227
+ this.getDirectoryTreeCache.ignored.push({
228
+ localPath: absolutePath,
229
+ relativePath: entryPath,
230
+ reason: ignored.reason
231
+ });
232
+ return;
233
+ }
234
+ if (stats.isBlockDevice() || stats.isCharacterDevice() || stats.isFIFO() || stats.isSocket()) {
235
+ this.getDirectoryTreeCache.ignored.push({
236
+ localPath: absolutePath,
237
+ relativePath: entryPath,
238
+ reason: "invalidType"
239
+ });
240
+ return;
241
+ }
242
+ if (stats.isSymbolicLink()) {
243
+ this.getDirectoryTreeCache.ignored.push({
244
+ localPath: absolutePath,
245
+ relativePath: entryPath,
246
+ reason: "symlink"
247
+ });
248
+ return;
249
+ }
250
+ try {
251
+ await this.sync.environment.fs.access(absolutePath, this.sync.environment.fs.constants.R_OK);
252
+ }
253
+ catch (_b) {
254
+ this.getDirectoryTreeCache.ignored.push({
255
+ localPath: absolutePath,
256
+ relativePath: entryPath,
257
+ reason: "permissions"
258
+ });
259
+ return;
260
+ }
261
+ const item = {
262
+ lastModified: (0, utils_1.normalizeUTime)(stats.mtimeMs), // Sometimes comes as a float, but we need an int
263
+ type: stats.isDirectory() ? "directory" : "file",
264
+ path: entryPath,
265
+ creation: (0, utils_1.normalizeUTime)(stats.birthtimeMs), // Sometimes comes as a float, but we need an int
266
+ size: stats.size,
267
+ inode: stats.ino
268
+ };
269
+ this.getDirectoryTreeCache.tree[entryPath] = item;
270
+ this.getDirectoryTreeCache.inodes[item.inode] = item;
271
+ size += 1;
272
+ }));
273
+ }
258
274
  this.getDirectoryTreeCache.size = size;
259
- this.getDirectoryTreeCache.timestamp = Date.now();
275
+ this.getDirectoryTreeCache.timestamp = scanStartedAt;
260
276
  // Clear old local file hashes that are not present anymore
261
277
  for (const path in this.sync.localFileHashes) {
262
278
  if (!this.getDirectoryTreeCache.tree[path]) {
@@ -290,36 +306,12 @@ class LocalFileSystem {
290
306
  async startDirectoryWatcher() {
291
307
  await this.watcherMutex.acquire();
292
308
  try {
293
- if (this.watcherInstanceParcel || this.watcherInstanceNode) {
309
+ if (this.watcherInstance) {
294
310
  return;
295
311
  }
296
- this.watcherInstanceParcel = await watcher_1.default.subscribe(this.sync.syncPair.localPath, (err, events) => {
297
- if (!err && events && events.length > 0) {
298
- this.lastDirectoryChangeTimestamp = Date.now();
299
- }
300
- }, {
301
- backend: process_1.default.platform === "win32"
302
- ? "windows"
303
- : process_1.default.platform === "darwin"
304
- ? "fs-events"
305
- : process_1.default.platform === "linux"
306
- ? "inotify"
307
- : undefined
312
+ this.watcherInstance = await this.sync.environment.createWatcher(this.sync.syncPair.localPath, () => {
313
+ this.lastDirectoryChangeTimestamp = Date.now();
308
314
  });
309
- /*
310
- this.watcherInstanceNode = nodeWatch(
311
- this.sync.syncPair.localPath,
312
- {
313
- persistent: true,
314
- recursive: true,
315
- encoding: "utf8",
316
- delay: 1000
317
- },
318
- () => {
319
- this.lastDirectoryChangeTimestamp = Date.now()
320
- }
321
- )
322
- */
323
315
  clearInterval(this.watcherInstanceFallbackInterval);
324
316
  }
325
317
  catch (e) {
@@ -357,13 +349,9 @@ class LocalFileSystem {
357
349
  await this.watcherMutex.acquire();
358
350
  clearInterval(this.watcherInstanceFallbackInterval);
359
351
  try {
360
- if (this.watcherInstanceParcel) {
361
- await this.watcherInstanceParcel.unsubscribe();
362
- this.watcherInstanceParcel = null;
363
- }
364
- if (this.watcherInstanceNode && !this.watcherInstanceNode.isClosed()) {
365
- this.watcherInstanceNode.close();
366
- this.watcherInstanceNode = null;
352
+ if (this.watcherInstance) {
353
+ await this.watcherInstance.close();
354
+ this.watcherInstance = null;
367
355
  }
368
356
  }
369
357
  finally {
@@ -421,7 +409,7 @@ class LocalFileSystem {
421
409
  async createFileHash({ relativePath, algorithm }) {
422
410
  const localPath = path_1.default.join(this.sync.syncPair.localPath, relativePath);
423
411
  const hasher = crypto_1.default.createHash(algorithm);
424
- await pipelineAsync(fs_extra_1.default.createReadStream(localPath), hasher);
412
+ await pipelineAsync(this.sync.environment.fs.createReadStream(localPath), hasher);
425
413
  const hash = hasher.digest("hex");
426
414
  return hash;
427
415
  }
@@ -433,14 +421,14 @@ class LocalFileSystem {
433
421
  * @async
434
422
  * @param {{ relativePath: string }} param0
435
423
  * @param {string} param0.relativePath
436
- * @returns {Promise<fs.Stats>}
424
+ * @returns {Promise<Stats>}
437
425
  */
438
426
  async mkdir({ relativePath }) {
439
427
  await this.mkdirMutex.acquire();
440
428
  try {
441
429
  const localPath = path_1.default.join(this.sync.syncPair.localPath, relativePath);
442
- await fs_extra_1.default.ensureDir(localPath);
443
- const stats = await fs_extra_1.default.stat(localPath);
430
+ await this.sync.environment.fs.ensureDir(localPath);
431
+ const stats = await this.sync.environment.fs.stat(localPath);
444
432
  await this.itemsMutex.acquire();
445
433
  const item = {
446
434
  type: "directory",
@@ -467,20 +455,34 @@ class LocalFileSystem {
467
455
  return;
468
456
  }
469
457
  const localPath = path_1.default.join(this.sync.syncPair.localPath, relativePath);
470
- if (!permanent && !this.sync.localTrashDisabled) {
471
- const localTrashPath = path_1.default.join(this.sync.syncPair.localPath, constants_1.LOCAL_TRASH_NAME);
472
- await fs_extra_1.default.ensureDir(localTrashPath);
473
- await fs_extra_1.default.move(localPath, path_1.default.join(localTrashPath, path_1.default.posix.basename(relativePath)), {
474
- overwrite: true
475
- });
458
+ try {
459
+ if (!permanent && !this.sync.localTrashDisabled) {
460
+ const localTrashPath = path_1.default.join(this.sync.syncPair.localPath, constants_1.LOCAL_TRASH_NAME);
461
+ await this.sync.environment.fs.ensureDir(localTrashPath);
462
+ await this.sync.environment.fs.move(localPath, path_1.default.join(localTrashPath, path_1.default.posix.basename(relativePath)), {
463
+ overwrite: true
464
+ });
465
+ }
466
+ else {
467
+ await this.sync.environment.fs.rm(localPath, {
468
+ force: true,
469
+ maxRetries: 60 * 10,
470
+ recursive: true,
471
+ retryDelay: 100
472
+ });
473
+ }
476
474
  }
477
- else {
478
- await fs_extra_1.default.rm(localPath, {
479
- force: true,
480
- maxRetries: 60 * 10,
481
- recursive: true,
482
- retryDelay: 100
483
- });
475
+ catch (e) {
476
+ // The source vanished between the tree scan and this delete (the same path removed on both sides
477
+ // in one cycle, or an external removal). The intended end state — the path gone — already holds,
478
+ // so fall through to evict the cache entry instead of throwing. Leaving it would persist a
479
+ // PHANTOM entry into the base tree; a later re-creation at that path would then be mis-read as a
480
+ // local deletion to propagate, deleting the freshly re-created file. Only swallow when the source
481
+ // is confirmed gone — any other failure (permissions, destination, disk) still throws. This
482
+ // mirrors the remote unlink, which already cleans its cache entry on file_not_found. (F4)
483
+ if (await this.pathExists(localPath)) {
484
+ throw e;
485
+ }
484
486
  }
485
487
  await this.itemsMutex.acquire();
486
488
  delete this.getDirectoryTreeCache.tree[relativePath];
@@ -516,21 +518,21 @@ class LocalFileSystem {
516
518
  const toLocalPath = path_1.default.join(this.sync.syncPair.localPath, toRelativePath);
517
519
  const fromLocalPathParentPath = path_1.default.dirname(fromLocalPath);
518
520
  const toLocalPathParentPath = path_1.default.dirname(toLocalPath);
519
- await fs_extra_1.default.ensureDir(toLocalPathParentPath);
521
+ await this.sync.environment.fs.ensureDir(toLocalPathParentPath);
520
522
  if (fromLocalPathParentPath === toLocalPathParentPath ||
521
523
  Buffer.from(fromLocalPathParentPath, "utf-8").toString("hex") ===
522
524
  Buffer.from(toLocalPathParentPath, "utf-8").toString("hex")) {
523
- await fs_extra_1.default.rename(fromLocalPath, toLocalPath);
525
+ await this.sync.environment.fs.rename(fromLocalPath, toLocalPath);
524
526
  }
525
527
  else {
526
528
  if (toRelativePath.startsWith(fromRelativePath + path_1.default.sep)) {
527
529
  throw new Error("Invalid paths.");
528
530
  }
529
- await fs_extra_1.default.move(fromLocalPath, toLocalPath, {
531
+ await this.sync.environment.fs.move(fromLocalPath, toLocalPath, {
530
532
  overwrite: true
531
533
  });
532
534
  }
533
- const stats = await fs_extra_1.default.stat(toLocalPath);
535
+ const stats = await this.sync.environment.fs.stat(toLocalPath);
534
536
  await this.itemsMutex.acquire();
535
537
  this.getDirectoryTreeCache.tree[toRelativePath] = Object.assign(Object.assign({}, item), { path: toRelativePath });
536
538
  this.getDirectoryTreeCache.inodes[item.inode] = Object.assign(Object.assign({}, item), { path: toRelativePath });
@@ -573,10 +575,9 @@ class LocalFileSystem {
573
575
  * @returns {Promise<CloudItem>}
574
576
  */
575
577
  async upload({ relativePath, passedMD5Hash }) {
576
- var _a;
577
578
  const localPath = path_1.default.join(this.sync.syncPair.localPath, relativePath);
578
579
  const signalKey = `upload:${relativePath}`;
579
- const stats = await fs_extra_1.default.stat(localPath);
580
+ const stats = await this.sync.environment.fs.stat(localPath);
580
581
  if (!this.sync.pauseSignals[signalKey]) {
581
582
  this.sync.pauseSignals[signalKey] = new sdk_1.PauseSignal();
582
583
  }
@@ -607,13 +608,12 @@ class LocalFileSystem {
607
608
  relativePath,
608
609
  algorithm: "md5"
609
610
  });
610
- this.sync.localFileHashes[relativePath] = md5Hash;
611
611
  const item = await this.sync.sdk.cloud().uploadLocalFile({
612
612
  source: localPath,
613
613
  parent: parentUUID,
614
614
  name: path_1.default.basename(localPath),
615
615
  pauseSignal: this.sync.pauseSignals[signalKey],
616
- abortSignal: (_a = this.sync.abortControllers[signalKey]) === null || _a === void 0 ? void 0 : _a.signal,
616
+ abortSignal: this.sync.abortControllers[signalKey].signal,
617
617
  onError: err => {
618
618
  this.sync.worker.logger.log("error", err, "filesystems.local.upload");
619
619
  this.sync.worker.logger.log("error", err);
@@ -659,6 +659,12 @@ class LocalFileSystem {
659
659
  });
660
660
  }
661
661
  });
662
+ // Record the dedup hash only AFTER the upload durably succeeds. Writing it before the await would
663
+ // poison the cache on a failed upload: because the task error gates the cycle and leaves the base
664
+ // unchanged, a later retry (after the host calls resetTaskErrors, which does NOT clear
665
+ // localFileHashes) would recompute the same hash, find it already cached, and SUPPRESS the
666
+ // re-upload — silently dropping the local edit and diverging the sides permanently. (F1)
667
+ this.sync.localFileHashes[relativePath] = md5Hash;
662
668
  await this.sync.remoteFileSystem.itemsMutex.acquire();
663
669
  this.sync.remoteFileSystem.getDirectoryTreeCache.tree[relativePath] = Object.assign(Object.assign({}, item), { path: relativePath });
664
670
  this.sync.remoteFileSystem.getDirectoryTreeCache.uuids[item.uuid] = Object.assign(Object.assign({}, item), { path: relativePath });
@@ -703,7 +709,7 @@ class LocalFileSystem {
703
709
  }
704
710
  async isPathWritable(path) {
705
711
  try {
706
- await fs_extra_1.default.access(path, fs_extra_1.default.constants.W_OK | fs_extra_1.default.constants.R_OK);
712
+ await this.sync.environment.fs.access(path, this.sync.environment.fs.constants.W_OK | this.sync.environment.fs.constants.R_OK);
707
713
  return true;
708
714
  }
709
715
  catch (_a) {
@@ -712,7 +718,7 @@ class LocalFileSystem {
712
718
  }
713
719
  async isPathReadable(path) {
714
720
  try {
715
- await fs_extra_1.default.access(path, fs_extra_1.default.constants.R_OK);
721
+ await this.sync.environment.fs.access(path, this.sync.environment.fs.constants.R_OK);
716
722
  return true;
717
723
  }
718
724
  catch (_a) {
@@ -721,7 +727,7 @@ class LocalFileSystem {
721
727
  }
722
728
  async pathExists(path) {
723
729
  try {
724
- return await fs_extra_1.default.exists(path);
730
+ return await this.sync.environment.fs.exists(path);
725
731
  }
726
732
  catch (_a) {
727
733
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"local.js","sourceRoot":"","sources":["../../../src/lib/filesystems/local.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"local.js","sourceRoot":"","sources":["../../../src/lib/filesystems/local.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,7 @@
1
- /// <reference types="node" />
2
1
  import type Sync from "../sync";
3
2
  import { type CloudItemTree, type FSItemType } from "@filen/sdk";
4
3
  import { Semaphore } from "../../semaphore";
5
- import fs from "fs-extra";
4
+ import { type Stats } from "fs-extra";
6
5
  import { type DistributiveOmit, type Prettify } from "../../types";
7
6
  export type RemoteItemBase = Prettify<DistributiveOmit<CloudItemTree, "parent" | "color" | "favorited" | "timestamp"> & {
8
7
  path: string;
@@ -26,6 +25,15 @@ export type RemoteTreeIgnored = {
26
25
  reason: RemoteTreeIgnoredReason;
27
26
  };
28
27
  export declare const DEVICE_ID_VERSION = 1;
28
+ /**
29
+ * How many remote items (folders, then files) are decrypted concurrently while building the tree. The
30
+ * build decrypts entries in fixed-size batches instead of mapping ALL entries to promises up front — on a
31
+ * tree with millions of entries that eager map allocated millions of pending promises + closures at once
32
+ * (an O(n) peak-memory spike). A batch caps peak concurrency — and therefore peak memory — without
33
+ * reducing throughput (the SDK's decrypt/IO services only a handful in parallel regardless), and the batch
34
+ * size IS the parallel-decrypt width (it replaces the old 1024-wide listSemaphore).
35
+ */
36
+ export declare const REMOTE_BUILD_CONCURRENCY = 1024;
29
37
  export declare class RemoteFileSystem {
30
38
  private readonly sync;
31
39
  getDirectoryTreeCache: {
@@ -38,7 +46,6 @@ export declare class RemoteFileSystem {
38
46
  private readonly mutex;
39
47
  private readonly mkdirMutex;
40
48
  readonly itemsMutex: Semaphore;
41
- readonly listSemaphore: Semaphore;
42
49
  private deviceIdCache;
43
50
  ignoredCache: Map<string, {
44
51
  ignored: true;
@@ -133,11 +140,11 @@ export declare class RemoteFileSystem {
133
140
  * @async
134
141
  * @param {{ relativePath: string }} param0
135
142
  * @param {string} param0.relativePath
136
- * @returns {Promise<fs.Stats>}
143
+ * @returns {Promise<Stats>}
137
144
  */
138
145
  download({ relativePath }: {
139
146
  relativePath: string;
140
- }): Promise<fs.Stats>;
147
+ }): Promise<Stats>;
141
148
  remoteDirPathExisting(): Promise<boolean>;
142
149
  directoryExists(relativePath: string): Promise<boolean>;
143
150
  fileExists(relativePath: string): Promise<boolean>;