@filen/sync 0.1.3 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/lib/tasks.js CHANGED
@@ -1,7 +1,13 @@
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"));
5
11
  const semaphore_1 = require("../semaphore");
6
12
  /**
7
13
  * Tasks
@@ -20,62 +26,334 @@ class Tasks {
20
26
  * @param {Sync} sync
21
27
  */
22
28
  constructor(sync) {
23
- this.mutex = new semaphore_1.Semaphore(1);
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
201
  case "renameLocalDirectory":
57
202
  case "renameLocalFile": {
58
- const stats = await this.sync.localFileSystem.rename({
59
- fromRelativePath: delta.from,
60
- toRelativePath: delta.to
61
- });
62
- return Object.assign(Object.assign({}, delta), { stats });
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
+ }
63
236
  }
64
237
  case "renameRemoteDirectory":
65
238
  case "renameRemoteFile": {
66
- await this.sync.remoteFileSystem.rename({
67
- fromRelativePath: delta.from,
68
- toRelativePath: delta.to
69
- });
70
- return delta;
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
+ }
71
272
  }
72
273
  case "downloadFile": {
73
- const stats = await this.sync.remoteFileSystem.download({ relativePath: delta.path });
74
- 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("downloadFile: remoteItem not found in getDirectoryTreeCache.");
279
+ }
280
+ (0, ipc_1.postMessageToMain)({
281
+ type: "transfer",
282
+ syncPair: this.sync.syncPair,
283
+ data: {
284
+ of: delta.type,
285
+ type: "success",
286
+ relativePath: delta.path,
287
+ localPath: path_1.default.join(this.sync.syncPair.localPath, delta.path)
288
+ }
289
+ });
290
+ return Object.assign(Object.assign({}, delta), { stats,
291
+ item });
292
+ }
293
+ catch (e) {
294
+ // Don't throw if the file does not exist anymore, simply skip it.
295
+ if (!(await this.sync.remoteFileSystem.fileExists(delta.path))) {
296
+ return null;
297
+ }
298
+ if (e instanceof Error) {
299
+ (0, ipc_1.postMessageToMain)({
300
+ type: "transfer",
301
+ syncPair: this.sync.syncPair,
302
+ data: {
303
+ of: delta.type,
304
+ type: "error",
305
+ relativePath: delta.path,
306
+ localPath: path_1.default.join(this.sync.syncPair.localPath, delta.path),
307
+ error: (0, utils_1.serializeError)(e)
308
+ }
309
+ });
310
+ }
311
+ throw e;
312
+ }
75
313
  }
76
314
  case "uploadFile": {
77
- const item = await this.sync.localFileSystem.upload({ relativePath: delta.path });
78
- return Object.assign(Object.assign({}, delta), { item });
315
+ try {
316
+ const [, stats] = await Promise.all([
317
+ this.sync.localFileSystem.upload({ relativePath: delta.path }),
318
+ fs_extra_1.default.stat(path_1.default.join(this.sync.syncPair.localPath, delta.path))
319
+ ]);
320
+ const item = this.sync.remoteFileSystem.getDirectoryTreeCache.tree[delta.path];
321
+ if (!item) {
322
+ throw new Error("uploadFile: remoteItem not found in getDirectoryTreeCache.");
323
+ }
324
+ (0, ipc_1.postMessageToMain)({
325
+ type: "transfer",
326
+ syncPair: this.sync.syncPair,
327
+ data: {
328
+ of: delta.type,
329
+ type: "success",
330
+ relativePath: delta.path,
331
+ localPath: path_1.default.join(this.sync.syncPair.localPath, delta.path)
332
+ }
333
+ });
334
+ return Object.assign(Object.assign({}, delta), { item,
335
+ stats });
336
+ }
337
+ catch (e) {
338
+ // Don't throw if the file does not exist anymore, simply skip it.
339
+ if (!(await this.sync.localFileSystem.pathExists(path_1.default.join(this.sync.syncPair.localPath, delta.path)))) {
340
+ return null;
341
+ }
342
+ if (e instanceof Error) {
343
+ (0, ipc_1.postMessageToMain)({
344
+ type: "transfer",
345
+ syncPair: this.sync.syncPair,
346
+ data: {
347
+ of: delta.type,
348
+ type: "error",
349
+ relativePath: delta.path,
350
+ localPath: path_1.default.join(this.sync.syncPair.localPath, delta.path),
351
+ error: (0, utils_1.serializeError)(e)
352
+ }
353
+ });
354
+ }
355
+ throw e;
356
+ }
79
357
  }
80
358
  }
81
359
  }
@@ -94,19 +372,66 @@ class Tasks {
94
372
  async process({ deltas }) {
95
373
  const executed = [];
96
374
  const errors = [];
97
- await (0, utils_1.promiseAllSettledChunked)(
98
375
  // Work on deltas from "left to right" (ascending order, path length).
99
- deltas
100
- .sort((a, b) => a.path.split("/").length - b.path.split("/").length)
101
- .map(async (delta) => {
102
- const semaphoreToAcquire = delta.type === "createRemoteDirectory" ||
103
- delta.type === "renameLocalDirectory" ||
104
- delta.type === "deleteRemoteDirectory"
105
- ? this.mutex
106
- : null;
107
- await (semaphoreToAcquire === null || semaphoreToAcquire === void 0 ? void 0 : semaphoreToAcquire.acquire());
376
+ const deltasSorted = deltas.sort((a, b) => a.path.split("/").length - b.path.split("/").length);
377
+ const renameRemoteDirectoryDeltas = [];
378
+ const renameRemoteFileDeltas = [];
379
+ const renameLocalDirectoryDeltas = [];
380
+ const renameLocalFileDeltas = [];
381
+ const deleteRemoteDirectoryDeltas = [];
382
+ const deleteRemoteFileDeltas = [];
383
+ const deleteLocalDirectoryDeltas = [];
384
+ const deleteLocalFileDeltas = [];
385
+ const createRemoteDirectoryDeltas = [];
386
+ const createLocalDirectoryDeltas = [];
387
+ const uploadFileDeltas = [];
388
+ const downloadFileDeltas = [];
389
+ for (const delta of deltasSorted) {
390
+ if (delta.type === "renameRemoteDirectory") {
391
+ renameRemoteDirectoryDeltas.push(delta);
392
+ }
393
+ else if (delta.type === "renameRemoteFile") {
394
+ renameRemoteFileDeltas.push(delta);
395
+ }
396
+ else if (delta.type === "renameLocalDirectory") {
397
+ renameLocalDirectoryDeltas.push(delta);
398
+ }
399
+ else if (delta.type === "renameLocalFile") {
400
+ renameLocalFileDeltas.push(delta);
401
+ }
402
+ else if (delta.type === "deleteRemoteDirectory") {
403
+ deleteRemoteDirectoryDeltas.push(delta);
404
+ }
405
+ else if (delta.type === "deleteRemoteFile") {
406
+ deleteRemoteFileDeltas.push(delta);
407
+ }
408
+ else if (delta.type === "deleteLocalDirectory") {
409
+ deleteLocalDirectoryDeltas.push(delta);
410
+ }
411
+ else if (delta.type === "deleteLocalFile") {
412
+ deleteLocalFileDeltas.push(delta);
413
+ }
414
+ else if (delta.type === "createRemoteDirectory") {
415
+ createRemoteDirectoryDeltas.push(delta);
416
+ }
417
+ else if (delta.type === "createLocalDirectory") {
418
+ createLocalDirectoryDeltas.push(delta);
419
+ }
420
+ else if (delta.type === "uploadFile") {
421
+ uploadFileDeltas.push(delta);
422
+ }
423
+ else if (delta.type === "downloadFile") {
424
+ downloadFileDeltas.push(delta);
425
+ }
426
+ }
427
+ const process = async (delta) => {
428
+ const semaphore = delta.type === "uploadFile" || delta.type === "downloadFile" ? this.transfersSemaphore : null;
429
+ await (semaphore === null || semaphore === void 0 ? void 0 : semaphore.acquire());
108
430
  try {
109
- const doneTask = await this.processTask({ delta });
431
+ const doneTask = await this.processTask(delta);
432
+ if (!doneTask) {
433
+ return;
434
+ }
110
435
  executed.push(doneTask);
111
436
  }
112
437
  catch (e) {
@@ -120,9 +445,56 @@ class Tasks {
120
445
  }
121
446
  }
122
447
  finally {
123
- semaphoreToAcquire === null || semaphoreToAcquire === void 0 ? void 0 : semaphoreToAcquire.release();
448
+ semaphore === null || semaphore === void 0 ? void 0 : semaphore.release();
124
449
  }
125
- }));
450
+ };
451
+ // Rename/move/delete/createDir tasks need to run synchronously, e.g. one after another, due to applying executed tasks to the delta state.
452
+ // Upload/download tasks can run in parallel.
453
+ // The order of running tasks is also set:
454
+ // 1. Local directory renaming/moving
455
+ // 2. Local file renaming/moving
456
+ // 3. Remote directory renaming/moving
457
+ // 4. Remote file renaming/moving
458
+ // 5. Local directory deletions
459
+ // 6. Local file deletions
460
+ // 7. Remote directory deletions
461
+ // 8. Remote file deletions
462
+ // 9. Local directory creations
463
+ // 10. Remote directory creations
464
+ // 11. File uploads
465
+ // 12. File downloads
466
+ for (const delta of renameLocalDirectoryDeltas) {
467
+ await process(delta);
468
+ }
469
+ for (const delta of renameLocalFileDeltas) {
470
+ await process(delta);
471
+ }
472
+ for (const delta of renameRemoteDirectoryDeltas) {
473
+ await process(delta);
474
+ }
475
+ for (const delta of renameRemoteFileDeltas) {
476
+ await process(delta);
477
+ }
478
+ for (const delta of deleteLocalDirectoryDeltas) {
479
+ await process(delta);
480
+ }
481
+ for (const delta of deleteLocalFileDeltas) {
482
+ await process(delta);
483
+ }
484
+ for (const delta of deleteRemoteDirectoryDeltas) {
485
+ await process(delta);
486
+ }
487
+ for (const delta of deleteRemoteFileDeltas) {
488
+ await process(delta);
489
+ }
490
+ for (const delta of createLocalDirectoryDeltas) {
491
+ await process(delta);
492
+ }
493
+ for (const delta of createRemoteDirectoryDeltas) {
494
+ await process(delta);
495
+ }
496
+ await (0, utils_1.promiseAllChunked)(uploadFileDeltas.map(process));
497
+ await (0, utils_1.promiseAllChunked)(downloadFileDeltas.map(process));
126
498
  return {
127
499
  doneTasks: executed,
128
500
  errors
@@ -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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"}