@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/tasks.js CHANGED
@@ -1,7 +1,14 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.Tasks = void 0;
4
7
  const utils_1 = require("../utils");
8
+ const fs_extra_1 = __importDefault(require("fs-extra"));
9
+ const ipc_1 = require("./ipc");
10
+ const path_1 = __importDefault(require("path"));
11
+ const semaphore_1 = require("../semaphore");
5
12
  /**
6
13
  * Tasks
7
14
  * @date 3/1/2024 - 11:11:32 PM
@@ -13,97 +20,439 @@ const utils_1 = require("../utils");
13
20
  class Tasks {
14
21
  /**
15
22
  * Creates an instance of Tasks.
16
- * @date 3/1/2024 - 11:11:36 PM
17
23
  *
18
24
  * @constructor
19
25
  * @public
20
- * @param {{ sync: Sync }} param0
21
- * @param {Sync} param0.sync
26
+ * @param {Sync} sync
22
27
  */
23
- constructor({ sync }) {
28
+ constructor(sync) {
29
+ this.transfersSemaphore = new semaphore_1.Semaphore(32);
24
30
  this.sync = sync;
25
31
  }
26
32
  /**
27
- * Process a task.
28
- * @date 3/2/2024 - 12:14:48 PM
33
+ * Process a delta task.
29
34
  *
30
35
  * @private
31
36
  * @async
32
- * @param {{delta: Delta}} param0
33
- * @param {Delta} param0.delta
34
- * @returns {Promise<DoneTask>}
37
+ * @param {Delta} delta
38
+ * @returns {Promise<DoneTask | null>}
35
39
  */
36
- async processTask({ delta }) {
40
+ async processTask(delta) {
37
41
  switch (delta.type) {
38
42
  case "createLocalDirectory": {
39
- const stats = await this.sync.localFileSystem.mkdir({ relativePath: delta.path });
40
- return Object.assign(Object.assign({}, delta), { stats });
43
+ try {
44
+ const stats = await this.sync.localFileSystem.mkdir({ relativePath: delta.path });
45
+ const item = this.sync.remoteFileSystem.getDirectoryTreeCache.tree[delta.path];
46
+ if (!item) {
47
+ throw new Error("createLocalDirectory: remoteItem not found in getDirectoryTreeCache.");
48
+ }
49
+ (0, ipc_1.postMessageToMain)({
50
+ type: "transfer",
51
+ syncPair: this.sync.syncPair,
52
+ data: {
53
+ of: delta.type,
54
+ type: "success",
55
+ relativePath: delta.path,
56
+ localPath: path_1.default.join(this.sync.syncPair.localPath, delta.path)
57
+ }
58
+ });
59
+ return Object.assign(Object.assign({}, delta), { stats,
60
+ item });
61
+ }
62
+ catch (e) {
63
+ if (e instanceof Error) {
64
+ (0, ipc_1.postMessageToMain)({
65
+ type: "transfer",
66
+ syncPair: this.sync.syncPair,
67
+ data: {
68
+ of: delta.type,
69
+ type: "error",
70
+ relativePath: delta.path,
71
+ localPath: path_1.default.join(this.sync.syncPair.localPath, delta.path),
72
+ error: (0, utils_1.serializeError)(e)
73
+ }
74
+ });
75
+ }
76
+ throw e;
77
+ }
41
78
  }
42
79
  case "createRemoteDirectory": {
43
- const uuid = await this.sync.remoteFileSystem.mkdir({ relativePath: delta.path });
44
- return Object.assign(Object.assign({}, delta), { uuid });
80
+ try {
81
+ const [, stats] = await Promise.all([
82
+ this.sync.remoteFileSystem.mkdir({ relativePath: delta.path }),
83
+ fs_extra_1.default.stat(path_1.default.join(this.sync.syncPair.localPath, delta.path))
84
+ ]);
85
+ const item = this.sync.remoteFileSystem.getDirectoryTreeCache.tree[delta.path];
86
+ if (!item) {
87
+ throw new Error("createLocalDirectory: remoteItem not found in getDirectoryTreeCache.");
88
+ }
89
+ (0, ipc_1.postMessageToMain)({
90
+ type: "transfer",
91
+ syncPair: this.sync.syncPair,
92
+ data: {
93
+ of: delta.type,
94
+ type: "success",
95
+ relativePath: delta.path,
96
+ localPath: path_1.default.join(this.sync.syncPair.localPath, delta.path)
97
+ }
98
+ });
99
+ return Object.assign(Object.assign({}, delta), { item,
100
+ stats });
101
+ }
102
+ catch (e) {
103
+ if (e instanceof Error) {
104
+ (0, ipc_1.postMessageToMain)({
105
+ type: "transfer",
106
+ syncPair: this.sync.syncPair,
107
+ data: {
108
+ of: delta.type,
109
+ type: "error",
110
+ relativePath: delta.path,
111
+ localPath: path_1.default.join(this.sync.syncPair.localPath, delta.path),
112
+ error: (0, utils_1.serializeError)(e)
113
+ }
114
+ });
115
+ }
116
+ throw e;
117
+ }
45
118
  }
46
119
  case "deleteLocalDirectory":
47
120
  case "deleteLocalFile": {
48
- await this.sync.localFileSystem.unlink({ relativePath: delta.path });
49
- return delta;
121
+ try {
122
+ await this.sync.localFileSystem.unlink({ relativePath: delta.path });
123
+ (0, ipc_1.postMessageToMain)({
124
+ type: "transfer",
125
+ syncPair: this.sync.syncPair,
126
+ data: {
127
+ of: delta.type,
128
+ type: "success",
129
+ relativePath: delta.path,
130
+ localPath: path_1.default.join(this.sync.syncPair.localPath, delta.path)
131
+ }
132
+ });
133
+ return delta;
134
+ }
135
+ catch (e) {
136
+ // Don't throw if the file/directory does not exist anymore.
137
+ if (!(await this.sync.localFileSystem.pathExists(delta.path))) {
138
+ return delta;
139
+ }
140
+ if (e instanceof Error) {
141
+ (0, ipc_1.postMessageToMain)({
142
+ type: "transfer",
143
+ syncPair: this.sync.syncPair,
144
+ data: {
145
+ of: delta.type,
146
+ type: "error",
147
+ relativePath: delta.path,
148
+ localPath: path_1.default.join(this.sync.syncPair.localPath, delta.path),
149
+ error: (0, utils_1.serializeError)(e)
150
+ }
151
+ });
152
+ }
153
+ throw e;
154
+ }
50
155
  }
51
156
  case "deleteRemoteDirectory":
52
157
  case "deleteRemoteFile": {
53
- await this.sync.remoteFileSystem.unlink({ relativePath: delta.path });
54
- return delta;
158
+ try {
159
+ await this.sync.remoteFileSystem.unlink({ relativePath: delta.path });
160
+ (0, ipc_1.postMessageToMain)({
161
+ type: "transfer",
162
+ syncPair: this.sync.syncPair,
163
+ data: {
164
+ of: delta.type,
165
+ type: "success",
166
+ relativePath: delta.path,
167
+ localPath: path_1.default.join(this.sync.syncPair.localPath, delta.path)
168
+ }
169
+ });
170
+ return delta;
171
+ }
172
+ catch (e) {
173
+ if (delta.type === "deleteRemoteFile") {
174
+ // Don't throw if the file/directory does not exist anymore.
175
+ if (!(await this.sync.remoteFileSystem.fileExists(delta.path))) {
176
+ return delta;
177
+ }
178
+ }
179
+ if (delta.type === "deleteRemoteDirectory") {
180
+ // Don't throw if the file/directory does not exist anymore.
181
+ if (!(await this.sync.remoteFileSystem.directoryExists(delta.path))) {
182
+ return delta;
183
+ }
184
+ }
185
+ if (e instanceof Error) {
186
+ (0, ipc_1.postMessageToMain)({
187
+ type: "transfer",
188
+ syncPair: this.sync.syncPair,
189
+ data: {
190
+ of: delta.type,
191
+ type: "error",
192
+ relativePath: delta.path,
193
+ localPath: path_1.default.join(this.sync.syncPair.localPath, delta.path),
194
+ error: (0, utils_1.serializeError)(e)
195
+ }
196
+ });
197
+ }
198
+ throw e;
199
+ }
55
200
  }
56
- case "moveLocalDirectory":
57
201
  case "renameLocalDirectory":
58
- case "renameLocalFile":
59
- case "moveLocalFile": {
60
- const stats = await this.sync.localFileSystem.rename({ fromRelativePath: delta.from, toRelativePath: delta.to });
61
- return Object.assign(Object.assign({}, delta), { stats });
202
+ case "renameLocalFile": {
203
+ try {
204
+ const stats = await this.sync.localFileSystem.rename({
205
+ fromRelativePath: delta.from,
206
+ toRelativePath: delta.to
207
+ });
208
+ (0, ipc_1.postMessageToMain)({
209
+ type: "transfer",
210
+ syncPair: this.sync.syncPair,
211
+ data: {
212
+ of: delta.type,
213
+ type: "success",
214
+ relativePath: delta.path,
215
+ localPath: path_1.default.join(this.sync.syncPair.localPath, delta.path)
216
+ }
217
+ });
218
+ return Object.assign(Object.assign({}, delta), { stats });
219
+ }
220
+ catch (e) {
221
+ if (e instanceof Error) {
222
+ (0, ipc_1.postMessageToMain)({
223
+ type: "transfer",
224
+ syncPair: this.sync.syncPair,
225
+ data: {
226
+ of: delta.type,
227
+ type: "error",
228
+ relativePath: delta.path,
229
+ localPath: path_1.default.join(this.sync.syncPair.localPath, delta.path),
230
+ error: (0, utils_1.serializeError)(e)
231
+ }
232
+ });
233
+ }
234
+ throw e;
235
+ }
62
236
  }
63
- case "moveRemoteDirectory":
64
237
  case "renameRemoteDirectory":
65
- case "renameRemoteFile":
66
- case "moveRemoteFile": {
67
- await this.sync.remoteFileSystem.rename({ fromRelativePath: delta.from, toRelativePath: delta.to });
68
- return delta;
238
+ case "renameRemoteFile": {
239
+ try {
240
+ await this.sync.remoteFileSystem.rename({
241
+ fromRelativePath: delta.from,
242
+ toRelativePath: delta.to
243
+ });
244
+ (0, ipc_1.postMessageToMain)({
245
+ type: "transfer",
246
+ syncPair: this.sync.syncPair,
247
+ data: {
248
+ of: delta.type,
249
+ type: "success",
250
+ relativePath: delta.path,
251
+ localPath: path_1.default.join(this.sync.syncPair.localPath, delta.path)
252
+ }
253
+ });
254
+ return delta;
255
+ }
256
+ catch (e) {
257
+ if (e instanceof Error) {
258
+ (0, ipc_1.postMessageToMain)({
259
+ type: "transfer",
260
+ syncPair: this.sync.syncPair,
261
+ data: {
262
+ of: delta.type,
263
+ type: "error",
264
+ relativePath: delta.path,
265
+ localPath: path_1.default.join(this.sync.syncPair.localPath, delta.path),
266
+ error: (0, utils_1.serializeError)(e)
267
+ }
268
+ });
269
+ }
270
+ throw e;
271
+ }
69
272
  }
70
273
  case "downloadFile": {
71
- const stats = await this.sync.remoteFileSystem.download({ relativePath: delta.path });
72
- return Object.assign(Object.assign({}, delta), { stats });
274
+ try {
275
+ const stats = await this.sync.remoteFileSystem.download({ relativePath: delta.path });
276
+ const item = this.sync.remoteFileSystem.getDirectoryTreeCache.tree[delta.path];
277
+ if (!item) {
278
+ throw new Error("createLocalDirectory: remoteItem not found in getDirectoryTreeCache.");
279
+ }
280
+ return Object.assign(Object.assign({}, delta), { stats,
281
+ item });
282
+ }
283
+ catch (e) {
284
+ // Don't throw if the file does not exist anymore, simply skip it.
285
+ if (!(await this.sync.remoteFileSystem.fileExists(delta.path))) {
286
+ return null;
287
+ }
288
+ throw e;
289
+ }
73
290
  }
74
291
  case "uploadFile": {
75
- const item = await this.sync.localFileSystem.upload({ relativePath: delta.path });
76
- return Object.assign(Object.assign({}, delta), { item });
292
+ try {
293
+ const [, stats] = await Promise.all([
294
+ this.sync.localFileSystem.upload({ relativePath: delta.path }),
295
+ fs_extra_1.default.stat(path_1.default.join(this.sync.syncPair.localPath, delta.path))
296
+ ]);
297
+ const item = this.sync.remoteFileSystem.getDirectoryTreeCache.tree[delta.path];
298
+ if (!item) {
299
+ throw new Error("createLocalDirectory: remoteItem not found in getDirectoryTreeCache.");
300
+ }
301
+ return Object.assign(Object.assign({}, delta), { item,
302
+ stats });
303
+ }
304
+ catch (e) {
305
+ // Don't throw if the file does not exist anymore, simply skip it.
306
+ if (!(await this.sync.localFileSystem.pathExists(path_1.default.join(this.sync.syncPair.localPath, delta.path)))) {
307
+ return null;
308
+ }
309
+ throw e;
310
+ }
77
311
  }
78
312
  }
79
313
  }
80
314
  /**
81
315
  * Process all deltas.
82
- * @date 3/5/2024 - 3:59:51 PM
83
316
  *
84
317
  * @public
85
318
  * @async
86
319
  * @param {{ deltas: Delta[] }} param0
87
320
  * @param {{}} param0.deltas
88
- * @returns {Promise<DoneTask[]>}
321
+ * @returns {Promise<{
322
+ * doneTasks: DoneTask[]
323
+ * errors: TaskError[]
324
+ * }>}
89
325
  */
90
326
  async process({ deltas }) {
91
- // Work on deltas from "left to right" (ascending order, path length).
92
- deltas = deltas.sort((a, b) => a.path.split("/").length - b.path.split("/").length);
93
327
  const executed = [];
94
- const promises = [];
95
- for (const delta of deltas) {
96
- promises.push(new Promise((resolve, reject) => {
97
- this.processTask({ delta })
98
- .then(doneTask => {
99
- executed.push(doneTask);
100
- resolve();
101
- })
102
- .catch(reject);
103
- }));
328
+ const errors = [];
329
+ // Work on deltas from "left to right" (ascending order, path length).
330
+ const deltasSorted = deltas.sort((a, b) => a.path.split("/").length - b.path.split("/").length);
331
+ const renameRemoteDirectoryDeltas = [];
332
+ const renameRemoteFileDeltas = [];
333
+ const renameLocalDirectoryDeltas = [];
334
+ const renameLocalFileDeltas = [];
335
+ const deleteRemoteDirectoryDeltas = [];
336
+ const deleteRemoteFileDeltas = [];
337
+ const deleteLocalDirectoryDeltas = [];
338
+ const deleteLocalFileDeltas = [];
339
+ const createRemoteDirectoryDeltas = [];
340
+ const createLocalDirectoryDeltas = [];
341
+ const uploadFileDeltas = [];
342
+ const downloadFileDeltas = [];
343
+ for (const delta of deltasSorted) {
344
+ if (delta.type === "renameRemoteDirectory") {
345
+ renameRemoteDirectoryDeltas.push(delta);
346
+ }
347
+ else if (delta.type === "renameRemoteFile") {
348
+ renameRemoteFileDeltas.push(delta);
349
+ }
350
+ else if (delta.type === "renameLocalDirectory") {
351
+ renameLocalDirectoryDeltas.push(delta);
352
+ }
353
+ else if (delta.type === "renameLocalFile") {
354
+ renameLocalFileDeltas.push(delta);
355
+ }
356
+ else if (delta.type === "deleteRemoteDirectory") {
357
+ deleteRemoteDirectoryDeltas.push(delta);
358
+ }
359
+ else if (delta.type === "deleteRemoteFile") {
360
+ deleteRemoteFileDeltas.push(delta);
361
+ }
362
+ else if (delta.type === "deleteLocalDirectory") {
363
+ deleteLocalDirectoryDeltas.push(delta);
364
+ }
365
+ else if (delta.type === "deleteLocalFile") {
366
+ deleteLocalFileDeltas.push(delta);
367
+ }
368
+ else if (delta.type === "createRemoteDirectory") {
369
+ createRemoteDirectoryDeltas.push(delta);
370
+ }
371
+ else if (delta.type === "createLocalDirectory") {
372
+ createLocalDirectoryDeltas.push(delta);
373
+ }
374
+ else if (delta.type === "uploadFile") {
375
+ uploadFileDeltas.push(delta);
376
+ }
377
+ else if (delta.type === "downloadFile") {
378
+ downloadFileDeltas.push(delta);
379
+ }
380
+ }
381
+ const process = async (delta) => {
382
+ const semaphore = delta.type === "uploadFile" || delta.type === "downloadFile" ? this.transfersSemaphore : null;
383
+ await (semaphore === null || semaphore === void 0 ? void 0 : semaphore.acquire());
384
+ try {
385
+ const doneTask = await this.processTask(delta);
386
+ if (!doneTask) {
387
+ return;
388
+ }
389
+ executed.push(doneTask);
390
+ }
391
+ catch (e) {
392
+ this.sync.worker.logger.log("error", e, "tasks.process");
393
+ if (e instanceof Error) {
394
+ errors.push({
395
+ path: delta.path,
396
+ type: delta.type,
397
+ error: e
398
+ });
399
+ }
400
+ }
401
+ finally {
402
+ semaphore === null || semaphore === void 0 ? void 0 : semaphore.release();
403
+ }
404
+ };
405
+ // Rename/move/delete/createDir tasks need to run synchronously, e.g. one after another, due to applying executed tasks to the delta state.
406
+ // Upload/download tasks can run in parallel.
407
+ // The order of running tasks is also set:
408
+ // 1. Local directory renaming/moving
409
+ // 2. Local file renaming/moving
410
+ // 3. Remote directory renaming/moving
411
+ // 4. Remote file renaming/moving
412
+ // 5. Local directory deletions
413
+ // 6. Local file deletions
414
+ // 7. Remote directory deletions
415
+ // 8. Remote file deletions
416
+ // 9. Local directory creations
417
+ // 10. Remote directory creations
418
+ // 11. File uploads
419
+ // 12. File downloads
420
+ for (const delta of renameLocalDirectoryDeltas) {
421
+ await process(delta);
422
+ }
423
+ for (const delta of renameLocalFileDeltas) {
424
+ await process(delta);
425
+ }
426
+ for (const delta of renameRemoteDirectoryDeltas) {
427
+ await process(delta);
428
+ }
429
+ for (const delta of renameRemoteFileDeltas) {
430
+ await process(delta);
431
+ }
432
+ for (const delta of deleteLocalDirectoryDeltas) {
433
+ await process(delta);
434
+ }
435
+ for (const delta of deleteLocalFileDeltas) {
436
+ await process(delta);
437
+ }
438
+ for (const delta of deleteRemoteDirectoryDeltas) {
439
+ await process(delta);
440
+ }
441
+ for (const delta of deleteRemoteFileDeltas) {
442
+ await process(delta);
443
+ }
444
+ for (const delta of createLocalDirectoryDeltas) {
445
+ await process(delta);
446
+ }
447
+ for (const delta of createRemoteDirectoryDeltas) {
448
+ await process(delta);
104
449
  }
105
- await (0, utils_1.promiseAllSettledChunked)(promises);
106
- return executed;
450
+ await (0, utils_1.promiseAllChunked)(uploadFileDeltas.map(process));
451
+ await (0, utils_1.promiseAllChunked)(downloadFileDeltas.map(process));
452
+ return {
453
+ doneTasks: executed,
454
+ errors
455
+ };
107
456
  }
108
457
  }
109
458
  exports.Tasks = Tasks;
@@ -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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"}