@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
@@ -1 +1 @@
1
- {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/lib/tasks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/lib/tasks.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@
8
8
  export declare class Semaphore {
9
9
  private counter;
10
10
  private waiting;
11
+ private head;
11
12
  private maxCount;
12
13
  /**
13
14
  * Creates an instance of Semaphore.
package/dist/semaphore.js CHANGED
@@ -18,7 +18,13 @@ class Semaphore {
18
18
  */
19
19
  constructor(max = 1) {
20
20
  this.counter = 0;
21
+ // FIFO queue of pending acquirers. Appended on acquire and consumed from `head` on release, instead of
22
+ // `Array.shift()` — shift is O(n) (it re-indexes the whole array), so a large fan-out (e.g. every file
23
+ // of a huge tree awaiting one semaphore) was O(N²): the queue grows to ~N and each of the N releases
24
+ // shifted an ~N-length array. The head pointer makes each dequeue O(1) amortized; the consumed prefix
25
+ // is compacted occasionally so a long-lived semaphore never retains an unbounded backing array.
21
26
  this.waiting = [];
27
+ this.head = 0;
22
28
  this.maxCount = max;
23
29
  }
24
30
  /**
@@ -79,12 +85,14 @@ class Semaphore {
79
85
  * @returns {number}
80
86
  */
81
87
  purge() {
82
- const unresolved = this.waiting.length;
83
- for (const waiter of this.waiting) {
84
- waiter.reject("Task has been purged");
88
+ var _a;
89
+ const unresolved = this.waiting.length - this.head;
90
+ for (let i = this.head; i < this.waiting.length; i++) {
91
+ (_a = this.waiting[i]) === null || _a === void 0 ? void 0 : _a.reject("Task has been purged");
85
92
  }
86
93
  this.counter = 0;
87
94
  this.waiting = [];
95
+ this.head = 0;
88
96
  return unresolved;
89
97
  }
90
98
  /**
@@ -93,9 +101,18 @@ class Semaphore {
93
101
  * @private
94
102
  */
95
103
  processQueue() {
96
- if (this.waiting.length > 0 && this.counter < this.maxCount) {
104
+ if (this.head < this.waiting.length && this.counter < this.maxCount) {
97
105
  this.counter++;
98
- const waiter = this.waiting.shift();
106
+ const waiter = this.waiting[this.head];
107
+ // Null the consumed slot so its closure can be GC'd, then advance the head pointer (O(1) dequeue).
108
+ this.waiting[this.head] = undefined;
109
+ this.head++;
110
+ // Compact once the consumed prefix dominates the array (amortized O(1): a slice of length `head`
111
+ // runs at most once per `head` dequeues), so a long-running semaphore doesn't grow without bound.
112
+ if (this.head >= 1024 && this.head * 2 >= this.waiting.length) {
113
+ this.waiting = this.waiting.slice(this.head);
114
+ this.head = 0;
115
+ }
99
116
  if (waiter) {
100
117
  waiter.resolve();
101
118
  }
@@ -1 +1 @@
1
- {"version":3,"file":"semaphore.js","sourceRoot":"","sources":["../src/semaphore.ts"],"names":[],"mappings":";;;AAAA;;;;;;GAMG;AACH,MAAa,SAAS;IAQrB;;;;;;OAMG;IACH,YAAmB,MAAc,CAAC;QAd1B,YAAO,GAAW,CAAC,CAAA;QACnB,YAAO,GAGV,EAAE,CAAA;QAWN,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAA;IACpB,CAAC;IAED;;;;;OAKG;IACI,OAAO;QACb,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,IAAI,CAAC,OAAO,EAAE,CAAA;YAEd,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;QACzB,CAAC;aAAM,CAAC;YACP,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC5C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;oBACjB,OAAO;oBACP,MAAM;iBACN,CAAC,CAAA;YACH,CAAC,CAAC,CAAA;QACH,CAAC;IACF,CAAC;IAED;;;;OAIG;IACI,OAAO;QACb,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC;YACvB,OAAM;QACP,CAAC;QAED,IAAI,CAAC,OAAO,EAAE,CAAA;QAEd,IAAI,CAAC,YAAY,EAAE,CAAA;IACpB,CAAC;IAED;;;;;OAKG;IACI,KAAK;QACX,OAAO,IAAI,CAAC,OAAO,CAAA;IACpB,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,MAAc;QAC3B,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAA;QAEtB,IAAI,CAAC,YAAY,EAAE,CAAA;IACpB,CAAC;IAED;;;;;OAKG;IACI,KAAK;QACX,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAA;QAEtC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAA;QACtC,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,CAAC,CAAA;QAChB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;QAEjB,OAAO,UAAU,CAAA;IAClB,CAAC;IAED;;;;OAIG;IACK,YAAY;QACnB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC7D,IAAI,CAAC,OAAO,EAAE,CAAA;YAEd,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;YAEnC,IAAI,MAAM,EAAE,CAAC;gBACZ,MAAM,CAAC,OAAO,EAAE,CAAA;YACjB,CAAC;QACF,CAAC;IACF,CAAC;CACD;AAhHD,8BAgHC;AAED,kBAAe,SAAS,CAAA"}
1
+ {"version":3,"file":"semaphore.js","sourceRoot":"","sources":["../src/semaphore.ts"],"names":[],"mappings":";;;AAAA;;;;;;GAMG;AACH,MAAa,SAAS;IAiBrB;;;;;;OAMG;IACH,YAAmB,MAAc,CAAC;QAvB1B,YAAO,GAAW,CAAC,CAAA;QAC3B,uGAAuG;QACvG,uGAAuG;QACvG,qGAAqG;QACrG,sGAAsG;QACtG,gGAAgG;QACxF,YAAO,GAMX,EAAE,CAAA;QACE,SAAI,GAAW,CAAC,CAAA;QAWvB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAA;IACpB,CAAC;IAED;;;;;OAKG;IACI,OAAO;QACb,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,IAAI,CAAC,OAAO,EAAE,CAAA;YAEd,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;QACzB,CAAC;aAAM,CAAC;YACP,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC5C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;oBACjB,OAAO;oBACP,MAAM;iBACN,CAAC,CAAA;YACH,CAAC,CAAC,CAAA;QACH,CAAC;IACF,CAAC;IAED;;;;OAIG;IACI,OAAO;QACb,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC;YACvB,OAAM;QACP,CAAC;QAED,IAAI,CAAC,OAAO,EAAE,CAAA;QAEd,IAAI,CAAC,YAAY,EAAE,CAAA;IACpB,CAAC;IAED;;;;;OAKG;IACI,KAAK;QACX,OAAO,IAAI,CAAC,OAAO,CAAA;IACpB,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,MAAc;QAC3B,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAA;QAEtB,IAAI,CAAC,YAAY,EAAE,CAAA;IACpB,CAAC;IAED;;;;;OAKG;IACI,KAAK;;QACX,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAA;QAElD,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtD,MAAA,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,0CAAE,MAAM,CAAC,sBAAsB,CAAC,CAAA;QAChD,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,CAAC,CAAA;QAChB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;QACjB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAA;QAEb,OAAO,UAAU,CAAA;IAClB,CAAC;IAED;;;;OAIG;IACK,YAAY;QACnB,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YACrE,IAAI,CAAC,OAAO,EAAE,CAAA;YAEd,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAEtC,mGAAmG;YACnG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,SAAS,CAAA;YACnC,IAAI,CAAC,IAAI,EAAE,CAAA;YAEX,iGAAiG;YACjG,kGAAkG;YAClG,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC/D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAC5C,IAAI,CAAC,IAAI,GAAG,CAAC,CAAA;YACd,CAAC;YAED,IAAI,MAAM,EAAE,CAAC;gBACZ,MAAM,CAAC,OAAO,EAAE,CAAA;YACjB,CAAC;QACF,CAAC;IACF,CAAC;CACD;AArID,8BAqIC;AAED,kBAAe,SAAS,CAAA"}
package/dist/utils.js CHANGED
@@ -3,7 +3,26 @@ 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.isPathSyncedByICloud = exports.pathSyncedByICloud = exports.tryingToSyncDesktop = exports.fastHash = exports.normalizeLastModifiedMsForComparison = exports.normalizeUTime = exports.pathIncludesDotFile = exports.replacePathStartWithFromAndTo = exports.deserializeError = exports.serializeError = exports.isAbsolutePathIgnoredByDefault = exports.isRelativePathIgnoredByDefault = exports.isNameIgnoredByDefault = exports.isValidPath = exports.illegalCharsLinux = exports.illegalCharsMacOS = exports.reservedNamesWindows = exports.illegalCharsWindows = exports.isNameOverMaxLength = exports.isPathOverMaxLength = exports.convertTimestampToMs = exports.promiseAllSettledChunked = exports.promiseAllChunked = void 0;
6
+ exports.illegalCharsLinux = exports.illegalCharsMacOS = exports.reservedNamesWindows = exports.illegalCharsWindows = void 0;
7
+ exports.promiseAllChunked = promiseAllChunked;
8
+ exports.promiseAllSettledChunked = promiseAllSettledChunked;
9
+ exports.convertTimestampToMs = convertTimestampToMs;
10
+ exports.isPathOverMaxLength = isPathOverMaxLength;
11
+ exports.isNameOverMaxLength = isNameOverMaxLength;
12
+ exports.isValidPath = isValidPath;
13
+ exports.isNameIgnoredByDefault = isNameIgnoredByDefault;
14
+ exports.isRelativePathIgnoredByDefault = isRelativePathIgnoredByDefault;
15
+ exports.isAbsolutePathIgnoredByDefault = isAbsolutePathIgnoredByDefault;
16
+ exports.serializeError = serializeError;
17
+ exports.deserializeError = deserializeError;
18
+ exports.replacePathStartWithFromAndTo = replacePathStartWithFromAndTo;
19
+ exports.pathIncludesDotFile = pathIncludesDotFile;
20
+ exports.normalizeUTime = normalizeUTime;
21
+ exports.normalizeLastModifiedMsForComparison = normalizeLastModifiedMsForComparison;
22
+ exports.fastHash = fastHash;
23
+ exports.tryingToSyncDesktop = tryingToSyncDesktop;
24
+ exports.pathSyncedByICloud = pathSyncedByICloud;
25
+ exports.isPathSyncedByICloud = isPathSyncedByICloud;
7
26
  const constants_1 = require("./constants");
8
27
  const path_1 = __importDefault(require("path"));
9
28
  const crypto_1 = __importDefault(require("crypto"));
@@ -33,7 +52,6 @@ async function promiseAllChunked(promises, chunkSize = 10000, withResults = true
33
52
  }
34
53
  return results;
35
54
  }
36
- exports.promiseAllChunked = promiseAllChunked;
37
55
  /**
38
56
  * Chunk large Promise.allSettled executions.
39
57
  *
@@ -67,7 +85,6 @@ async function promiseAllSettledChunked(promises, chunkSize = 10000, withResults
67
85
  }
68
86
  return results;
69
87
  }
70
- exports.promiseAllSettledChunked = promiseAllSettledChunked;
71
88
  /**
72
89
  * Convert a timestamp from seconds to milliseconds.
73
90
  *
@@ -82,33 +99,41 @@ function convertTimestampToMs(timestamp) {
82
99
  }
83
100
  return Math.floor(timestamp * 1000);
84
101
  }
85
- exports.convertTimestampToMs = convertTimestampToMs;
86
102
  function isPathOverMaxLength(path) {
87
103
  if (process.platform === "linux") {
88
- return path.length + 1 > 4096;
104
+ // Linux PATH_MAX is 4096 BYTES (a pathname is a byte string), so count UTF-8 bytes — String.length
105
+ // (UTF-16 code units) undercounts a multibyte path and would let one the kernel rejects through.
106
+ return Buffer.byteLength(path, "utf8") + 1 > 4096;
89
107
  }
90
108
  else if (process.platform === "darwin") {
91
- return path.length + 1 > 1024;
109
+ // macOS PATH_MAX is 1024 BYTES too (verified empirically: a 473-UTF-16-unit / 1273-byte path is
110
+ // ENAMETOOLONG), so the full path is measured in UTF-8 bytes — unlike the NAME limit below.
111
+ return Buffer.byteLength(path, "utf8") + 1 > 1024;
92
112
  }
93
113
  else if (process.platform === "win32") {
114
+ // Windows paths are counted in UTF-16 code units (WCHAR), which is exactly String.length.
94
115
  return path.length + 1 > 512;
95
116
  }
96
- return path.length + 1 > 512;
117
+ return Buffer.byteLength(path, "utf8") + 1 > 512;
97
118
  }
98
- exports.isPathOverMaxLength = isPathOverMaxLength;
99
119
  function isNameOverMaxLength(name) {
100
120
  if (process.platform === "linux") {
101
- return name.length + 1 > 255;
121
+ // Linux NAME_MAX is 255 BYTES per path component, so count UTF-8 bytes. A multibyte name that fits
122
+ // in 255 UTF-16 code units but exceeds 255 bytes (e.g. 100 CJK chars = 300 bytes) was wrongly judged
123
+ // valid here, then failed at the filesystem with ENAMETOOLONG — retried fruitlessly every cycle.
124
+ return Buffer.byteLength(name, "utf8") + 1 > 255;
102
125
  }
103
126
  else if (process.platform === "darwin") {
127
+ // macOS limits a NAME to 255 UTF-16 code units (verified: 255 units / 765 bytes is fine, 256 units
128
+ // fails regardless of byte length), which is exactly String.length — NOT a byte limit.
104
129
  return name.length + 1 > 255;
105
130
  }
106
131
  else if (process.platform === "win32") {
132
+ // NTFS limits a name to 255 UTF-16 code units (WCHAR) = String.length.
107
133
  return name.length + 1 > 255;
108
134
  }
109
- return name.length + 1 > 255;
135
+ return Buffer.byteLength(name, "utf8") + 1 > 255;
110
136
  }
111
- exports.isNameOverMaxLength = isNameOverMaxLength;
112
137
  // eslint-disable-next-line no-control-regex
113
138
  exports.illegalCharsWindows = /[<>:"/\\|?*\x00-\x1F]/;
114
139
  exports.reservedNamesWindows = /^(con|prn|aux|nul|com[1-9]|lpt[1-9])$/i;
@@ -144,6 +169,13 @@ function isValidPath(inputPath) {
144
169
  if (parsedName.length > 0 && exports.reservedNamesWindows.test(parsedName)) {
145
170
  return false;
146
171
  }
172
+ // Windows silently strips trailing dots and spaces from a name, so a path ending in either would
173
+ // be created under a DIFFERENT name than recorded — an endless re-sync/duplication loop. Reject it
174
+ // (this also catches all-dots names like "." / ".." / "...", which strip to nothing) so it is
175
+ // reported invalid and ignored rather than synced. Leading and interior dots are unaffected. (M5)
176
+ if (/[. ]$/.test(part)) {
177
+ return false;
178
+ }
147
179
  }
148
180
  return true;
149
181
  }
@@ -174,7 +206,6 @@ function isValidPath(inputPath) {
174
206
  }
175
207
  }
176
208
  }
177
- exports.isValidPath = isValidPath;
178
209
  function isNameIgnoredByDefault(name) {
179
210
  const nameLowercase = name.toLowerCase().trim();
180
211
  const extension = path_1.default.extname(nameLowercase);
@@ -189,32 +220,24 @@ function isNameIgnoredByDefault(name) {
189
220
  }
190
221
  return false;
191
222
  }
192
- exports.isNameIgnoredByDefault = isNameIgnoredByDefault;
193
223
  function isRelativePathIgnoredByDefault(path) {
194
224
  return (path.split("/").some(part => part.length > 0 && isNameIgnoredByDefault(part)) ||
195
225
  micromatch_1.default.isMatch(path, constants_1.DEFAULT_IGNORED.relativeGlobs));
196
226
  }
197
- exports.isRelativePathIgnoredByDefault = isRelativePathIgnoredByDefault;
198
227
  function isAbsolutePathIgnoredByDefault(path) {
199
228
  return micromatch_1.default.isMatch(path, constants_1.DEFAULT_IGNORED.absoluteGlobs);
200
229
  }
201
- exports.isAbsolutePathIgnoredByDefault = isAbsolutePathIgnoredByDefault;
202
230
  function serializeError(error) {
203
- return {
204
- name: error.name,
205
- message: error.message,
206
- stack: error.stack,
207
- stringified: `${error.name}: ${error.message}`
208
- };
231
+ return Object.assign(Object.assign({ name: error.name, message: error.message }, (error.stack !== undefined ? { stack: error.stack } : {})), { stringified: `${error.name}: ${error.message}` });
209
232
  }
210
- exports.serializeError = serializeError;
211
233
  function deserializeError(serializedError) {
212
234
  const error = new Error(serializedError.message);
213
235
  error.name = serializedError.name;
214
- error.stack = serializedError.stack;
236
+ if (serializedError.stack !== undefined) {
237
+ error.stack = serializedError.stack;
238
+ }
215
239
  return error;
216
240
  }
217
- exports.deserializeError = deserializeError;
218
241
  /**
219
242
  * Replace a path with it's new parent path.
220
243
  *
@@ -245,7 +268,6 @@ function replacePathStartWithFromAndTo(path, from, to) {
245
268
  }
246
269
  return `${to}${path.slice(from.length)}`;
247
270
  }
248
- exports.replacePathStartWithFromAndTo = replacePathStartWithFromAndTo;
249
271
  /**
250
272
  * Check if a path includes a dot file.
251
273
  *
@@ -256,14 +278,12 @@ exports.replacePathStartWithFromAndTo = replacePathStartWithFromAndTo;
256
278
  function pathIncludesDotFile(path) {
257
279
  return path.split("/").some(part => part.length > 0 && part.trimStart().startsWith("."));
258
280
  }
259
- exports.pathIncludesDotFile = pathIncludesDotFile;
260
281
  function normalizeUTime(time) {
261
282
  if (Number.isInteger(time)) {
262
283
  return time;
263
284
  }
264
285
  return Math.floor(time);
265
286
  }
266
- exports.normalizeUTime = normalizeUTime;
267
287
  /**
268
288
  * We need to normalize lastModified times (milliseconds) for delta comparison.
269
289
  * Some filesystems provide different floating point precisions, therefore sometimes borking the comparison.
@@ -277,26 +297,24 @@ exports.normalizeUTime = normalizeUTime;
277
297
  function normalizeLastModifiedMsForComparison(time) {
278
298
  return Math.floor(time / 1000);
279
299
  }
280
- exports.normalizeLastModifiedMsForComparison = normalizeLastModifiedMsForComparison;
281
300
  function fastHash(input) {
282
301
  return crypto_1.default.createHash("md5").update(input).digest("hex");
283
302
  }
284
- exports.fastHash = fastHash;
285
303
  function tryingToSyncDesktop(path) {
286
304
  var _a, _b;
287
305
  if (process.platform !== "darwin") {
288
306
  return false;
289
307
  }
290
- return (path.trim().toLowerCase() === `/users/${(_a = process.env.USER) !== null && _a !== void 0 ? _a : "user"}/desktop` ||
291
- path.trim().toLowerCase() === `/users/${(_b = process.env.USER) !== null && _b !== void 0 ? _b : "user"}/desktop/`);
308
+ return (path.trim().toLowerCase() === `/users/${(_a = process.env["USER"]) !== null && _a !== void 0 ? _a : "user"}/desktop` ||
309
+ path.trim().toLowerCase() === `/users/${(_b = process.env["USER"]) !== null && _b !== void 0 ? _b : "user"}/desktop/`);
292
310
  }
293
- exports.tryingToSyncDesktop = tryingToSyncDesktop;
294
311
  async function pathSyncedByICloud(path) {
295
312
  if (process.platform !== "darwin") {
296
313
  return false;
297
314
  }
298
315
  return await new Promise(resolve => {
299
- (0, child_process_1.exec)(`xattr "${path}"`, (err, stdout, stderr) => {
316
+ // execFile (no shell) so the path can't be interpreted as a shell string.
317
+ (0, child_process_1.execFile)("xattr", [path], (err, stdout, stderr) => {
300
318
  if (err) {
301
319
  resolve(false);
302
320
  return;
@@ -313,7 +331,6 @@ async function pathSyncedByICloud(path) {
313
331
  });
314
332
  });
315
333
  }
316
- exports.pathSyncedByICloud = pathSyncedByICloud;
317
334
  async function isPathSyncedByICloud(path) {
318
335
  if (process.platform !== "darwin") {
319
336
  return false;
@@ -327,5 +344,4 @@ async function isPathSyncedByICloud(path) {
327
344
  }
328
345
  return false;
329
346
  }
330
- exports.isPathSyncedByICloud = isPathSyncedByICloud;
331
347
  //# sourceMappingURL=utils.js.map
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;;;;AAiBA,8CAcC;AAaD,4DA2BC;AASD,oDAQC;AAED,kDAeC;AAED,kDAgBC;AAUD,kCAgFC;AAED,wDAiBC;AAED,wEAKC;AAED,wEAEC;AASD,wCAOC;AAED,4CAUC;AAWD,sEA0BC;AASD,kDAEC;AAED,wCAMC;AAYD,oFAEC;AAED,4BAEC;AAED,kDASC;AAED,gDA6BC;AAED,oDAgBC;AArZD,2CAA6C;AAC7C,gDAA6B;AAC7B,oDAA2B;AAC3B,iDAAwC;AACxC,4DAAmC;AAEnC;;;;;;;;;;GAUG;AACI,KAAK,UAAU,iBAAiB,CAAI,QAAsB,EAAE,YAAoB,KAAK,EAAE,cAAuB,IAAI;IACxH,MAAM,OAAO,GAAQ,EAAE,CAAA;IAEvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC;QACrD,IAAI,WAAW,EAAE,CAAC;YACjB,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAA;YAExE,OAAO,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAA;QAC9B,CAAC;aAAM,CAAC;YACP,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAA;QACpD,CAAC;IACF,CAAC;IAED,OAAO,OAAO,CAAA;AACf,CAAC;AAED;;;;;;;;;;GAUG;AACI,KAAK,UAAU,wBAAwB,CAC7C,QAAsB,EACtB,YAAoB,KAAK,EACzB,cAAuB,IAAI;IAE3B,MAAM,OAAO,GAAQ,EAAE,CAAA;IAEvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC;QACrD,IAAI,WAAW,EAAE,CAAC;YACjB,MAAM,oBAAoB,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAA;YACvF,MAAM,YAAY,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC,GAAQ,EAAE,OAAO,EAAE,EAAE;gBACtE,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;oBACpC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;gBACxB,CAAC;qBAAM,CAAC;oBACP,2EAA2E;gBAC5E,CAAC;gBAED,OAAO,GAAG,CAAA;YACX,CAAC,EAAE,EAAE,CAAC,CAAA;YAEN,OAAO,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAA;QAC9B,CAAC;aAAM,CAAC;YACP,MAAM,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAA;QAC3D,CAAC;IACF,CAAC;IAED,OAAO,OAAO,CAAA;AACf,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,oBAAoB,CAAC,SAAiB;IACrD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAEtB,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC;QAClE,OAAO,SAAS,CAAA;IACjB,CAAC;IAED,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,CAAA;AACpC,CAAC;AAED,SAAgB,mBAAmB,CAAC,IAAY;IAC/C,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAClC,mGAAmG;QACnG,iGAAiG;QACjG,OAAO,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;IAClD,CAAC;SAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1C,gGAAgG;QAChG,4FAA4F;QAC5F,OAAO,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;IAClD,CAAC;SAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzC,0FAA0F;QAC1F,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,CAAA;IAC7B,CAAC;IAED,OAAO,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAA;AACjD,CAAC;AAED,SAAgB,mBAAmB,CAAC,IAAY;IAC/C,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAClC,mGAAmG;QACnG,qGAAqG;QACrG,iGAAiG;QACjG,OAAO,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAA;IACjD,CAAC;SAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1C,mGAAmG;QACnG,uFAAuF;QACvF,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,CAAA;IAC7B,CAAC;SAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzC,uEAAuE;QACvE,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,CAAA;IAC7B,CAAC;IAED,OAAO,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAA;AACjD,CAAC;AAED,4CAA4C;AAC/B,QAAA,mBAAmB,GAAG,uBAAuB,CAAA;AAC7C,QAAA,oBAAoB,GAAG,wCAAwC,CAAA;AAC5E,+DAA+D;AAClD,QAAA,iBAAiB,GAAG,WAAW,CAAA;AAC5C,4CAA4C;AAC/B,QAAA,iBAAiB,GAAG,QAAQ,CAAA;AAEzC,SAAgB,WAAW,CAAC,SAAiB;IAC5C,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAClC,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAC1C,CAAC;IAED;;;;;OAKG;IAEH,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAElC,QAAQ,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC1B,KAAK,OAAO,CAAC,CAAC,CAAC;YACd,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBAC1B,oCAAoC;gBACpC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;oBACzG,SAAQ;gBACT,CAAC;gBAED,IAAI,2BAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBACpC,OAAO,KAAK,CAAA;gBACb,CAAC;gBAED,IAAI,4BAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBACrC,OAAO,KAAK,CAAA;gBACb,CAAC;gBAED,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,cAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;gBAE1E,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,4BAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;oBACpE,OAAO,KAAK,CAAA;gBACb,CAAC;gBAED,iGAAiG;gBACjG,mGAAmG;gBACnG,8FAA8F;gBAC9F,kGAAkG;gBAClG,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBACxB,OAAO,KAAK,CAAA;gBACb,CAAC;YACF,CAAC;YAED,OAAO,IAAI,CAAA;QACZ,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACf,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBAC1B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC9B,SAAQ;gBACT,CAAC;gBAED,IAAI,yBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBAClC,OAAO,KAAK,CAAA;gBACb,CAAC;YACF,CAAC;YAED,OAAO,IAAI,CAAA;QACZ,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YACd,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBAC1B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC9B,SAAQ;gBACT,CAAC;gBAED,IAAI,yBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBAClC,OAAO,KAAK,CAAA;gBACb,CAAC;YACF,CAAC;YAED,OAAO,IAAI,CAAA;QACZ,CAAC;QAED,OAAO,CAAC,CAAC,CAAC;YACT,OAAO,KAAK,CAAA;QACb,CAAC;IACF,CAAC;AACF,CAAC;AAED,SAAgB,sBAAsB,CAAC,IAAY;IAClD,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAA;IAC/C,MAAM,SAAS,GAAG,cAAU,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;IACnD,MAAM,kBAAkB,GAAG,SAAS,CAAC,WAAW,EAAE,CAAA;IAElD,IACC,aAAa,CAAC,MAAM,KAAK,CAAC;QAC1B,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC;QACnC,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC;QAClC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC;QAC9B,CAAC,kBAAkB,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,IAAI,2BAAe,CAAC,UAAU,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;QAChH,2BAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,EAC5C,CAAC;QACF,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,OAAO,KAAK,CAAA;AACb,CAAC;AAED,SAAgB,8BAA8B,CAAC,IAAY;IAC1D,OAAO,CACN,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC7E,oBAAU,CAAC,OAAO,CAAC,IAAI,EAAE,2BAAe,CAAC,aAAa,CAAC,CACvD,CAAA;AACF,CAAC;AAED,SAAgB,8BAA8B,CAAC,IAAY;IAC1D,OAAO,oBAAU,CAAC,OAAO,CAAC,IAAI,EAAE,2BAAe,CAAC,aAAa,CAAC,CAAA;AAC/D,CAAC;AASD,SAAgB,cAAc,CAAC,KAAY;IAC1C,qCACC,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,OAAO,EAAE,KAAK,CAAC,OAAO,IACnB,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAC5D,WAAW,EAAE,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,IAC9C;AACF,CAAC;AAED,SAAgB,gBAAgB,CAAC,eAAgC;IAChE,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;IAEhD,KAAK,CAAC,IAAI,GAAG,eAAe,CAAC,IAAI,CAAA;IAEjC,IAAI,eAAe,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QACzC,KAAK,CAAC,KAAK,GAAG,eAAe,CAAC,KAAK,CAAA;IACpC,CAAC;IAED,OAAO,KAAK,CAAA;AACb,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,6BAA6B,CAAC,IAAY,EAAE,IAAY,EAAE,EAAU;IACnF,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IACtC,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IACtC,CAAC;IAED,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAChC,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,IAAI,GAAG,IAAI,IAAI,EAAE,CAAA;IAClB,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,IAAI,GAAG,IAAI,IAAI,EAAE,CAAA;IAClB,CAAC;IAED,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,EAAE,GAAG,IAAI,EAAE,EAAE,CAAA;IACd,CAAC;IAED,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAA;AACzC,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,mBAAmB,CAAC,IAAY;IAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA;AACzF,CAAC;AAED,SAAgB,cAAc,CAAC,IAAY;IAC1C,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AACxB,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,oCAAoC,CAAC,IAAY;IAChE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAA;AAC/B,CAAC;AAED,SAAgB,QAAQ,CAAC,KAAa;IACrC,OAAO,gBAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC5D,CAAC;AAED,SAAgB,mBAAmB,CAAC,IAAY;;IAC/C,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACnC,OAAO,KAAK,CAAA;IACb,CAAC;IAED,OAAO,CACN,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,UAAU,MAAA,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,mCAAI,MAAM,UAAU;QAC/E,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,UAAU,MAAA,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,mCAAI,MAAM,WAAW,CAChF,CAAA;AACF,CAAC;AAEM,KAAK,UAAU,kBAAkB,CAAC,IAAY;IACpD,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACnC,OAAO,KAAK,CAAA;IACb,CAAC;IAED,OAAO,MAAM,IAAI,OAAO,CAAU,OAAO,CAAC,EAAE;QAC3C,0EAA0E;QAC1E,IAAA,wBAAQ,EAAC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YACjD,IAAI,GAAG,EAAE,CAAC;gBACT,OAAO,CAAC,KAAK,CAAC,CAAA;gBAEd,OAAM;YACP,CAAC;YAED,IAAI,MAAM,EAAE,CAAC;gBACZ,OAAO,CAAC,KAAK,CAAC,CAAA;gBAEd,OAAM;YACP,CAAC;YAED,OAAO,CACN,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBAC/C,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;gBACjD,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;gBACvD,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;gBACxD,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CACrD,CAAA;QACF,CAAC,CAAC,CAAA;IACH,CAAC,CAAC,CAAA;AACH,CAAC;AAEM,KAAK,UAAU,oBAAoB,CAAC,IAAY;IACtD,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACnC,OAAO,KAAK,CAAA;IACb,CAAC;IAED,IAAI,WAAW,GAAG,IAAI,CAAA;IAEtB,OAAO,WAAW,KAAK,GAAG,IAAI,WAAW,KAAK,GAAG,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7E,IAAI,MAAM,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAC;YAC3C,OAAO,IAAI,CAAA;QACZ,CAAC;QAED,WAAW,GAAG,cAAU,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;IAC9C,CAAC;IAED,OAAO,KAAK,CAAA;AACb,CAAC"}
@@ -0,0 +1,36 @@
1
+ import js from "@eslint/js"
2
+ import tseslint from "typescript-eslint"
3
+ import globals from "globals"
4
+
5
+ export default tseslint.config([
6
+ {
7
+ ignores: ["dist/**", "node_modules/**", "dev/**", "docs/**", "coverage/**"]
8
+ },
9
+ js.configs.recommended,
10
+ ...tseslint.configs.recommended,
11
+ {
12
+ languageOptions: {
13
+ globals: {
14
+ ...globals.node
15
+ }
16
+ },
17
+ rules: {
18
+ eqeqeq: "error",
19
+ quotes: ["error", "double"],
20
+ "no-mixed-spaces-and-tabs": "off",
21
+ "no-duplicate-imports": "error",
22
+ // Honor the leading-underscore convention for intentionally-unused bindings,
23
+ // matching TypeScript's own noUnusedLocals/noUnusedParameters behavior.
24
+ "@typescript-eslint/no-unused-vars": [
25
+ "error",
26
+ {
27
+ argsIgnorePattern: "^_",
28
+ varsIgnorePattern: "^_",
29
+ caughtErrorsIgnorePattern: "^_",
30
+ destructuredArrayIgnorePattern: "^_",
31
+ ignoreRestSiblings: true
32
+ }
33
+ ]
34
+ }
35
+ }
36
+ ])
package/package.json CHANGED
@@ -1,13 +1,17 @@
1
1
  {
2
2
  "name": "@filen/sync",
3
- "version": "0.2.1",
3
+ "version": "0.3.2",
4
4
  "description": "Filen Sync",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "private": false,
8
8
  "scripts": {
9
- "test": "jest",
10
- "lint": "eslint src/**/* --ext .js,.jsx,.ts,.tsx",
9
+ "test": "vitest run",
10
+ "test:watch": "vitest",
11
+ "test:coverage": "vitest run --coverage",
12
+ "test:e2e": "vitest run --config vitest.e2e.config.ts",
13
+ "lint": "eslint \"src/**/*.ts\" \"tests/**/*.ts\"",
14
+ "typecheck": "tsc --noEmit -p tsconfig.test.json",
11
15
  "emitTypes": "tsc --emitDeclarationOnly",
12
16
  "tsc": "tsc --build",
13
17
  "clear": "rimraf ./dist",
@@ -25,7 +29,7 @@
25
29
  "filen"
26
30
  ],
27
31
  "engines": {
28
- "node": ">=20"
32
+ "node": ">=24"
29
33
  },
30
34
  "author": "Filen",
31
35
  "license": "AGPLv3",
@@ -34,33 +38,33 @@
34
38
  },
35
39
  "homepage": "https://filen.io",
36
40
  "devDependencies": {
37
- "@jest/globals": "^29.7.0",
41
+ "@eslint/js": "^10.0.1",
42
+ "@microsoft/eslint-formatter-sarif": "^3.1.0",
38
43
  "@types/fs-extra": "^11.0.4",
39
- "@types/jest": "^29.5.12",
40
44
  "@types/micromatch": "^4.0.9",
41
45
  "@types/mime-types": "^2.1.4",
42
46
  "@types/uuid": "^10.0.0",
43
47
  "@types/write-file-atomic": "^4.0.3",
44
- "@typescript-eslint/eslint-plugin": "^6.20.0",
45
- "@typescript-eslint/parser": "^6.20.0",
48
+ "@vitest/coverage-v8": "^4.1.9",
46
49
  "cross-env": "^7.0.3",
47
- "eslint": "^8.56.0",
48
- "jest": "^29.7.0",
50
+ "eslint": "^10.6.0",
51
+ "globals": "^17.7.0",
52
+ "memfs": "^4.57.8",
49
53
  "rimraf": "^5.0.5",
50
- "ts-jest": "^29.1.5",
51
54
  "ts-node": "^10.9.2",
52
55
  "tsx": "^4.11.0",
53
- "typescript": "^5.3.3",
56
+ "typescript": "~5.9",
57
+ "typescript-eslint": "^8.62.0",
58
+ "vitest": "^4.1.9",
54
59
  "wait-on": "^7.2.0"
55
60
  },
56
61
  "dependencies": {
57
- "@filen/sdk": "^0.3.7",
58
- "@parcel/watcher": "^2.5.1",
62
+ "@filen/sdk": "^0.4.1",
59
63
  "fast-glob": "^3.3.3",
60
64
  "fs-extra": "^11.3.0",
61
65
  "ignore": "^7.0.3",
62
66
  "micromatch": "^4.0.8",
63
- "node-watch": "^0.7.4",
67
+ "msgpackr": "^2.0.4",
64
68
  "pino": "^9.5.0",
65
69
  "rotating-file-stream": "^3.2.5",
66
70
  "uuid": "^11.0.5",
@@ -0,0 +1,114 @@
1
+ import { describe, it, expect } from "vitest"
2
+ import { bench } from "./harness/measure"
3
+ import { collapseDeltas, type Delta } from "../../src/lib/deltas"
4
+
5
+ /**
6
+ * collapseDeltas benchmark. After a directory rename/delete the diff emits a delta for every descendant;
7
+ * collapseDeltas folds them into the parent op. It runs every change-cycle and the rename-top-dir delta
8
+ * scenario showed up as the most expensive delta case, so its cost on a big subtree matters.
9
+ */
10
+
11
+ /** One top-dir rename + `children` descendant renames that should all collapse into the parent. */
12
+ function renameSubtree(children: number): {
13
+ deltas: Delta[]
14
+ renamedRemoteDirectories: Delta[]
15
+ } {
16
+ const parent: Delta = { type: "renameRemoteDirectory", path: "/dir", from: "/dir", to: "/dir2" }
17
+ const deltas: Delta[] = [parent]
18
+
19
+ for (let i = 0; i < children; i++) {
20
+ // Spread across nested subdirs so nearestAncestor walks a few levels.
21
+ const sub = i % 50
22
+ deltas.push({
23
+ type: "renameRemoteFile",
24
+ path: `/dir/sub-${sub}/file-${i}.txt`,
25
+ from: `/dir/sub-${sub}/file-${i}.txt`,
26
+ to: `/dir2/sub-${sub}/file-${i}.txt`
27
+ })
28
+ }
29
+
30
+ return { deltas, renamedRemoteDirectories: [parent] }
31
+ }
32
+
33
+ /** One top-dir delete + `children` descendant deletes that should all collapse. */
34
+ function deleteSubtree(children: number): {
35
+ deltas: Delta[]
36
+ deletedRemoteDirectories: Delta[]
37
+ } {
38
+ const parent: Delta = { type: "deleteRemoteDirectory", path: "/dir" }
39
+ const deltas: Delta[] = [parent]
40
+
41
+ for (let i = 0; i < children; i++) {
42
+ const sub = i % 50
43
+ deltas.push({ type: "deleteRemoteFile", path: `/dir/sub-${sub}/file-${i}.txt` })
44
+ }
45
+
46
+ return { deltas, deletedRemoteDirectories: [parent] }
47
+ }
48
+
49
+ describe("collapseDeltas", () => {
50
+ it("rename subtree collapse", async () => {
51
+ for (const children of [10_000, 100_000, 500_000]) {
52
+ const input = renameSubtree(children)
53
+
54
+ const collapsed = collapseDeltas({
55
+ deltas: input.deltas,
56
+ renamedLocalDirectories: [],
57
+ renamedRemoteDirectories: input.renamedRemoteDirectories,
58
+ deletedLocalDirectories: [],
59
+ deletedRemoteDirectories: []
60
+ })
61
+
62
+ // Every child folds into the single parent rename.
63
+ expect(collapsed.length).toBe(1)
64
+
65
+ await bench({
66
+ group: "collapseDeltas / rename subtree",
67
+ name: `1 dir rename + ${children} children`,
68
+ n: children,
69
+ iterations: 5,
70
+ setup: () => input,
71
+ run: i =>
72
+ collapseDeltas({
73
+ deltas: i.deltas,
74
+ renamedLocalDirectories: [],
75
+ renamedRemoteDirectories: i.renamedRemoteDirectories,
76
+ deletedLocalDirectories: [],
77
+ deletedRemoteDirectories: []
78
+ })
79
+ })
80
+ }
81
+ })
82
+
83
+ it("delete subtree collapse", async () => {
84
+ for (const children of [10_000, 100_000, 500_000]) {
85
+ const input = deleteSubtree(children)
86
+
87
+ const collapsed = collapseDeltas({
88
+ deltas: input.deltas,
89
+ renamedLocalDirectories: [],
90
+ renamedRemoteDirectories: [],
91
+ deletedLocalDirectories: [],
92
+ deletedRemoteDirectories: input.deletedRemoteDirectories
93
+ })
94
+
95
+ expect(collapsed.length).toBe(1)
96
+
97
+ await bench({
98
+ group: "collapseDeltas / delete subtree",
99
+ name: `1 dir delete + ${children} children`,
100
+ n: children,
101
+ iterations: 5,
102
+ setup: () => input,
103
+ run: i =>
104
+ collapseDeltas({
105
+ deltas: i.deltas,
106
+ renamedLocalDirectories: [],
107
+ renamedRemoteDirectories: [],
108
+ deletedLocalDirectories: [],
109
+ deletedRemoteDirectories: i.deletedRemoteDirectories
110
+ })
111
+ })
112
+ }
113
+ })
114
+ })