@filen/sync 0.1.1 → 0.1.4

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 (48) hide show
  1. package/LICENSE +661 -661
  2. package/README.md +1 -1
  3. package/SECURITY.md +17 -17
  4. package/dist/constants.d.ts +7 -0
  5. package/dist/constants.js +51 -1
  6. package/dist/constants.js.map +1 -1
  7. package/dist/ignorer.d.ts +14 -0
  8. package/dist/ignorer.js +69 -0
  9. package/dist/ignorer.js.map +1 -0
  10. package/dist/index.d.ts +31 -17
  11. package/dist/index.js +125 -24
  12. package/dist/index.js.map +1 -1
  13. package/dist/lib/deltas.d.ts +9 -31
  14. package/dist/lib/deltas.js +194 -99
  15. package/dist/lib/deltas.js.map +1 -1
  16. package/dist/lib/filesystems/local.d.ts +32 -43
  17. package/dist/lib/filesystems/local.js +383 -106
  18. package/dist/lib/filesystems/local.js.map +1 -1
  19. package/dist/lib/filesystems/remote.d.ts +21 -7
  20. package/dist/lib/filesystems/remote.js +531 -67
  21. package/dist/lib/filesystems/remote.js.map +1 -1
  22. package/dist/lib/ipc.d.ts +9 -0
  23. package/dist/lib/ipc.js +60 -0
  24. package/dist/lib/ipc.js.map +1 -0
  25. package/dist/lib/lock.d.ts +13 -0
  26. package/dist/lib/lock.js +73 -0
  27. package/dist/lib/lock.js.map +1 -0
  28. package/dist/lib/logger.d.ts +14 -0
  29. package/dist/lib/logger.js +93 -0
  30. package/dist/lib/logger.js.map +1 -0
  31. package/dist/lib/state.d.ts +4 -15
  32. package/dist/lib/state.js +106 -87
  33. package/dist/lib/state.js.map +1 -1
  34. package/dist/lib/sync.d.ts +30 -10
  35. package/dist/lib/sync.js +363 -36
  36. package/dist/lib/sync.js.map +1 -1
  37. package/dist/lib/tasks.d.ts +27 -40
  38. package/dist/lib/tasks.js +397 -48
  39. package/dist/lib/tasks.js.map +1 -1
  40. package/dist/types.d.ts +340 -0
  41. package/dist/utils.d.ts +42 -0
  42. package/dist/utils.js +164 -1
  43. package/dist/utils.js.map +1 -1
  44. package/index.d.ts +6 -295
  45. package/jest.config.js +5 -0
  46. package/package.json +62 -58
  47. package/tests/utils.test.ts +33 -0
  48. package/tsconfig.json +24 -24
package/dist/lib/state.js CHANGED
@@ -6,7 +6,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.State = void 0;
7
7
  const path_1 = __importDefault(require("path"));
8
8
  const fs_extra_1 = __importDefault(require("fs-extra"));
9
- const msgpackr_1 = require("msgpackr");
9
+ const v8_1 = require("v8");
10
+ const utils_1 = require("../utils");
10
11
  const STATE_VERSION = 1;
11
12
  /**
12
13
  * State
@@ -17,18 +18,9 @@ const STATE_VERSION = 1;
17
18
  * @typedef {State}
18
19
  */
19
20
  class State {
20
- /**
21
- * Creates an instance of State.
22
- * @date 3/1/2024 - 11:11:36 PM
23
- *
24
- * @constructor
25
- * @public
26
- * @param {{ sync: Sync }} param0
27
- * @param {Sync} param0.sync
28
- */
29
- constructor({ sync }) {
21
+ constructor(sync) {
30
22
  this.sync = sync;
31
- this.statePath = path_1.default.join(this.sync.dbPath, "state", `v${STATE_VERSION}`);
23
+ this.statePath = path_1.default.join(this.sync.dbPath, "state", `v${STATE_VERSION}`, sync.syncPair.uuid);
32
24
  }
33
25
  applyDoneTasksToState({ doneTasks, currentLocalTree, currentRemoteTree }) {
34
26
  // Work on the done tasks from "right to left" (descending order, path length).
@@ -36,68 +28,75 @@ class State {
36
28
  const tasks = doneTasks.sort((a, b) => b.path.split("/").length - a.path.split("/").length);
37
29
  for (const task of tasks) {
38
30
  switch (task.type) {
39
- case "renameRemoteDirectory":
40
- case "renameRemoteFile":
41
- case "moveRemoteDirectory":
42
- case "moveRemoteFile": {
43
- for (const oldPath in currentRemoteTree.tree) {
44
- if (oldPath.startsWith(task.from + "/") || oldPath === task.from) {
45
- const newPath = oldPath.split(task.from).join(task.to);
46
- const oldItem = currentRemoteTree.tree[oldPath];
47
- if (oldItem) {
48
- const item = Object.assign(Object.assign({}, oldItem), { path: newPath, name: path_1.default.posix.basename(newPath) });
49
- currentRemoteTree.tree[newPath] = item;
50
- delete currentRemoteTree.tree[oldPath];
51
- }
52
- }
53
- }
54
- for (const uuid in currentRemoteTree.uuids) {
55
- const currentItem = currentRemoteTree.uuids[uuid];
56
- if (!currentItem) {
57
- continue;
58
- }
59
- const oldPath = currentItem.path;
60
- if (oldPath.startsWith(task.from + "/") || oldPath === task.from) {
61
- const newPath = oldPath.split(task.from).join(task.to);
62
- const item = Object.assign(Object.assign({}, currentItem), { path: newPath, name: path_1.default.posix.basename(newPath) });
63
- currentRemoteTree.uuids[uuid] = item;
64
- }
65
- }
66
- break;
67
- }
68
- case "moveLocalDirectory":
69
- case "moveLocalFile":
70
31
  case "renameLocalDirectory":
71
32
  case "renameLocalFile": {
33
+ if (this.sync.localFileHashes[task.from]) {
34
+ this.sync.localFileHashes[task.to] = this.sync.localFileHashes[task.from];
35
+ }
36
+ delete this.sync.localFileHashes[task.from];
37
+ const oldItem = currentLocalTree.tree[task.from];
38
+ if (oldItem) {
39
+ currentLocalTree.tree[task.to] = Object.assign(Object.assign({}, oldItem), { path: task.to });
40
+ currentLocalTree.inodes[oldItem.inode] = Object.assign(Object.assign({}, oldItem), { path: task.to });
41
+ }
42
+ delete currentLocalTree.tree[task.from];
72
43
  for (const oldPath in currentLocalTree.tree) {
73
- if (oldPath.startsWith(task.from + "/") || oldPath === task.from) {
74
- const newPath = oldPath.split(task.from).join(task.to);
44
+ if (oldPath.startsWith(task.from + "/") && oldPath !== task.from) {
45
+ const newPath = (0, utils_1.replacePathStartWithFromAndTo)(oldPath, task.from, task.to);
75
46
  const oldItem = currentLocalTree.tree[oldPath];
76
47
  if (oldItem) {
77
48
  const item = Object.assign(Object.assign({}, oldItem), { path: newPath });
78
49
  currentLocalTree.tree[newPath] = item;
79
50
  delete currentLocalTree.tree[oldPath];
51
+ const oldItemINode = currentLocalTree.inodes[oldItem.inode];
52
+ if (oldItemINode) {
53
+ currentLocalTree.inodes[oldItem.inode] = Object.assign(Object.assign({}, oldItemINode), { path: newPath });
54
+ }
55
+ }
56
+ const oldItemHash = this.sync.localFileHashes[oldPath];
57
+ if (oldItemHash) {
58
+ this.sync.localFileHashes[newPath] = oldItemHash;
59
+ delete this.sync.localFileHashes[oldPath];
80
60
  }
81
61
  }
82
62
  }
83
- for (const inode in currentLocalTree.inodes) {
84
- const currentItem = currentLocalTree.inodes[inode];
85
- if (!currentItem) {
86
- continue;
87
- }
88
- const oldPath = currentItem.path;
89
- if (oldPath.startsWith(task.from + "/") || oldPath === task.from) {
90
- const newPath = oldPath.split(task.from).join(task.to);
91
- const item = Object.assign(Object.assign({}, currentItem), { path: newPath });
92
- currentLocalTree.inodes[inode] = item;
63
+ break;
64
+ }
65
+ case "renameRemoteDirectory":
66
+ case "renameRemoteFile": {
67
+ const oldItem = currentRemoteTree.tree[task.from];
68
+ if (oldItem) {
69
+ const newItem = Object.assign(Object.assign({}, oldItem), { path: task.to, name: path_1.default.posix.basename(task.to) });
70
+ currentRemoteTree.tree[task.to] = newItem;
71
+ currentRemoteTree.uuids[oldItem.uuid] = newItem;
72
+ }
73
+ delete currentRemoteTree.tree[task.from];
74
+ for (const oldPath in currentRemoteTree.tree) {
75
+ if (oldPath.startsWith(task.from + "/") && oldPath !== task.from) {
76
+ const newPath = (0, utils_1.replacePathStartWithFromAndTo)(oldPath, task.from, task.to);
77
+ const oldItem = currentRemoteTree.tree[oldPath];
78
+ if (oldItem) {
79
+ const newItem = Object.assign(Object.assign({}, oldItem), { path: newPath, name: path_1.default.posix.basename(newPath) });
80
+ currentRemoteTree.tree[newPath] = newItem;
81
+ delete currentRemoteTree.tree[oldPath];
82
+ const oldItemUUID = currentRemoteTree.uuids[oldItem.uuid];
83
+ if (oldItemUUID) {
84
+ currentRemoteTree.uuids[oldItemUUID.uuid] = Object.assign(Object.assign({}, oldItemUUID), { path: newPath, name: path_1.default.posix.basename(newPath) });
85
+ }
86
+ }
93
87
  }
94
88
  }
95
89
  break;
96
90
  }
97
91
  case "deleteLocalDirectory":
98
- case "deleteLocalFile":
99
- case "deleteRemoteDirectory":
100
- case "deleteRemoteFile": {
92
+ case "deleteLocalFile": {
93
+ delete this.sync.localFileHashes[task.path];
94
+ delete currentLocalTree.tree[task.path];
95
+ for (const path in this.sync.localFileHashes) {
96
+ if (path.startsWith(task.path + "/") || path === task.path) {
97
+ delete this.sync.localFileHashes[path];
98
+ }
99
+ }
101
100
  for (const path in currentLocalTree.tree) {
102
101
  if (path.startsWith(task.path + "/") || path === task.path) {
103
102
  delete currentLocalTree.tree[path];
@@ -113,6 +112,11 @@ class State {
113
112
  delete currentLocalTree.inodes[inode];
114
113
  }
115
114
  }
115
+ break;
116
+ }
117
+ case "deleteRemoteDirectory":
118
+ case "deleteRemoteFile": {
119
+ delete currentRemoteTree.tree[task.path];
116
120
  for (const path in currentRemoteTree.tree) {
117
121
  if (path.startsWith(task.path + "/") || path === task.path) {
118
122
  delete currentRemoteTree.tree[path];
@@ -128,38 +132,51 @@ class State {
128
132
  delete currentRemoteTree.uuids[uuid];
129
133
  }
130
134
  }
131
- delete this.sync.localFileHashes[task.path];
132
135
  break;
133
136
  }
134
137
  case "createRemoteDirectory": {
135
- const item = {
136
- name: path_1.default.posix.basename(task.path),
138
+ const localItem = {
139
+ lastModified: parseInt(task.stats.mtimeMs), // Sometimes comes as a float, but we need an int
137
140
  type: "directory",
138
- uuid: task.uuid,
141
+ path: task.path,
139
142
  size: 0,
140
- path: task.path
143
+ creation: parseInt(task.stats.mtimeMs), // Sometimes comes as a float, but we need an int
144
+ inode: parseInt(task.stats.ino) // Sometimes comes as a float, but we need an int
141
145
  };
142
- currentRemoteTree.tree[task.path] = item;
143
- currentRemoteTree.uuids[item.uuid] = item;
146
+ currentRemoteTree.tree[task.item.path] = task.item;
147
+ currentRemoteTree.uuids[task.item.uuid] = task.item;
148
+ currentLocalTree.tree[task.path] = localItem;
149
+ currentLocalTree.inodes[localItem.inode] = localItem;
144
150
  break;
145
151
  }
146
152
  case "uploadFile": {
147
- const item = Object.assign(Object.assign({}, task.item), { path: task.path });
148
- currentRemoteTree.tree[task.path] = item;
149
- currentRemoteTree.uuids[item.uuid] = item;
153
+ const localItem = {
154
+ lastModified: parseInt(task.stats.mtimeMs), // Sometimes comes as a float, but we need an int
155
+ type: "file",
156
+ path: task.path,
157
+ size: parseInt(task.stats.size), // Sometimes comes as a float, but we need an int
158
+ creation: parseInt(task.stats.mtimeMs), // Sometimes comes as a float, but we need an int
159
+ inode: parseInt(task.stats.ino) // Sometimes comes as a float, but we need an int
160
+ };
161
+ currentRemoteTree.tree[task.item.path] = task.item;
162
+ currentRemoteTree.uuids[task.item.uuid] = task.item;
163
+ currentLocalTree.tree[task.path] = localItem;
164
+ currentLocalTree.inodes[localItem.inode] = localItem;
150
165
  break;
151
166
  }
152
167
  case "createLocalDirectory": {
153
- const item = {
168
+ const localItem = {
154
169
  lastModified: parseInt(task.stats.mtimeMs), // Sometimes comes as a float, but we need an int
155
170
  type: "directory",
156
171
  path: task.path,
157
172
  creation: parseInt(task.stats.birthtimeMs), // Sometimes comes as a float, but we need an int
158
- size: task.stats.size,
159
- inode: task.stats.ino
173
+ size: parseInt(task.stats.size), // Sometimes comes as a float, but we need an int
174
+ inode: parseInt(task.stats.ino) // Sometimes comes as a float, but we need an int
160
175
  };
161
- currentLocalTree.tree[task.path] = item;
162
- currentLocalTree.inodes[item.inode] = item;
176
+ currentLocalTree.tree[task.path] = localItem;
177
+ currentLocalTree.inodes[localItem.inode] = localItem;
178
+ currentRemoteTree.tree[task.item.path] = task.item;
179
+ currentRemoteTree.uuids[task.item.uuid] = task.item;
163
180
  break;
164
181
  }
165
182
  case "downloadFile": {
@@ -168,11 +185,13 @@ class State {
168
185
  type: "file",
169
186
  path: task.path,
170
187
  creation: parseInt(task.stats.birthtimeMs), // Sometimes comes as a float, but we need an int
171
- size: task.stats.size,
172
- inode: task.stats.ino
188
+ size: parseInt(task.stats.size), // Sometimes comes as a float, but we need an int
189
+ inode: parseInt(task.stats.ino) // Sometimes comes as a float, but we need an int
173
190
  };
174
191
  currentLocalTree.tree[task.path] = item;
175
192
  currentLocalTree.inodes[item.inode] = item;
193
+ currentRemoteTree.tree[task.item.path] = task.item;
194
+ currentRemoteTree.uuids[task.item.uuid] = task.item;
176
195
  break;
177
196
  }
178
197
  }
@@ -183,19 +202,19 @@ class State {
183
202
  };
184
203
  }
185
204
  async saveLocalFileHashes() {
186
- const path = path_1.default.join(this.statePath, "localFileHashes");
187
- const serialized = (0, msgpackr_1.pack)(this.sync.localFileHashes);
188
205
  await fs_extra_1.default.ensureDir(this.statePath);
206
+ const path = path_1.default.join(this.statePath, "localFileHashes");
207
+ const serialized = (0, v8_1.serialize)(this.sync.localFileHashes);
189
208
  await fs_extra_1.default.writeFile(path, serialized);
190
209
  }
191
210
  async loadLocalFileHashes() {
192
- const path = path_1.default.join(this.statePath, "localFileHashes");
193
211
  await fs_extra_1.default.ensureDir(this.statePath);
212
+ const path = path_1.default.join(this.statePath, "localFileHashes");
194
213
  if (!(await fs_extra_1.default.exists(path))) {
195
214
  return;
196
215
  }
197
216
  const buffer = await fs_extra_1.default.readFile(path);
198
- this.sync.localFileHashes = (0, msgpackr_1.unpack)(buffer);
217
+ this.sync.localFileHashes = (0, v8_1.deserialize)(buffer);
199
218
  }
200
219
  async initialize() {
201
220
  await Promise.all([this.loadLocalFileHashes(), this.loadPreviousTrees()]);
@@ -204,23 +223,23 @@ class State {
204
223
  await Promise.all([this.saveLocalFileHashes(), this.savePreviousTrees()]);
205
224
  }
206
225
  async loadPreviousTrees() {
226
+ await fs_extra_1.default.ensureDir(this.statePath);
207
227
  const localPath = path_1.default.join(this.statePath, "previousLocalTree");
208
228
  const remotePath = path_1.default.join(this.statePath, "previousRemoteTree");
209
- await fs_extra_1.default.ensureDir(this.statePath);
210
229
  if (!(await fs_extra_1.default.exists(localPath)) || !(await fs_extra_1.default.exists(remotePath))) {
211
230
  return;
212
231
  }
213
- const [localBuffer, remoteBuffer] = await Promise.all([fs_extra_1.default.readFile(localPath), fs_extra_1.default.readFile(remotePath)]);
214
- this.sync.previousLocalTree = (0, msgpackr_1.unpack)(localBuffer);
215
- this.sync.previousRemoteTree = (0, msgpackr_1.unpack)(remoteBuffer);
232
+ const localBuffer = await fs_extra_1.default.readFile(localPath);
233
+ this.sync.previousLocalTree = (0, v8_1.deserialize)(localBuffer);
234
+ const remoteBuffer = await fs_extra_1.default.readFile(remotePath);
235
+ this.sync.previousRemoteTree = (0, v8_1.deserialize)(remoteBuffer);
216
236
  }
217
237
  async savePreviousTrees() {
238
+ await fs_extra_1.default.ensureDir(this.statePath);
218
239
  const localPath = path_1.default.join(this.statePath, "previousLocalTree");
219
240
  const remotePath = path_1.default.join(this.statePath, "previousRemoteTree");
220
- const localSerialized = (0, msgpackr_1.pack)(this.sync.previousLocalTree);
221
- const remoteSerialized = (0, msgpackr_1.pack)(this.sync.previousRemoteTree);
222
- await fs_extra_1.default.ensureDir(this.statePath);
223
- await Promise.all([fs_extra_1.default.writeFile(localPath, localSerialized), fs_extra_1.default.writeFile(remotePath, remoteSerialized)]);
241
+ await fs_extra_1.default.writeFile(localPath, (0, v8_1.serialize)(this.sync.previousLocalTree));
242
+ await fs_extra_1.default.writeFile(remotePath, (0, v8_1.serialize)(this.sync.previousRemoteTree));
224
243
  }
225
244
  }
226
245
  exports.State = State;
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/lib/state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/lib/state.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,13 @@
1
- import SDK, { type FilenSDKConfig } from "@filen/sdk";
2
- import type { SyncPair } from "../types";
1
+ import FilenSDK, { type PauseSignal } from "@filen/sdk";
2
+ import { type SyncPair, type SyncMode } from "../types";
3
3
  import { LocalFileSystem, LocalTree } from "./filesystems/local";
4
4
  import { RemoteFileSystem, RemoteTree } from "./filesystems/remote";
5
5
  import Deltas from "./deltas";
6
- import Tasks from "./tasks";
6
+ import Tasks, { type TaskError } from "./tasks";
7
7
  import State from "./state";
8
+ import Ignorer from "../ignorer";
9
+ import type SyncWorker from "..";
10
+ import Lock from "./lock";
8
11
  /**
9
12
  * Sync
10
13
  *
@@ -13,7 +16,7 @@ import State from "./state";
13
16
  * @typedef {Sync}
14
17
  */
15
18
  export declare class Sync {
16
- readonly sdk: SDK;
19
+ readonly sdk: FilenSDK;
17
20
  readonly syncPair: SyncPair;
18
21
  private isInitialized;
19
22
  readonly localFileSystem: LocalFileSystem;
@@ -25,22 +28,39 @@ export declare class Sync {
25
28
  readonly tasks: Tasks;
26
29
  readonly state: State;
27
30
  readonly dbPath: string;
31
+ readonly abortControllers: Record<string, AbortController>;
32
+ readonly pauseSignals: Record<string, PauseSignal>;
33
+ readonly localIgnorer: Ignorer;
34
+ readonly remoteIgnorer: Ignorer;
35
+ paused: boolean;
36
+ mode: SyncMode;
37
+ excludeDotFiles: boolean;
38
+ readonly worker: SyncWorker;
39
+ removed: boolean;
40
+ saveStateOnNoChanges: boolean;
41
+ readonly lock: Lock;
42
+ taskErrors: TaskError[];
28
43
  /**
29
44
  * Creates an instance of Sync.
30
45
  *
31
46
  * @constructor
32
47
  * @public
33
- * @param {{ syncPair: SyncPair; dbPath: string, sdkConfig: FilenSDKConfig }} param0
48
+ * @param {{ syncPair: SyncPair; worker: SyncWorker }} param0
34
49
  * @param {SyncPair} param0.syncPair
35
- * @param {string} param0.dbPath
36
- * @param {FilenSDKConfig} param0.sdkConfig
50
+ * @param {SyncWorker} param0.worker
37
51
  */
38
- constructor({ syncPair, dbPath, sdkConfig }: {
52
+ constructor({ syncPair, worker }: {
39
53
  syncPair: SyncPair;
40
- dbPath: string;
41
- sdkConfig: FilenSDKConfig;
54
+ worker: SyncWorker;
42
55
  });
56
+ /**
57
+ * Sets up receiving message from the main thread.
58
+ *
59
+ * @private
60
+ */
61
+ private setupMainThreadListeners;
43
62
  initialize(): Promise<void>;
63
+ cleanup(): Promise<void>;
44
64
  private run;
45
65
  }
46
66
  export default Sync;