filemail-sdk 4.5.1 → 4.6.1

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 (68) hide show
  1. package/dist/src/client/downloaderCore.js +16 -28
  2. package/dist/src/client/downloaderCore.js.map +1 -1
  3. package/dist/src/client/loggers/dummyLogger.d.ts +1 -0
  4. package/dist/src/client/loggers/dummyLogger.js +1 -0
  5. package/dist/src/client/loggers/dummyLogger.js.map +1 -1
  6. package/dist/src/client/loggers/logger.d.ts +7 -0
  7. package/dist/src/client/node/nodeTransferDownloader.d.ts +3 -1
  8. package/dist/src/client/node/nodeTransferDownloader.js +13 -4
  9. package/dist/src/client/node/nodeTransferDownloader.js.map +1 -1
  10. package/dist/src/client/node/nodeTransferUploader.d.ts +5 -0
  11. package/dist/src/client/node/nodeTransferUploader.js +46 -28
  12. package/dist/src/client/node/nodeTransferUploader.js.map +1 -1
  13. package/dist/src/client/transferDownloader.d.ts +1 -1
  14. package/dist/src/client/transferUploaderOptions.d.ts +1 -0
  15. package/dist/src/downloader/chunkDownloader.js +10 -8
  16. package/dist/src/downloader/chunkDownloader.js.map +1 -1
  17. package/dist/src/downloader/downloadOptions.d.ts +5 -16
  18. package/dist/src/downloader/downloadOptions.js +7 -18
  19. package/dist/src/downloader/downloadOptions.js.map +1 -1
  20. package/dist/src/downloader/downloadStatus/downloadFileProgress.d.ts +2 -1
  21. package/dist/src/downloader/downloadStatus/downloadFileProgress.js +2 -1
  22. package/dist/src/downloader/downloadStatus/downloadFileProgress.js.map +1 -1
  23. package/dist/src/downloader/downloadStatus/downloadFilePromise.d.ts +6 -0
  24. package/dist/src/downloader/downloadStatus/downloadFilePromise.js +32 -0
  25. package/dist/src/downloader/downloadStatus/downloadFilePromise.js.map +1 -0
  26. package/dist/src/downloader/downloadStatus/downloadState.d.ts +2 -1
  27. package/dist/src/downloader/downloadStatus/downloadState.js +40 -18
  28. package/dist/src/downloader/downloadStatus/downloadState.js.map +1 -1
  29. package/dist/src/downloader/downloadTracker.js +219 -130
  30. package/dist/src/downloader/downloadTracker.js.map +1 -1
  31. package/dist/src/downloader/dtos/downloadCommand.d.ts +2 -2
  32. package/dist/src/downloader/dtos/downloadErrorCode.d.ts +8 -1
  33. package/dist/src/downloader/dtos/downloadErrorCode.js +7 -0
  34. package/dist/src/downloader/dtos/downloadErrorCode.js.map +1 -1
  35. package/dist/src/downloader/dtos/downloadEvent.d.ts +3 -1
  36. package/dist/src/downloader/dtos/downloadEvent.js +2 -0
  37. package/dist/src/downloader/dtos/downloadEvent.js.map +1 -1
  38. package/dist/src/downloader/dtos/downloadFileChunkInfo.d.ts +13 -0
  39. package/dist/src/downloader/dtos/downloadFileChunkInfo.js.map +1 -1
  40. package/dist/src/downloader/dtos/downloadFileInfo.d.ts +11 -7
  41. package/dist/src/downloader/dtos/downloadFileInfo.js +14 -9
  42. package/dist/src/downloader/dtos/downloadFileInfo.js.map +1 -1
  43. package/dist/src/downloader/dtos/downloadTrackerFileInfo.d.ts +13 -9
  44. package/dist/src/downloader/dtos/downloadTrackerFileProgressInfo.d.ts +22 -0
  45. package/dist/src/downloader/dtos/downloadTrackerFileProgressInfo.js +2 -0
  46. package/dist/src/downloader/dtos/downloadTrackerFileProgressInfo.js.map +1 -0
  47. package/dist/src/downloader/dtos/downloadTrackerProgressInfo.d.ts +2 -2
  48. package/dist/src/downloader/eventArgs/downloadTrackingFailedEventArgs.d.ts +8 -0
  49. package/dist/src/downloader/eventArgs/downloadTrackingFailedEventArgs.js +2 -0
  50. package/dist/src/downloader/eventArgs/downloadTrackingFailedEventArgs.js.map +1 -0
  51. package/dist/src/downloader/filesDownloader.js +169 -80
  52. package/dist/src/downloader/filesDownloader.js.map +1 -1
  53. package/dist/src/downloader/filesPreparer.js +2 -6
  54. package/dist/src/downloader/filesPreparer.js.map +1 -1
  55. package/dist/src/utils/api/dtos/getTransferRequest.d.ts +2 -0
  56. package/dist/src/utils/api/node/nodeApiClient.js +11 -1
  57. package/dist/src/utils/api/node/nodeApiClient.js.map +1 -1
  58. package/dist/src/utils/fileSystem/fileSystemService.d.ts +6 -1
  59. package/dist/src/utils/fileSystem/node/nodeFileSystemService.d.ts +6 -1
  60. package/dist/src/utils/fileSystem/node/nodeFileSystemService.js +39 -7
  61. package/dist/src/utils/fileSystem/node/nodeFileSystemService.js.map +1 -1
  62. package/dist/src/utils/fileSystem/parsedPath.d.ts +8 -0
  63. package/dist/src/utils/fileSystem/parsedPath.js +2 -0
  64. package/dist/src/utils/fileSystem/parsedPath.js.map +1 -0
  65. package/dist/src/utils/pseudoRandom.d.ts +2 -1
  66. package/dist/src/utils/pseudoRandom.js +4 -1
  67. package/dist/src/utils/pseudoRandom.js.map +1 -1
  68. package/package.json +1 -1
@@ -9,7 +9,8 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
9
9
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
11
  };
12
- var _DownloadTracker_instances, _DownloadTracker_downloadId, _DownloadTracker_fileSystem, _DownloadTracker_trackingPath, _DownloadTracker_eventsEngine, _DownloadTracker_options, _DownloadTracker_trackingIntervalMillis, _DownloadTracker_lastDownloadTracking, _DownloadTracker_activeTimeMillis, _DownloadTracker_pendingFiles, _DownloadTracker_running, _DownloadTracker_optionsFilePath_get, _DownloadTracker_filesProgressPath_get, _DownloadTracker_filesInfoPath_get, _DownloadTracker_addEventListeners, _DownloadTracker_removeEventListeners, _DownloadTracker_onFileStarting, _DownloadTracker_onFileCompleted, _DownloadTracker_onFileFailed, _DownloadTracker_onChunkCompleted, _DownloadTracker_onPaused, _DownloadTracker_onAborted, _DownloadTracker_onCompleted, _DownloadTracker_cleanUp, _DownloadTracker_itIsTimeForDownloadTracking, _DownloadTracker_dumpOptions, _DownloadTracker_dumpAllFiles, _DownloadTracker_downloaderState_get, _DownloadTracker_dumpDownloaderState, _DownloadTracker_restoreDownloaderState, _DownloadTracker_restoreDownloaderProgress, _DownloadTracker_throwIfRunning;
12
+ var _DownloadTracker_instances, _DownloadTracker_downloadId, _DownloadTracker_fileSystem, _DownloadTracker_trackingPath, _DownloadTracker_eventsEngine, _DownloadTracker_options, _DownloadTracker_filesMutex, _DownloadTracker_progressIntervalTimer, _DownloadTracker_allFiles, _DownloadTracker_progress, _DownloadTracker_running, _DownloadTracker_restored, _DownloadTracker_filesChanged, _DownloadTracker_progressChanged, _DownloadTracker_canTrack, _DownloadTracker_filesPath_get, _DownloadTracker_filesPathTemp_get, _DownloadTracker_optionsFilePath_get, _DownloadTracker_progressPath_get, _DownloadTracker_progressPathTemp_get, _DownloadTracker_addEventListeners, _DownloadTracker_removeEventListeners, _DownloadTracker_onFileCreated, _DownloadTracker_onFileStarting, _DownloadTracker_onFileCompleted, _DownloadTracker_onFileFailed, _DownloadTracker_onChunkCompleted, _DownloadTracker_onPaused, _DownloadTracker_onAborted, _DownloadTracker_onCompleted, _DownloadTracker_cleanUp, _DownloadTracker_dumpOptions, _DownloadTracker_dumpDownloaderFiles, _DownloadTracker_dumpDownloaderProgress, _DownloadTracker_throwIfRunning, _DownloadTracker_throwIfPathDoesntExist, _DownloadTracker_setupProgressTimer, _DownloadTracker_shouldPendingFileBeRestarted, _DownloadTracker_restoreSingleFile, _DownloadTracker_restoreSingleChunkInfo;
13
+ import { Mutex } from "async-mutex";
13
14
  import DownloadError from "./dtos/downloadError.js";
14
15
  import DownloadErrorCode from "./dtos/downloadErrorCode.js";
15
16
  import TransferDownloadEvent from "./dtos/downloadEvent.js";
@@ -23,57 +24,68 @@ class DownloadTracker {
23
24
  _DownloadTracker_trackingPath.set(this, void 0);
24
25
  _DownloadTracker_eventsEngine.set(this, void 0);
25
26
  _DownloadTracker_options.set(this, void 0);
26
- _DownloadTracker_trackingIntervalMillis.set(this, void 0);
27
- _DownloadTracker_lastDownloadTracking.set(this, null);
28
- _DownloadTracker_activeTimeMillis.set(this, 0);
29
- _DownloadTracker_pendingFiles.set(this, null);
27
+ _DownloadTracker_filesMutex.set(this, void 0);
28
+ _DownloadTracker_progressIntervalTimer.set(this, null);
29
+ _DownloadTracker_allFiles.set(this, {});
30
+ _DownloadTracker_progress.set(this, { activeTime: 0, trackedFiles: {} });
30
31
  _DownloadTracker_running.set(this, false);
32
+ _DownloadTracker_restored.set(this, false);
33
+ _DownloadTracker_filesChanged.set(this, false);
34
+ _DownloadTracker_progressChanged.set(this, false);
35
+ _DownloadTracker_canTrack.set(this, false);
36
+ _DownloadTracker_onFileCreated.set(this, async (args) => {
37
+ const file = __classPrivateFieldGet(this, _DownloadTracker_allFiles, "f")[args.file.id];
38
+ if (file.tdp !== args.file.temporaryDownloadPath) {
39
+ file.tdp = args.file.temporaryDownloadPath;
40
+ __classPrivateFieldSet(this, _DownloadTracker_filesChanged, true, "f");
41
+ }
42
+ });
31
43
  _DownloadTracker_onFileStarting.set(this, async (args) => {
32
- __classPrivateFieldGet(this, _DownloadTracker_pendingFiles, "f").push({ ...args.file });
33
- __classPrivateFieldSet(this, _DownloadTracker_activeTimeMillis, args.activeTime, "f");
34
- await __classPrivateFieldGet(this, _DownloadTracker_instances, "m", _DownloadTracker_dumpDownloaderState).call(this);
44
+ const pendingFile = __classPrivateFieldGet(this, _DownloadTracker_progress, "f").trackedFiles[args.file.id];
45
+ if (pendingFile.wr === false) {
46
+ pendingFile.wr = true;
47
+ __classPrivateFieldGet(this, _DownloadTracker_progress, "f").activeTime = args.activeTime;
48
+ __classPrivateFieldSet(this, _DownloadTracker_progressChanged, true, "f");
49
+ }
35
50
  });
36
51
  _DownloadTracker_onFileCompleted.set(this, async (args) => {
37
- const idx = __classPrivateFieldGet(this, _DownloadTracker_pendingFiles, "f").findIndex(x => x.id === args.file.id);
38
- if (idx > -1)
39
- __classPrivateFieldGet(this, _DownloadTracker_pendingFiles, "f").splice(idx, 1);
40
- __classPrivateFieldSet(this, _DownloadTracker_activeTimeMillis, args.activeTime, "f");
41
- await __classPrivateFieldGet(this, _DownloadTracker_instances, "m", _DownloadTracker_dumpDownloaderState).call(this);
52
+ const pendingFile = __classPrivateFieldGet(this, _DownloadTracker_progress, "f").trackedFiles[args.file.id];
53
+ pendingFile.c = args.file.completed;
54
+ pendingFile.er = args.file.failed;
55
+ pendingFile.ok = args.file.lastOkChunk;
56
+ __classPrivateFieldGet(this, _DownloadTracker_progress, "f").activeTime = args.activeTime;
57
+ __classPrivateFieldSet(this, _DownloadTracker_progressChanged, true, "f");
58
+ const file = __classPrivateFieldGet(this, _DownloadTracker_allFiles, "f")[args.file.id];
59
+ if (file.dp !== args.file.downloadPath) {
60
+ file.dp = args.file.downloadPath;
61
+ __classPrivateFieldSet(this, _DownloadTracker_filesChanged, true, "f");
62
+ }
42
63
  });
43
64
  _DownloadTracker_onFileFailed.set(this, async (args) => {
44
- const idx = __classPrivateFieldGet(this, _DownloadTracker_pendingFiles, "f").findIndex(x => x.id === args.file.id);
45
- if (idx > -1)
46
- __classPrivateFieldGet(this, _DownloadTracker_pendingFiles, "f").splice(idx, 1);
47
- __classPrivateFieldSet(this, _DownloadTracker_activeTimeMillis, args.activeTime, "f");
48
- await __classPrivateFieldGet(this, _DownloadTracker_instances, "m", _DownloadTracker_dumpDownloaderState).call(this);
65
+ const pendingFile = __classPrivateFieldGet(this, _DownloadTracker_progress, "f").trackedFiles[args.file.id];
66
+ pendingFile.c = args.file.completed;
67
+ pendingFile.er = args.file.failed;
68
+ pendingFile.ok = args.file.lastOkChunk;
69
+ __classPrivateFieldGet(this, _DownloadTracker_progress, "f").activeTime = args.activeTime;
70
+ __classPrivateFieldSet(this, _DownloadTracker_progressChanged, true, "f");
49
71
  });
50
72
  _DownloadTracker_onChunkCompleted.set(this, async (args) => {
51
- if (__classPrivateFieldGet(this, _DownloadTracker_instances, "m", _DownloadTracker_itIsTimeForDownloadTracking).call(this)) {
52
- __classPrivateFieldSet(this, _DownloadTracker_lastDownloadTracking, new Date().getTime(), "f");
53
- const pendingFile = __classPrivateFieldGet(this, _DownloadTracker_pendingFiles, "f").find(x => x.id === args.file.id);
54
- if (pendingFile) {
55
- pendingFile.completed = args.file.completed;
56
- pendingFile.downloaded = args.file.downloaded;
57
- pendingFile.failed = args.file.failed;
58
- pendingFile.lastOkChunk = args.file.lastOkChunk;
59
- pendingFile.percent = args.file.percent;
60
- __classPrivateFieldSet(this, _DownloadTracker_activeTimeMillis, args.activeTime, "f");
61
- await __classPrivateFieldGet(this, _DownloadTracker_instances, "m", _DownloadTracker_dumpDownloaderState).call(this);
62
- }
63
- }
73
+ const pendingFile = __classPrivateFieldGet(this, _DownloadTracker_progress, "f").trackedFiles[args.file.id];
74
+ pendingFile.c = args.file.completed;
75
+ pendingFile.er = args.file.failed;
76
+ pendingFile.ok = args.file.lastOkChunk;
77
+ __classPrivateFieldGet(this, _DownloadTracker_progress, "f").activeTime = args.activeTime;
78
+ __classPrivateFieldSet(this, _DownloadTracker_progressChanged, true, "f");
64
79
  });
65
80
  _DownloadTracker_onPaused.set(this, async (args) => {
66
- __classPrivateFieldSet(this, _DownloadTracker_lastDownloadTracking, new Date().getTime(), "f");
67
- __classPrivateFieldSet(this, _DownloadTracker_activeTimeMillis, args.activeTimeMillis, "f");
68
- await __classPrivateFieldGet(this, _DownloadTracker_instances, "m", _DownloadTracker_dumpDownloaderState).call(this);
81
+ __classPrivateFieldGet(this, _DownloadTracker_progress, "f").activeTime = args.activeTimeMillis;
82
+ __classPrivateFieldSet(this, _DownloadTracker_progressChanged, true, "f");
69
83
  });
70
84
  _DownloadTracker_onAborted.set(this, async () => {
71
- __classPrivateFieldSet(this, _DownloadTracker_running, false, "f");
72
- __classPrivateFieldGet(this, _DownloadTracker_instances, "m", _DownloadTracker_cleanUp).call(this);
85
+ await __classPrivateFieldGet(this, _DownloadTracker_instances, "m", _DownloadTracker_cleanUp).call(this);
73
86
  });
74
87
  _DownloadTracker_onCompleted.set(this, async () => {
75
- __classPrivateFieldSet(this, _DownloadTracker_running, false, "f");
76
- __classPrivateFieldGet(this, _DownloadTracker_instances, "m", _DownloadTracker_cleanUp).call(this);
88
+ await __classPrivateFieldGet(this, _DownloadTracker_instances, "m", _DownloadTracker_cleanUp).call(this);
77
89
  });
78
90
  if (!options.downloadTrackingBaseFolder)
79
91
  throw new DownloadError(`Download tracker cannot be created - tracking folder is not specified`);
@@ -82,24 +94,50 @@ class DownloadTracker {
82
94
  __classPrivateFieldSet(this, _DownloadTracker_fileSystem, fileSystem, "f");
83
95
  __classPrivateFieldSet(this, _DownloadTracker_eventsEngine, eventsEngine, "f");
84
96
  __classPrivateFieldSet(this, _DownloadTracker_trackingPath, fileSystem.pathJoin(options.downloadTrackingBaseFolder, __classPrivateFieldGet(this, _DownloadTracker_downloadId, "f")), "f");
85
- __classPrivateFieldSet(this, _DownloadTracker_trackingIntervalMillis, options.downloadTrackingIntervalMillis ?? 30000, "f");
97
+ __classPrivateFieldSet(this, _DownloadTracker_filesMutex, new Mutex(), "f");
86
98
  }
87
99
  async start(allFiles) {
88
100
  __classPrivateFieldGet(this, _DownloadTracker_instances, "m", _DownloadTracker_throwIfRunning).call(this);
89
101
  __classPrivateFieldSet(this, _DownloadTracker_running, true, "f");
90
- __classPrivateFieldSet(this, _DownloadTracker_pendingFiles, [], "f");
91
- __classPrivateFieldGet(this, _DownloadTracker_instances, "m", _DownloadTracker_addEventListeners).call(this);
92
- if (await __classPrivateFieldGet(this, _DownloadTracker_fileSystem, "f").pathExists(__classPrivateFieldGet(this, _DownloadTracker_trackingPath, "f")) === false) {
93
- await __classPrivateFieldGet(this, _DownloadTracker_fileSystem, "f").createFolder(__classPrivateFieldGet(this, _DownloadTracker_trackingPath, "f"));
94
- await __classPrivateFieldGet(this, _DownloadTracker_instances, "m", _DownloadTracker_dumpOptions).call(this); // do it once only on start
95
- await __classPrivateFieldGet(this, _DownloadTracker_instances, "m", _DownloadTracker_dumpAllFiles).call(this, allFiles); // do it once only on start
102
+ if (__classPrivateFieldGet(this, _DownloadTracker_restored, "f") === false) {
103
+ for (const file of allFiles) {
104
+ __classPrivateFieldGet(this, _DownloadTracker_progress, "f").trackedFiles[file.externalId] = {
105
+ c: file.isCompleted,
106
+ er: file.isFailed,
107
+ ok: file.lastSuccessfulChunkNumber,
108
+ wr: file.wasEverWritten,
109
+ };
110
+ __classPrivateFieldGet(this, _DownloadTracker_allFiles, "f")[file.externalId] = {
111
+ u: file.url,
112
+ s: file.sizeInBytes,
113
+ n: file.name,
114
+ dp: file.downloadPath,
115
+ tdp: file.temporaryDownloadPath,
116
+ cc: file.chunkCount,
117
+ };
118
+ }
119
+ await __classPrivateFieldGet(this, _DownloadTracker_filesMutex, "f").runExclusive(async () => {
120
+ try {
121
+ await __classPrivateFieldGet(this, _DownloadTracker_fileSystem, "f").createFolder(__classPrivateFieldGet(this, _DownloadTracker_trackingPath, "f"));
122
+ await __classPrivateFieldGet(this, _DownloadTracker_instances, "m", _DownloadTracker_dumpOptions).call(this);
123
+ await __classPrivateFieldGet(this, _DownloadTracker_instances, "m", _DownloadTracker_dumpDownloaderFiles).call(this);
124
+ await __classPrivateFieldGet(this, _DownloadTracker_instances, "m", _DownloadTracker_dumpDownloaderProgress).call(this);
125
+ __classPrivateFieldSet(this, _DownloadTracker_canTrack, true, "f");
126
+ }
127
+ catch (err) {
128
+ throw new DownloadError(`Could not create tracking folder - recovering this transfer will not be possible ${__classPrivateFieldGet(this, _DownloadTracker_downloadId, "f")} @ ${__classPrivateFieldGet(this, _DownloadTracker_trackingPath, "f")}`, { cause: err }, DownloadErrorCode.TrackingNotAvailable);
129
+ }
130
+ });
131
+ }
132
+ else
133
+ __classPrivateFieldSet(this, _DownloadTracker_canTrack, true, "f");
134
+ if (__classPrivateFieldGet(this, _DownloadTracker_canTrack, "f")) {
135
+ __classPrivateFieldGet(this, _DownloadTracker_instances, "m", _DownloadTracker_addEventListeners).call(this);
136
+ __classPrivateFieldGet(this, _DownloadTracker_instances, "m", _DownloadTracker_setupProgressTimer).call(this);
96
137
  }
97
138
  }
98
139
  async restoreDownloadOptions() {
99
- if (!__classPrivateFieldGet(this, _DownloadTracker_fileSystem, "f").pathExists(__classPrivateFieldGet(this, _DownloadTracker_trackingPath, "f")))
100
- throw new DownloadError(`Tracking folder "${__classPrivateFieldGet(this, _DownloadTracker_trackingPath, "f")}" does not exist`);
101
- if (!__classPrivateFieldGet(this, _DownloadTracker_fileSystem, "f").pathExists(__classPrivateFieldGet(this, _DownloadTracker_instances, "a", _DownloadTracker_optionsFilePath_get)))
102
- throw new DownloadError(`Options file "${__classPrivateFieldGet(this, _DownloadTracker_instances, "a", _DownloadTracker_optionsFilePath_get)}" does not exist`);
140
+ await __classPrivateFieldGet(this, _DownloadTracker_instances, "m", _DownloadTracker_throwIfPathDoesntExist).call(this, __classPrivateFieldGet(this, _DownloadTracker_instances, "a", _DownloadTracker_optionsFilePath_get), `Options file "${__classPrivateFieldGet(this, _DownloadTracker_instances, "a", _DownloadTracker_optionsFilePath_get)}" does not exist`, DownloadErrorCode.TrackingDataParsingError);
103
141
  try {
104
142
  const optionsFile = await __classPrivateFieldGet(this, _DownloadTracker_fileSystem, "f").readFileAsString(__classPrivateFieldGet(this, _DownloadTracker_instances, "a", _DownloadTracker_optionsFilePath_get));
105
143
  const options = JSON.parse(optionsFile);
@@ -110,62 +148,38 @@ class DownloadTracker {
110
148
  }
111
149
  }
112
150
  async restoreDownloaderState() {
113
- if (!__classPrivateFieldGet(this, _DownloadTracker_fileSystem, "f").pathExists(__classPrivateFieldGet(this, _DownloadTracker_trackingPath, "f")))
114
- throw new DownloadError(`Tracking folder "${__classPrivateFieldGet(this, _DownloadTracker_trackingPath, "f")}" does not exist`);
115
- if (!await __classPrivateFieldGet(this, _DownloadTracker_fileSystem, "f").pathExists(__classPrivateFieldGet(this, _DownloadTracker_instances, "a", _DownloadTracker_filesProgressPath_get)))
116
- throw new DownloadError(`Tracking file "${__classPrivateFieldGet(this, _DownloadTracker_instances, "a", _DownloadTracker_filesProgressPath_get)}" does not exist`);
151
+ await __classPrivateFieldGet(this, _DownloadTracker_instances, "m", _DownloadTracker_throwIfPathDoesntExist).call(this, __classPrivateFieldGet(this, _DownloadTracker_instances, "a", _DownloadTracker_filesPath_get), `Filesinfo file "${__classPrivateFieldGet(this, _DownloadTracker_instances, "a", _DownloadTracker_filesPath_get)}" does not exist`, DownloadErrorCode.TrackingDataParsingError);
152
+ await __classPrivateFieldGet(this, _DownloadTracker_instances, "m", _DownloadTracker_throwIfPathDoesntExist).call(this, __classPrivateFieldGet(this, _DownloadTracker_instances, "a", _DownloadTracker_progressPath_get), `Tracking file "${__classPrivateFieldGet(this, _DownloadTracker_instances, "a", _DownloadTracker_progressPath_get)}" does not exist`, DownloadErrorCode.TrackingDataParsingError);
117
153
  try {
118
- const trackerFiles = await __classPrivateFieldGet(this, _DownloadTracker_instances, "m", _DownloadTracker_restoreDownloaderState).call(this);
119
- const progressInfo = await __classPrivateFieldGet(this, _DownloadTracker_instances, "m", _DownloadTracker_restoreDownloaderProgress).call(this);
120
- const filesAlreadyOnDisk = await __classPrivateFieldGet(this, _DownloadTracker_fileSystem, "f").getAllFilePathsRecursive(__classPrivateFieldGet(this, _DownloadTracker_options, "f").downloadFolder);
154
+ __classPrivateFieldSet(this, _DownloadTracker_allFiles, JSON.parse(await __classPrivateFieldGet(this, _DownloadTracker_fileSystem, "f").readFileAsString(__classPrivateFieldGet(this, _DownloadTracker_instances, "a", _DownloadTracker_filesPath_get))), "f");
155
+ __classPrivateFieldSet(this, _DownloadTracker_progress, JSON.parse(await __classPrivateFieldGet(this, _DownloadTracker_fileSystem, "f").readFileAsString(__classPrivateFieldGet(this, _DownloadTracker_instances, "a", _DownloadTracker_progressPath_get))), "f");
156
+ __classPrivateFieldSet(this, _DownloadTracker_restored, true, "f");
121
157
  let totalSize = 0;
122
158
  let downloadedBytes = 0;
123
159
  let downloadedBytesBank = 0;
160
+ let repeatProgressDump = false;
124
161
  const files = [];
125
- for (const trackerFile of trackerFiles) {
126
- const file = new DownloadFileInfo(trackerFile.id, trackerFile.u, trackerFile.n, trackerFile.s, trackerFile.dp, null, trackerFile.cc);
127
- files.push(file);
128
- totalSize += file.sizeInBytes;
129
- const existingFile = filesAlreadyOnDisk.find(x => x === file.downloadPath);
130
- const pendingFile = progressInfo.pendingFiles.find(x => x.downloadPath === file.downloadPath);
131
- file.chunks = [];
132
- for (let k = 0; k < file.chunkCount; k++) {
133
- const chunk = new DownloadFileChunkInfo(file, k, __classPrivateFieldGet(this, _DownloadTracker_options, "f").maxChunkSize ?? null);
134
- file.chunks.push(chunk);
135
- if (existingFile) {
136
- const chunkUploaded = pendingFile ? pendingFile.lastOkChunk !== null && k <= pendingFile.lastOkChunk : true;
137
- chunk.isCompleted = chunkUploaded;
138
- if (chunk.isCompleted) {
139
- chunk.setProgress(chunk.chunkSize);
140
- file.downloadedBytes_bank += chunk.chunkSize;
141
- }
142
- }
143
- }
144
- file.downloadedBytes = file.downloadedBytes_bank;
145
- if (pendingFile) {
146
- // we have it in the tracker - it is pending - update state to state of the "pendingFile"
147
- file.wasEverWritten = true;
148
- file.isCompleted = pendingFile.completed;
149
- file.isFailed = pendingFile.failed;
150
- file.lastSuccessfulChunkNumber = pendingFile.lastOkChunk;
151
- }
152
- else if (existingFile) {
153
- // exists on disk and no info on pending state - it is completed, update to "completed"
154
- file.wasEverWritten = true;
155
- file.isCompleted = true;
156
- file.isFailed = false;
157
- if (file.chunkCount > 0)
158
- file.lastSuccessfulChunkNumber = file.chunkCount - 1;
159
- }
160
- file.updateProgress();
162
+ for (const [restoredFileId, restoredFile] of Object.entries(__classPrivateFieldGet(this, _DownloadTracker_allFiles, "f"))) {
163
+ // eslint-disable-next-line no-await-in-loop
164
+ const { file, fileWasReset } = await __classPrivateFieldGet(this, _DownloadTracker_instances, "m", _DownloadTracker_restoreSingleFile).call(this, restoredFileId, restoredFile);
165
+ if (fileWasReset)
166
+ repeatProgressDump = true;
161
167
  downloadedBytes += file.downloadedBytes;
162
168
  if (file.isCompleted)
163
169
  downloadedBytesBank += file.sizeInBytes;
170
+ files.push(file);
171
+ totalSize += file.sizeInBytes;
172
+ }
173
+ if (repeatProgressDump) {
174
+ // some tracking info might have been updated (corrected) in above loop
175
+ // persisting this makes sure we have most correct state in the progress tracking file
176
+ // (e.g. some unconfirmed pending files might be deleted by end users etc.)
177
+ await __classPrivateFieldGet(this, _DownloadTracker_instances, "m", _DownloadTracker_dumpDownloaderProgress).call(this);
164
178
  }
165
179
  return {
166
180
  files,
167
181
  state: {
168
- activeTime: progressInfo.activeTime,
182
+ activeTime: __classPrivateFieldGet(this, _DownloadTracker_progress, "f").activeTime,
169
183
  downloadedBytes,
170
184
  downloadedBytesBank,
171
185
  totalSize,
@@ -178,16 +192,28 @@ class DownloadTracker {
178
192
  }
179
193
  }
180
194
  async removeDownloadTrackingFolder() {
181
- __classPrivateFieldGet(this, _DownloadTracker_fileSystem, "f").deleteFolder(__classPrivateFieldGet(this, _DownloadTracker_trackingPath, "f"));
195
+ await __classPrivateFieldGet(this, _DownloadTracker_filesMutex, "f").runExclusive(async () => {
196
+ try {
197
+ await __classPrivateFieldGet(this, _DownloadTracker_fileSystem, "f").deleteFolder(__classPrivateFieldGet(this, _DownloadTracker_trackingPath, "f"));
198
+ }
199
+ catch (err) {
200
+ throw new DownloadError(`Could not remove tracking folder - ${__classPrivateFieldGet(this, _DownloadTracker_downloadId, "f")} @ ${__classPrivateFieldGet(this, _DownloadTracker_trackingPath, "f")}`, { cause: err }, DownloadErrorCode.TrackingCleanupFailed);
201
+ }
202
+ });
182
203
  }
183
204
  }
184
- _DownloadTracker_downloadId = new WeakMap(), _DownloadTracker_fileSystem = new WeakMap(), _DownloadTracker_trackingPath = new WeakMap(), _DownloadTracker_eventsEngine = new WeakMap(), _DownloadTracker_options = new WeakMap(), _DownloadTracker_trackingIntervalMillis = new WeakMap(), _DownloadTracker_lastDownloadTracking = new WeakMap(), _DownloadTracker_activeTimeMillis = new WeakMap(), _DownloadTracker_pendingFiles = new WeakMap(), _DownloadTracker_running = new WeakMap(), _DownloadTracker_onFileStarting = new WeakMap(), _DownloadTracker_onFileCompleted = new WeakMap(), _DownloadTracker_onFileFailed = new WeakMap(), _DownloadTracker_onChunkCompleted = new WeakMap(), _DownloadTracker_onPaused = new WeakMap(), _DownloadTracker_onAborted = new WeakMap(), _DownloadTracker_onCompleted = new WeakMap(), _DownloadTracker_instances = new WeakSet(), _DownloadTracker_optionsFilePath_get = function _DownloadTracker_optionsFilePath_get() {
205
+ _DownloadTracker_downloadId = new WeakMap(), _DownloadTracker_fileSystem = new WeakMap(), _DownloadTracker_trackingPath = new WeakMap(), _DownloadTracker_eventsEngine = new WeakMap(), _DownloadTracker_options = new WeakMap(), _DownloadTracker_filesMutex = new WeakMap(), _DownloadTracker_progressIntervalTimer = new WeakMap(), _DownloadTracker_allFiles = new WeakMap(), _DownloadTracker_progress = new WeakMap(), _DownloadTracker_running = new WeakMap(), _DownloadTracker_restored = new WeakMap(), _DownloadTracker_filesChanged = new WeakMap(), _DownloadTracker_progressChanged = new WeakMap(), _DownloadTracker_canTrack = new WeakMap(), _DownloadTracker_onFileCreated = new WeakMap(), _DownloadTracker_onFileStarting = new WeakMap(), _DownloadTracker_onFileCompleted = new WeakMap(), _DownloadTracker_onFileFailed = new WeakMap(), _DownloadTracker_onChunkCompleted = new WeakMap(), _DownloadTracker_onPaused = new WeakMap(), _DownloadTracker_onAborted = new WeakMap(), _DownloadTracker_onCompleted = new WeakMap(), _DownloadTracker_instances = new WeakSet(), _DownloadTracker_filesPath_get = function _DownloadTracker_filesPath_get() {
206
+ return __classPrivateFieldGet(this, _DownloadTracker_fileSystem, "f").pathJoin(__classPrivateFieldGet(this, _DownloadTracker_trackingPath, "f"), `files.json`);
207
+ }, _DownloadTracker_filesPathTemp_get = function _DownloadTracker_filesPathTemp_get() {
208
+ return __classPrivateFieldGet(this, _DownloadTracker_fileSystem, "f").pathJoin(__classPrivateFieldGet(this, _DownloadTracker_trackingPath, "f"), `files.tmp`);
209
+ }, _DownloadTracker_optionsFilePath_get = function _DownloadTracker_optionsFilePath_get() {
185
210
  return __classPrivateFieldGet(this, _DownloadTracker_fileSystem, "f").pathJoin(__classPrivateFieldGet(this, _DownloadTracker_trackingPath, "f"), `options.json`);
186
- }, _DownloadTracker_filesProgressPath_get = function _DownloadTracker_filesProgressPath_get() {
211
+ }, _DownloadTracker_progressPath_get = function _DownloadTracker_progressPath_get() {
187
212
  return __classPrivateFieldGet(this, _DownloadTracker_fileSystem, "f").pathJoin(__classPrivateFieldGet(this, _DownloadTracker_trackingPath, "f"), `progress.json`);
188
- }, _DownloadTracker_filesInfoPath_get = function _DownloadTracker_filesInfoPath_get() {
189
- return __classPrivateFieldGet(this, _DownloadTracker_fileSystem, "f").pathJoin(__classPrivateFieldGet(this, _DownloadTracker_trackingPath, "f"), `files.json`);
213
+ }, _DownloadTracker_progressPathTemp_get = function _DownloadTracker_progressPathTemp_get() {
214
+ return __classPrivateFieldGet(this, _DownloadTracker_fileSystem, "f").pathJoin(__classPrivateFieldGet(this, _DownloadTracker_trackingPath, "f"), `progress.tmp`);
190
215
  }, _DownloadTracker_addEventListeners = function _DownloadTracker_addEventListeners() {
216
+ __classPrivateFieldGet(this, _DownloadTracker_eventsEngine, "f").addEventListener(TransferDownloadEvent.FileCreated, __classPrivateFieldGet(this, _DownloadTracker_onFileCreated, "f"));
191
217
  __classPrivateFieldGet(this, _DownloadTracker_eventsEngine, "f").addEventListener(TransferDownloadEvent.FileDownloadStarting, __classPrivateFieldGet(this, _DownloadTracker_onFileStarting, "f"));
192
218
  __classPrivateFieldGet(this, _DownloadTracker_eventsEngine, "f").addEventListener(TransferDownloadEvent.FileDownloadCompleted, __classPrivateFieldGet(this, _DownloadTracker_onFileCompleted, "f"));
193
219
  __classPrivateFieldGet(this, _DownloadTracker_eventsEngine, "f").addEventListener(TransferDownloadEvent.FileDownloadFailed, __classPrivateFieldGet(this, _DownloadTracker_onFileFailed, "f"));
@@ -196,6 +222,7 @@ _DownloadTracker_downloadId = new WeakMap(), _DownloadTracker_fileSystem = new W
196
222
  __classPrivateFieldGet(this, _DownloadTracker_eventsEngine, "f").addEventListener(TransferDownloadEvent.Aborted, __classPrivateFieldGet(this, _DownloadTracker_onAborted, "f"));
197
223
  __classPrivateFieldGet(this, _DownloadTracker_eventsEngine, "f").addEventListener(TransferDownloadEvent.DownloadCompleted, __classPrivateFieldGet(this, _DownloadTracker_onCompleted, "f"));
198
224
  }, _DownloadTracker_removeEventListeners = function _DownloadTracker_removeEventListeners() {
225
+ __classPrivateFieldGet(this, _DownloadTracker_eventsEngine, "f").removeEventListener(TransferDownloadEvent.FileCreated, __classPrivateFieldGet(this, _DownloadTracker_onFileCreated, "f"));
199
226
  __classPrivateFieldGet(this, _DownloadTracker_eventsEngine, "f").removeEventListener(TransferDownloadEvent.FileDownloadStarting, __classPrivateFieldGet(this, _DownloadTracker_onFileStarting, "f"));
200
227
  __classPrivateFieldGet(this, _DownloadTracker_eventsEngine, "f").removeEventListener(TransferDownloadEvent.FileDownloadCompleted, __classPrivateFieldGet(this, _DownloadTracker_onFileCompleted, "f"));
201
228
  __classPrivateFieldGet(this, _DownloadTracker_eventsEngine, "f").removeEventListener(TransferDownloadEvent.FileDownloadFailed, __classPrivateFieldGet(this, _DownloadTracker_onFileFailed, "f"));
@@ -203,44 +230,106 @@ _DownloadTracker_downloadId = new WeakMap(), _DownloadTracker_fileSystem = new W
203
230
  __classPrivateFieldGet(this, _DownloadTracker_eventsEngine, "f").removeEventListener(TransferDownloadEvent.Paused, __classPrivateFieldGet(this, _DownloadTracker_onPaused, "f"));
204
231
  __classPrivateFieldGet(this, _DownloadTracker_eventsEngine, "f").removeEventListener(TransferDownloadEvent.Aborted, __classPrivateFieldGet(this, _DownloadTracker_onAborted, "f"));
205
232
  __classPrivateFieldGet(this, _DownloadTracker_eventsEngine, "f").removeEventListener(TransferDownloadEvent.DownloadCompleted, __classPrivateFieldGet(this, _DownloadTracker_onCompleted, "f"));
206
- }, _DownloadTracker_cleanUp = function _DownloadTracker_cleanUp() {
233
+ }, _DownloadTracker_cleanUp = async function _DownloadTracker_cleanUp() {
234
+ __classPrivateFieldSet(this, _DownloadTracker_running, false, "f");
235
+ __classPrivateFieldSet(this, _DownloadTracker_progressChanged, false, "f");
236
+ __classPrivateFieldSet(this, _DownloadTracker_filesChanged, false, "f");
237
+ if (__classPrivateFieldGet(this, _DownloadTracker_progressIntervalTimer, "f") !== null) {
238
+ clearInterval(__classPrivateFieldGet(this, _DownloadTracker_progressIntervalTimer, "f"));
239
+ __classPrivateFieldSet(this, _DownloadTracker_progressIntervalTimer, null, "f");
240
+ }
207
241
  __classPrivateFieldGet(this, _DownloadTracker_instances, "m", _DownloadTracker_removeEventListeners).call(this);
208
- __classPrivateFieldSet(this, _DownloadTracker_pendingFiles, null, "f");
209
- __classPrivateFieldGet(this, _DownloadTracker_fileSystem, "f").deleteFolder(__classPrivateFieldGet(this, _DownloadTracker_trackingPath, "f"));
210
- }, _DownloadTracker_itIsTimeForDownloadTracking = function _DownloadTracker_itIsTimeForDownloadTracking() {
211
- return __classPrivateFieldGet(this, _DownloadTracker_lastDownloadTracking, "f") === null || new Date().getTime() - __classPrivateFieldGet(this, _DownloadTracker_lastDownloadTracking, "f") >= __classPrivateFieldGet(this, _DownloadTracker_trackingIntervalMillis, "f");
242
+ __classPrivateFieldSet(this, _DownloadTracker_allFiles, {}, "f");
243
+ __classPrivateFieldSet(this, _DownloadTracker_progress, { activeTime: 0, trackedFiles: {} }, "f");
244
+ await this.removeDownloadTrackingFolder();
212
245
  }, _DownloadTracker_dumpOptions = async function _DownloadTracker_dumpOptions() {
213
246
  await __classPrivateFieldGet(this, _DownloadTracker_fileSystem, "f").writeFile(__classPrivateFieldGet(this, _DownloadTracker_instances, "a", _DownloadTracker_optionsFilePath_get), JSON.stringify(__classPrivateFieldGet(this, _DownloadTracker_options, "f")));
214
- }, _DownloadTracker_dumpAllFiles = async function _DownloadTracker_dumpAllFiles(allFiles) {
215
- const mapped = allFiles.map(x => {
216
- const result = {
217
- id: x.externalId,
218
- u: x.url,
219
- s: x.sizeInBytes,
220
- n: x.name,
221
- dp: x.downloadPath,
222
- cc: x.chunkCount,
223
- };
224
- return result;
225
- });
226
- await __classPrivateFieldGet(this, _DownloadTracker_fileSystem, "f").writeFile(__classPrivateFieldGet(this, _DownloadTracker_instances, "a", _DownloadTracker_filesInfoPath_get), JSON.stringify(mapped));
227
- }, _DownloadTracker_downloaderState_get = function _DownloadTracker_downloaderState_get() {
228
- return {
229
- activeTime: __classPrivateFieldGet(this, _DownloadTracker_activeTimeMillis, "f"),
230
- pendingFiles: __classPrivateFieldGet(this, _DownloadTracker_pendingFiles, "f") || [],
231
- };
232
- }, _DownloadTracker_dumpDownloaderState = async function _DownloadTracker_dumpDownloaderState() {
233
- await __classPrivateFieldGet(this, _DownloadTracker_fileSystem, "f").writeFile(__classPrivateFieldGet(this, _DownloadTracker_instances, "a", _DownloadTracker_filesProgressPath_get), JSON.stringify(__classPrivateFieldGet(this, _DownloadTracker_instances, "a", _DownloadTracker_downloaderState_get)));
234
- }, _DownloadTracker_restoreDownloaderState = async function _DownloadTracker_restoreDownloaderState() {
235
- const allFilesInfo = await __classPrivateFieldGet(this, _DownloadTracker_fileSystem, "f").readFileAsString(__classPrivateFieldGet(this, _DownloadTracker_instances, "a", _DownloadTracker_filesInfoPath_get));
236
- return JSON.parse(allFilesInfo);
237
- }, _DownloadTracker_restoreDownloaderProgress = async function _DownloadTracker_restoreDownloaderProgress() {
238
- const progressInfoJson = await __classPrivateFieldGet(this, _DownloadTracker_fileSystem, "f").readFileAsString(__classPrivateFieldGet(this, _DownloadTracker_instances, "a", _DownloadTracker_filesProgressPath_get));
239
- const progressInfo = JSON.parse(progressInfoJson);
240
- return progressInfo;
247
+ }, _DownloadTracker_dumpDownloaderFiles = async function _DownloadTracker_dumpDownloaderFiles() {
248
+ // write to disk - then rename: rename will be much faster than write (potentially few/few dozens MB) - minimizing risk of getting corrupt progress file on disk
249
+ await __classPrivateFieldGet(this, _DownloadTracker_fileSystem, "f").writeFile(__classPrivateFieldGet(this, _DownloadTracker_instances, "a", _DownloadTracker_filesPathTemp_get), JSON.stringify(__classPrivateFieldGet(this, _DownloadTracker_allFiles, "f")));
250
+ await __classPrivateFieldGet(this, _DownloadTracker_fileSystem, "f").renameFile(__classPrivateFieldGet(this, _DownloadTracker_instances, "a", _DownloadTracker_filesPathTemp_get), __classPrivateFieldGet(this, _DownloadTracker_instances, "a", _DownloadTracker_filesPath_get));
251
+ }, _DownloadTracker_dumpDownloaderProgress = async function _DownloadTracker_dumpDownloaderProgress() {
252
+ // write to disk - then rename: rename will be much faster than write (potentially few/few dozens MB) - minimizing risk of getting corrupt progress file on disk
253
+ await __classPrivateFieldGet(this, _DownloadTracker_fileSystem, "f").writeFile(__classPrivateFieldGet(this, _DownloadTracker_instances, "a", _DownloadTracker_progressPathTemp_get), JSON.stringify(__classPrivateFieldGet(this, _DownloadTracker_progress, "f")));
254
+ await __classPrivateFieldGet(this, _DownloadTracker_fileSystem, "f").renameFile(__classPrivateFieldGet(this, _DownloadTracker_instances, "a", _DownloadTracker_progressPathTemp_get), __classPrivateFieldGet(this, _DownloadTracker_instances, "a", _DownloadTracker_progressPath_get));
241
255
  }, _DownloadTracker_throwIfRunning = function _DownloadTracker_throwIfRunning() {
242
256
  if (__classPrivateFieldGet(this, _DownloadTracker_running, "f"))
243
257
  throw new DownloadError(`This download tracker is already running. Please create a new one.`);
258
+ }, _DownloadTracker_throwIfPathDoesntExist = async function _DownloadTracker_throwIfPathDoesntExist(path, reason, errorCode) {
259
+ if ((await __classPrivateFieldGet(this, _DownloadTracker_fileSystem, "f").pathExists(path)) === false)
260
+ throw new DownloadError(reason, undefined, errorCode);
261
+ }, _DownloadTracker_setupProgressTimer = function _DownloadTracker_setupProgressTimer() {
262
+ __classPrivateFieldSet(this, _DownloadTracker_progressIntervalTimer, setInterval(async () => {
263
+ await __classPrivateFieldGet(this, _DownloadTracker_filesMutex, "f").runExclusive(async () => {
264
+ try {
265
+ if (__classPrivateFieldGet(this, _DownloadTracker_progressChanged, "f")) {
266
+ __classPrivateFieldSet(this, _DownloadTracker_progressChanged, false, "f");
267
+ await __classPrivateFieldGet(this, _DownloadTracker_instances, "m", _DownloadTracker_dumpDownloaderProgress).call(this);
268
+ }
269
+ if (__classPrivateFieldGet(this, _DownloadTracker_filesChanged, "f")) {
270
+ __classPrivateFieldSet(this, _DownloadTracker_filesChanged, false, "f");
271
+ await __classPrivateFieldGet(this, _DownloadTracker_instances, "m", _DownloadTracker_dumpDownloaderFiles).call(this);
272
+ }
273
+ }
274
+ catch (err) {
275
+ // When this event is emitted it means for the the caller that restoring interrupted download won't be able to recover
276
+ // all downloaded data - but only some part of it. In general it is safe to continue after this event,
277
+ // just keep in mind tracking data is not up-to-date.
278
+ // Also note: in many cases tracking data will not be used at all (only when download was interrupted - by app restart, pc reboot etc.).
279
+ const args = {
280
+ reason: `Could not update tracking data - recovering this transfer may re-download more data than needed ${__classPrivateFieldGet(this, _DownloadTracker_downloadId, "f")} @ ${__classPrivateFieldGet(this, _DownloadTracker_trackingPath, "f")}`,
281
+ error: err,
282
+ errorCode: DownloadErrorCode.TrackingDataOutdated,
283
+ downloadId: __classPrivateFieldGet(this, _DownloadTracker_downloadId, "f"),
284
+ };
285
+ __classPrivateFieldGet(this, _DownloadTracker_eventsEngine, "f").emit(TransferDownloadEvent.DownloadTrackingFailed, args);
286
+ }
287
+ });
288
+ }, __classPrivateFieldGet(this, _DownloadTracker_options, "f").downloadTrackingIntervalMillis), "f");
289
+ }, _DownloadTracker_shouldPendingFileBeRestarted = async function _DownloadTracker_shouldPendingFileBeRestarted(file) {
290
+ return file.wasEverWritten
291
+ // eslint-disable-next-line no-await-in-loop
292
+ && (!file.temporaryDownloadPath || (await __classPrivateFieldGet(this, _DownloadTracker_fileSystem, "f").pathExists(file.temporaryDownloadPath)) === false);
293
+ }, _DownloadTracker_restoreSingleFile = async function _DownloadTracker_restoreSingleFile(restoredFileId, restoredFile) {
294
+ const fileTrack = __classPrivateFieldGet(this, _DownloadTracker_progress, "f").trackedFiles[restoredFileId];
295
+ const file = new DownloadFileInfo(restoredFileId, restoredFile.u, restoredFile.n, restoredFile.s, restoredFile.dp, restoredFile.cc, restoredFile.tdp);
296
+ let fileWasReset = false;
297
+ file.wasEverWritten = fileTrack.wr;
298
+ file.isCompleted = fileTrack.c;
299
+ file.isFailed = fileTrack.er;
300
+ file.lastSuccessfulChunkNumber = fileTrack.ok;
301
+ if (file.isCompleted || file.isFailed)
302
+ // let's save some cpu time on restoring chunk collection for file which will never be picked up
303
+ file.downloadedBytes_bank = file.sizeInBytes;
304
+ else {
305
+ // eslint-disable-next-line no-await-in-loop
306
+ const shouldFileBeReset = await __classPrivateFieldGet(this, _DownloadTracker_instances, "m", _DownloadTracker_shouldPendingFileBeRestarted).call(this, file);
307
+ if (shouldFileBeReset) {
308
+ // it maye happen that disk state is de-synced from the progress tracking file (the file.temporaryDownloadPath is gone)
309
+ // in this case we want to simply re-start the file
310
+ fileTrack.wr = false;
311
+ fileTrack.ok = null;
312
+ fileWasReset = true;
313
+ file.wasEverWritten = false;
314
+ file.lastSuccessfulChunkNumber = null;
315
+ }
316
+ for (let chunkIndex = 0; chunkIndex < file.chunkCount; chunkIndex++) {
317
+ const chunk = __classPrivateFieldGet(this, _DownloadTracker_instances, "m", _DownloadTracker_restoreSingleChunkInfo).call(this, file, chunkIndex, fileTrack);
318
+ file.chunks.push(chunk);
319
+ if (chunk.isCompleted)
320
+ file.downloadedBytes_bank += chunk.chunkSize;
321
+ }
322
+ }
323
+ // this method will update file.downloadedBytes properly based on file.downloadedBytes_bank
324
+ // (and theoretically also based on file.#pendingChunks - but when restoring state #pendingChunks is always empty)
325
+ file.updateProgress();
326
+ return { file, fileWasReset };
327
+ }, _DownloadTracker_restoreSingleChunkInfo = function _DownloadTracker_restoreSingleChunkInfo(file, chunkIndex, fileTrack) {
328
+ const chunk = new DownloadFileChunkInfo(file, chunkIndex, __classPrivateFieldGet(this, _DownloadTracker_options, "f").maxChunkSize ?? null);
329
+ chunk.isCompleted = fileTrack.ok !== null && chunkIndex <= fileTrack.ok;
330
+ if (chunk.isCompleted)
331
+ chunk.setProgress(chunk.chunkSize);
332
+ return chunk;
244
333
  };
245
334
  export default DownloadTracker;
246
335
  //# sourceMappingURL=downloadTracker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"downloadTracker.js","sourceRoot":"","sources":["../../../src/downloader/downloadTracker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"downloadTracker.js","sourceRoot":"","sources":["../../../src/downloader/downloadTracker.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import type GetCompanyResponse from "../../utils/api/dtos/getCompanyResponse";
2
- import type GetTransferResponse from "../../utils/api/dtos/getTransferResponse";
3
2
  interface DownloadCommand {
4
- transfer?: string | GetTransferResponse | undefined;
3
+ transfer?: string | undefined;
5
4
  trackId?: string | undefined;
6
5
  password?: string | undefined;
7
6
  company?: GetCompanyResponse | undefined;
7
+ checkLogintoken?: boolean | undefined;
8
8
  }
9
9
  export default DownloadCommand;
@@ -6,6 +6,13 @@ declare enum DownloadErrorCode {
6
6
  DownloadsDisabled = 4,
7
7
  TransferExpired = 5,
8
8
  NoFilesToDownload = 6,
9
- TransferInvalidState = 7
9
+ TransferInvalidState = 7,
10
+ ResumedFileNotFound = 8,
11
+ ResumedFilePathNotSpecified = 9,
12
+ TrackingNotAvailable = 10,
13
+ TrackingCleanupFailed = 11,
14
+ TrackingDataOutdated = 12,
15
+ TooManyFileRenameAttempts = 13,
16
+ FileserverResponseWrongSize = 14
10
17
  }
11
18
  export default DownloadErrorCode;
@@ -8,6 +8,13 @@ var DownloadErrorCode;
8
8
  DownloadErrorCode[DownloadErrorCode["TransferExpired"] = 5] = "TransferExpired";
9
9
  DownloadErrorCode[DownloadErrorCode["NoFilesToDownload"] = 6] = "NoFilesToDownload";
10
10
  DownloadErrorCode[DownloadErrorCode["TransferInvalidState"] = 7] = "TransferInvalidState";
11
+ DownloadErrorCode[DownloadErrorCode["ResumedFileNotFound"] = 8] = "ResumedFileNotFound";
12
+ DownloadErrorCode[DownloadErrorCode["ResumedFilePathNotSpecified"] = 9] = "ResumedFilePathNotSpecified";
13
+ DownloadErrorCode[DownloadErrorCode["TrackingNotAvailable"] = 10] = "TrackingNotAvailable";
14
+ DownloadErrorCode[DownloadErrorCode["TrackingCleanupFailed"] = 11] = "TrackingCleanupFailed";
15
+ DownloadErrorCode[DownloadErrorCode["TrackingDataOutdated"] = 12] = "TrackingDataOutdated";
16
+ DownloadErrorCode[DownloadErrorCode["TooManyFileRenameAttempts"] = 13] = "TooManyFileRenameAttempts";
17
+ DownloadErrorCode[DownloadErrorCode["FileserverResponseWrongSize"] = 14] = "FileserverResponseWrongSize";
11
18
  })(DownloadErrorCode || (DownloadErrorCode = {}));
12
19
  export default DownloadErrorCode;
13
20
  //# sourceMappingURL=downloadErrorCode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"downloadErrorCode.js","sourceRoot":"","sources":["../../../../src/downloader/dtos/downloadErrorCode.ts"],"names":[],"mappings":"AAAA,IAAK,iBASJ;AATD,WAAK,iBAAiB;IAClB,iGAAwB,CAAA;IACxB,iEAAQ,CAAA;IACR,+FAAuB,CAAA;IACvB,iFAAgB,CAAA;IAChB,mFAAiB,CAAA;IACjB,+EAAe,CAAA;IACf,mFAAiB,CAAA;IACjB,yFAAoB,CAAA;AACxB,CAAC,EATI,iBAAiB,KAAjB,iBAAiB,QASrB;AAED,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"downloadErrorCode.js","sourceRoot":"","sources":["../../../../src/downloader/dtos/downloadErrorCode.ts"],"names":[],"mappings":"AAAA,IAAK,iBAgBJ;AAhBD,WAAK,iBAAiB;IAClB,iGAAwB,CAAA;IACxB,iEAAQ,CAAA;IACR,+FAAuB,CAAA;IACvB,iFAAgB,CAAA;IAChB,mFAAiB,CAAA;IACjB,+EAAe,CAAA;IACf,mFAAiB,CAAA;IACjB,yFAAoB,CAAA;IACpB,uFAAmB,CAAA;IACnB,uGAA2B,CAAA;IAC3B,0FAAoB,CAAA;IACpB,4FAAqB,CAAA;IACrB,0FAAoB,CAAA;IACpB,oGAAyB,CAAA;IACzB,wGAA2B,CAAA;AAC/B,CAAC,EAhBI,iBAAiB,KAAjB,iBAAiB,QAgBrB;AAED,eAAe,iBAAiB,CAAC"}
@@ -7,6 +7,7 @@ declare enum TransferDownloadEvent {
7
7
  FileCreated = "FileCreated",
8
8
  FileDownloadStarting = "FileDownloadStarting",
9
9
  FileDownloadStarted = "FileDownloadStarted",
10
+ FileDownloadCompleting = "FileDownloadCompleting",
10
11
  FileDownloadCompleted = "FileDownloadCompleted",
11
12
  FileDownloadProgressed = "FileDownloadProgressed",
12
13
  FileDownloadFailed = "FileDownloadFailed",
@@ -23,6 +24,7 @@ declare enum TransferDownloadEvent {
23
24
  NetworkFailure = "NetworkFailure",
24
25
  NetworkOk = "NetworkOk",
25
26
  PossibleSupersizedFile = "PossibleSupersizedFile",
26
- RecoveredInterruptedDownload = "RecoveredInterruptedDownload"
27
+ RecoveredInterruptedDownload = "RecoveredInterruptedDownload",
28
+ DownloadTrackingFailed = "DownloadTrackingFailed"
27
29
  }
28
30
  export default TransferDownloadEvent;
@@ -8,6 +8,7 @@ var TransferDownloadEvent;
8
8
  TransferDownloadEvent["FileCreated"] = "FileCreated";
9
9
  TransferDownloadEvent["FileDownloadStarting"] = "FileDownloadStarting";
10
10
  TransferDownloadEvent["FileDownloadStarted"] = "FileDownloadStarted";
11
+ TransferDownloadEvent["FileDownloadCompleting"] = "FileDownloadCompleting";
11
12
  TransferDownloadEvent["FileDownloadCompleted"] = "FileDownloadCompleted";
12
13
  TransferDownloadEvent["FileDownloadProgressed"] = "FileDownloadProgressed";
13
14
  TransferDownloadEvent["FileDownloadFailed"] = "FileDownloadFailed";
@@ -25,6 +26,7 @@ var TransferDownloadEvent;
25
26
  TransferDownloadEvent["NetworkOk"] = "NetworkOk";
26
27
  TransferDownloadEvent["PossibleSupersizedFile"] = "PossibleSupersizedFile";
27
28
  TransferDownloadEvent["RecoveredInterruptedDownload"] = "RecoveredInterruptedDownload";
29
+ TransferDownloadEvent["DownloadTrackingFailed"] = "DownloadTrackingFailed";
28
30
  })(TransferDownloadEvent || (TransferDownloadEvent = {}));
29
31
  export default TransferDownloadEvent;
30
32
  //# sourceMappingURL=downloadEvent.js.map