filemail-sdk 9.1.2 → 9.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/dist/src/autoDownloader/autoDownloader.d.ts +4 -2
  2. package/dist/src/autoDownloader/autoDownloader.d.ts.map +1 -1
  3. package/dist/src/autoDownloader/autoDownloader.js.map +1 -1
  4. package/dist/src/autoDownloader/autoDownloaderEvent.d.ts +3 -1
  5. package/dist/src/autoDownloader/autoDownloaderEvent.d.ts.map +1 -1
  6. package/dist/src/autoDownloader/autoDownloaderEvent.js +3 -0
  7. package/dist/src/autoDownloader/autoDownloaderEvent.js.map +1 -1
  8. package/dist/src/autoDownloader/eventArgs/autoDownloadUnhealthyEventArgs.d.ts +6 -0
  9. package/dist/src/autoDownloader/eventArgs/autoDownloadUnhealthyEventArgs.d.ts.map +1 -0
  10. package/dist/src/autoDownloader/eventArgs/autoDownloadUnhealthyEventArgs.js +2 -0
  11. package/dist/src/autoDownloader/eventArgs/autoDownloadUnhealthyEventArgs.js.map +1 -0
  12. package/dist/src/autoDownloader/state/autoDownloaderState.d.ts +3 -0
  13. package/dist/src/autoDownloader/state/autoDownloaderState.d.ts.map +1 -1
  14. package/dist/src/autoDownloader/state/autoDownloaderState.js +10 -0
  15. package/dist/src/autoDownloader/state/autoDownloaderState.js.map +1 -1
  16. package/dist/src/autoDownloader/transferHandler/autoDownloaderTransferHandlerBase.d.ts.map +1 -1
  17. package/dist/src/autoDownloader/transferHandler/autoDownloaderTransferHandlerBase.js +3 -0
  18. package/dist/src/autoDownloader/transferHandler/autoDownloaderTransferHandlerBase.js.map +1 -1
  19. package/dist/src/client/downloader/downloaderCore.d.ts +2 -1
  20. package/dist/src/client/downloader/downloaderCore.d.ts.map +1 -1
  21. package/dist/src/client/downloader/downloaderCore.js +7 -1
  22. package/dist/src/client/downloader/downloaderCore.js.map +1 -1
  23. package/dist/src/client/downloader/node/nodeTransferDownloader.d.ts +5 -0
  24. package/dist/src/client/downloader/node/nodeTransferDownloader.d.ts.map +1 -1
  25. package/dist/src/client/downloader/node/nodeTransferDownloader.js +52 -6
  26. package/dist/src/client/downloader/node/nodeTransferDownloader.js.map +1 -1
  27. package/dist/src/client/downloader/transferDownloader.d.ts +2 -0
  28. package/dist/src/client/downloader/transferDownloader.d.ts.map +1 -1
  29. package/dist/src/client/downloader/transferDownloader.js.map +1 -1
  30. package/dist/src/client/loggers/utils/logHealthyStatus.d.ts +5 -0
  31. package/dist/src/client/loggers/utils/logHealthyStatus.d.ts.map +1 -0
  32. package/dist/src/client/loggers/utils/logHealthyStatus.js +28 -0
  33. package/dist/src/client/loggers/utils/logHealthyStatus.js.map +1 -0
  34. package/dist/src/client/uploader/transferUploaderBase.d.ts +1 -4
  35. package/dist/src/client/uploader/transferUploaderBase.d.ts.map +1 -1
  36. package/dist/src/client/uploader/transferUploaderBase.js +6 -33
  37. package/dist/src/client/uploader/transferUploaderBase.js.map +1 -1
  38. package/dist/src/downloader/downloadLogger.d.ts +2 -2
  39. package/dist/src/downloader/downloadLogger.d.ts.map +1 -1
  40. package/dist/src/downloader/downloadLogger.js +2 -1
  41. package/dist/src/downloader/downloadLogger.js.map +1 -1
  42. package/dist/src/index.d.ts +1 -1
  43. package/dist/src/index.d.ts.map +1 -1
  44. package/dist/src/index.js.map +1 -1
  45. package/dist/src/index.node.d.ts +1 -0
  46. package/dist/src/index.node.d.ts.map +1 -1
  47. package/dist/src/index.node.js.map +1 -1
  48. package/package.json +1 -1
@@ -14,7 +14,8 @@ import type AutoDownloadFailedEventArgs from "./eventArgs/autoDownloadFailedEven
14
14
  import type AutoDownloadProgressedEventArgs from "./eventArgs/autoDownloadProgressedEventArgs.js";
15
15
  import type AutoDownloadEventArgs from "./eventArgs/autoDownloadEventArgs.js";
16
16
  import type AutoDownloadStartingFailedEventArgs from "./eventArgs/autoDownloadStartingFailedEventArgs.js";
17
- import CheckingForNewTransfersStartedEventArgs from "./eventArgs/checkingForNewTransfersStartedEventArgs.js";
17
+ import type CheckingForNewTransfersStartedEventArgs from "./eventArgs/checkingForNewTransfersStartedEventArgs.js";
18
+ import type AutoDownloadUnhealthyEventArgs from "./eventArgs/autoDownloadUnhealthyEventArgs.js";
18
19
  declare class AutoDownloader {
19
20
  #private;
20
21
  constructor(options: AutoDownloaderOptions, logger: Logger, newInboxTransfersRetriever: NewInboxTransfersRetriever, concurrencyController: ConcurrencyController, eventsEngine: EventsEngine, transferDownloaderFactory: TransferDownloaderFactory, stateSerializer: AutoDownloaderStateSerializer, recoverableState: AutoDownloaderRecoverableState | null);
@@ -40,7 +41,8 @@ declare class AutoDownloader {
40
41
  cancelTransfer(transferId: string): void;
41
42
  private cancelRunningTransfer;
42
43
  private cancelFailedTransfer;
43
- addEventListener(eventName: AutoDownloaderEvent.DownloadAborted | AutoDownloaderEvent.DownloadCompleted | AutoDownloaderEvent.DownloadResumed | AutoDownloaderEvent.DownloadAborting | AutoDownloaderEvent.DownloadPaused | AutoDownloaderEvent.DownloadPausing | AutoDownloaderEvent.DownloadStopped | AutoDownloaderEvent.DownloadStopping, handler: (event: AutoDownloadEventArgs) => void): void;
44
+ addEventListener(eventName: AutoDownloaderEvent.DownloadAborted | AutoDownloaderEvent.DownloadCompleted | AutoDownloaderEvent.DownloadResumed | AutoDownloaderEvent.DownloadAborting | AutoDownloaderEvent.DownloadPaused | AutoDownloaderEvent.DownloadPausing | AutoDownloaderEvent.DownloadStopped | AutoDownloaderEvent.DownloadStopping | AutoDownloaderEvent.DownloadHealthy, handler: (event: AutoDownloadEventArgs) => void): void;
45
+ addEventListener(eventName: AutoDownloaderEvent.DownloadUnealthy, handler: (event: AutoDownloadUnhealthyEventArgs) => void): void;
44
46
  addEventListener(eventName: AutoDownloaderEvent.DownloadProgressed, handler: (event: AutoDownloadProgressedEventArgs) => void): void;
45
47
  addEventListener(eventName: AutoDownloaderEvent.DownloadFailed, handler: (event: AutoDownloadFailedEventArgs) => void): void;
46
48
  addEventListener(eventName: AutoDownloaderEvent.DownloadStarted, handler: (event: AutoDownloadStartedEventArgs) => void): void;
@@ -1 +1 @@
1
- {"version":3,"file":"autoDownloader.d.ts","sourceRoot":"","sources":["../../../src/autoDownloader/autoDownloader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"autoDownloader.d.ts","sourceRoot":"","sources":["../../../src/autoDownloader/autoDownloader.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"autoDownloader.js","sourceRoot":"","sources":["../../../src/autoDownloader/autoDownloader.ts"],"names":[],"mappings":"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","sourcesContent":["import sleep from \"abortable-sleep\";\r\n\r\nimport AutoDownloaderError from \"./autoDownloaderError.js\";\r\nimport AutoDownloaderState from \"./state/autoDownloaderState.js\";\r\nimport AutoDownloaderNewTransferHandler from \"./transferHandler/autoDownloaderNewTransferHandler.js\";\r\nimport AutoDownloaderRecoverableTransferHandler from \"./transferHandler/autoDownloaderRecoverableTransferHandler.js\";\r\nimport AutoDownloaderEvent from \"./autoDownloaderEvent.js\";\r\nimport TransferStatus from \"../utils/types/transferStatus.js\";\r\nimport AutoDownloaderDestroyer from \"./autoDownloaderDestroyer.js\";\r\n\r\nimport type Logger from \"../client/loggers/logger.js\";\r\nimport type ConcurrencyController from \"../utils/concurrencyController/concurrencyController.js\";\r\nimport type AutoDownloaderOptions from \"./autoDownloaderOptions.js\";\r\nimport type TransferDownloaderFactory from './transferDownloaderFactory.js';\r\nimport type AutoDownloaderStateSnapshot from './state/autoDownloaderStateSnapshot.js';\r\nimport type AutoDownloaderRecoverableState from './state/autoDownloaderRecoverableState.js';\r\nimport type EventsEngine from '../utils/events/eventsEngine.js';\r\nimport type AutoDownloaderStateSerializer from './autoDownloaderStateSerializer.js';\r\nimport type AutoDownloaderTransferHandlerBase from \"./transferHandler/autoDownloaderTransferHandlerBase.js\";\r\nimport type NewInboxTransfersRetriever from \"./newInboxTransfersRetriever/newInboxTransfersRetriever.js\";\r\nimport type NewInboxTransfer from \"./newInboxTransfersRetriever/newInboxTransfer.js\";\r\nimport type AutoDownloaderStateRecoverableTransfer from \"./state/autoDownloaderStateRecoverableTransfer.js\";\r\nimport type NewTransfersCheckCompletedEventArgs from \"./eventArgs/newTransfersCheckCompletedEventArgs.js\";\r\nimport type AutoDownloadStartedEventArgs from \"./eventArgs/autoDownloadStartedEventArgs.js\";\r\nimport type AutoDownloadFailedEventArgs from \"./eventArgs/autoDownloadFailedEventArgs.js\";\r\nimport type AutoDownloadProgressedEventArgs from \"./eventArgs/autoDownloadProgressedEventArgs.js\";\r\nimport type AutoDownloadEventArgs from \"./eventArgs/autoDownloadEventArgs.js\";\r\nimport type AutoDownloadStartingFailedEventArgs from \"./eventArgs/autoDownloadStartingFailedEventArgs.js\";\r\nimport CheckingForNewTransfersStartedEventArgs from \"./eventArgs/checkingForNewTransfersStartedEventArgs.js\";\r\n\r\nclass AutoDownloader {\r\n #newTransfersCheckIntervalInSeconds: number;\r\n\r\n #logger: Logger;\r\n #eventsEngine: EventsEngine;\r\n #state: AutoDownloaderState;\r\n #newInboxTransfersRetriever: NewInboxTransfersRetriever;\r\n #concurrencyController: ConcurrencyController;\r\n #transferDownloaderFactory: TransferDownloaderFactory;\r\n #destroyer: AutoDownloaderDestroyer;\r\n\r\n #isCheckingForNewTransfers: boolean = false;\r\n #abortController: AbortController = new AbortController();\r\n\r\n constructor(options: AutoDownloaderOptions, logger: Logger, newInboxTransfersRetriever: NewInboxTransfersRetriever, concurrencyController: ConcurrencyController, eventsEngine: EventsEngine, transferDownloaderFactory: TransferDownloaderFactory, stateSerializer: AutoDownloaderStateSerializer, recoverableState: AutoDownloaderRecoverableState | null) {\r\n this.#newTransfersCheckIntervalInSeconds = options.newTransfersCheckIntervalInSeconds;\r\n\r\n this.#logger = logger;\r\n this.#eventsEngine = eventsEngine;\r\n this.#newInboxTransfersRetriever = newInboxTransfersRetriever;\r\n this.#concurrencyController = concurrencyController;\r\n this.#transferDownloaderFactory = transferDownloaderFactory;\r\n\r\n this.#state = new AutoDownloaderState(eventsEngine);\r\n\r\n if (recoverableState)\r\n this.#state.recover(recoverableState);\r\n\r\n this.#state.addRecoverableStateObserver(eventArgs => stateSerializer.serialize(eventArgs));\r\n\r\n this.#destroyer = new AutoDownloaderDestroyer(this.#state, stateSerializer, transferDownloaderFactory, logger);\r\n }\r\n\r\n get state(): AutoDownloaderStateSnapshot {\r\n return {\r\n lastCompletedNewTransfersCheck: this.#state.lastCompletedNewTransfersCheck,\r\n runningTransfers: this.#state.runningTransfers,\r\n completedTransfers: this.#state.completedTransfers,\r\n failedTransfers: new Set(this.#state.failedTransfers.keys()),\r\n canceledTransfers: this.#state.canceledTransfers,\r\n };\r\n }\r\n\r\n get isAnyTransferRunning(): boolean {\r\n return this.#state.isAnyTransferRunning;\r\n }\r\n\r\n get isCheckingForNewTransfers(): boolean {\r\n return this.#isCheckingForNewTransfers;\r\n }\r\n\r\n set loginToken(loginToken: string) {\r\n this.#logger.logInfo(`AutoDownloader set loginToken called`);\r\n this.#newInboxTransfersRetriever.loginToken = loginToken;\r\n }\r\n\r\n set maxNumberOfConcurrentDownloads(maxNumberOfConcurrentDownloads: number) {\r\n this.#logger.logInfo(`AutoDownloader set maxNumberOfConcurrentDownloads = ${maxNumberOfConcurrentDownloads} called`);\r\n this.#concurrencyController.maxConcurrency = maxNumberOfConcurrentDownloads;\r\n }\r\n\r\n set newTransfersCheckIntervalInSeconds(newTransfersCheckIntervalInSeconds: number) {\r\n this.#logger.logInfo(`AutoDownloader set newTransfersCheckIntervalInSeconds = ${newTransfersCheckIntervalInSeconds} called`);\r\n this.#newTransfersCheckIntervalInSeconds = newTransfersCheckIntervalInSeconds;\r\n }\r\n\r\n set periodToRetrieveTransfersInHours(periodToRetrieveTransfersInHours: number) {\r\n this.#logger.logInfo(`AutoDownloader set periodToRetrieveTransfersInHours = ${periodToRetrieveTransfersInHours} called`);\r\n this.#newInboxTransfersRetriever.periodToRetrieveTransfersInHours = periodToRetrieveTransfersInHours;\r\n }\r\n\r\n set downloadForAllUsers(downloadForAllUsers: boolean) {\r\n this.#logger.logInfo(`AutoDownloader set downloadForAllUsers = ${downloadForAllUsers} called`);\r\n this.#newInboxTransfersRetriever.downloadForAllUsers = downloadForAllUsers;\r\n }\r\n\r\n set downloadFolderTemplate(downloadFolderTemplate: string) {\r\n this.#logger.logInfo(`AutoDownloader set downloadFolderTemplate = ${downloadFolderTemplate} called`);\r\n this.#transferDownloaderFactory.downloadFolderTemplate = downloadFolderTemplate;\r\n }\r\n\r\n async startCheckingForNewTransfers(): Promise<void> {\r\n this.#logger.logInfo(`AutoDownloader startCheckingForNewTransfers called`);\r\n\r\n if (this.#destroyer.isDestroyed)\r\n throw new AutoDownloaderError(`Auto-downloader has been destroyed`);\r\n\r\n if (this.#isCheckingForNewTransfers)\r\n throw new AutoDownloaderError(`Auto-downloader is already checking for new transfers`);\r\n\r\n this.#isCheckingForNewTransfers = true;\r\n this.#abortController = new AbortController();\r\n\r\n const eventArgs: CheckingForNewTransfersStartedEventArgs = { lastCompletedNewTransfersCheck: this.#state.lastCompletedNewTransfersCheck };\r\n this.#eventsEngine.emit(AutoDownloaderEvent.CheckingForNewTransfersStarted, eventArgs);\r\n\r\n while (!this.#abortController.signal.aborted) {\r\n /* eslint-disable no-await-in-loop */\r\n try {\r\n this.#logger.logDebug(`AutoDownloader main loop iteration started`);\r\n\r\n const newTransfers = await this.#newInboxTransfersRetriever.getNewTransfers(transferId => this.#state.isTransferHandled(transferId), this.#abortController.signal);\r\n\r\n this.#logger.logDebug(`AutoDownloader retrieved new transfers to start: [${newTransfers.map(t => t.transferId).join(`, `)}]`);\r\n\r\n if (this.#abortController.signal.aborted)\r\n break;\r\n\r\n await this.startNewTransfers(newTransfers);\r\n\r\n this.#state.newTransfersCheckCompleted();\r\n\r\n this.#logger.logDebug(`AutoDownloader main loop iteration finished`);\r\n }\r\n catch (error) {\r\n this.#logger.logError(error as Error, `AutoDownloader main loop error occured`, { isAborted: this.#abortController.signal.aborted });\r\n }\r\n\r\n await sleep(this.#newTransfersCheckIntervalInSeconds * 1000, this.#abortController.signal);\r\n }\r\n\r\n this.#isCheckingForNewTransfers = false;\r\n\r\n this.#logger.logInfo(`AutoDownloader stopped`);\r\n\r\n this.#eventsEngine.emit(AutoDownloaderEvent.CheckingForNewTransfersStopped);\r\n }\r\n\r\n async recoverTransfers(): Promise<void> {\r\n this.#logger.logInfo(`AutoDownloader recoverTransfers called`);\r\n\r\n if (this.#destroyer.isDestroyed)\r\n throw new AutoDownloaderError(`Auto-downloader has been destroyed`);\r\n\r\n const recoverableTransferHandlerFactory = (transfer: [string, AutoDownloaderStateRecoverableTransfer]) => new AutoDownloaderRecoverableTransferHandler(transfer[1].data, transfer[1].downloadId, this.#state, this.#transferDownloaderFactory, this.#logger);\r\n await this.startTransfers(this.#state.toBeRecoveredTransfers, recoverableTransferHandlerFactory);\r\n }\r\n\r\n private async startNewTransfers(newTransfers: NewInboxTransfer[]) {\r\n const newTransferHandlerFactory = (transfer: NewInboxTransfer) => new AutoDownloaderNewTransferHandler(transfer, this.#state, this.#transferDownloaderFactory, this.#logger);\r\n await this.startTransfers(newTransfers, newTransferHandlerFactory);\r\n }\r\n\r\n private async startTransfers<T>(transfers: Iterable<T>, transferHandlerFactory: (transfer: T) => AutoDownloaderTransferHandlerBase) {\r\n for (const transfer of transfers) {\r\n const releaseSemaphore = await this.#concurrencyController.acquire();\r\n\r\n if (this.#abortController.signal.aborted) {\r\n releaseSemaphore();\r\n return;\r\n }\r\n\r\n const transferHandler = transferHandlerFactory(transfer);\r\n\r\n this.#logger.logInfo(`AutoDownloader starting transfer having id ${transferHandler.transferId}`);\r\n\r\n transferHandler.startTransfer(releaseSemaphore);\r\n }\r\n }\r\n\r\n destroy() {\r\n this.#logger.logInfo(`AutoDownloader destroy called`);\r\n\r\n if (this.#isCheckingForNewTransfers)\r\n this.pauseCheckingForNewTransfers();\r\n\r\n this.#destroyer.destroy();\r\n }\r\n\r\n pauseCheckingForNewTransfers() {\r\n this.#logger.logInfo(`AutoDownloader pauseCheckingForNewTransfers called`);\r\n\r\n if (!this.#isCheckingForNewTransfers)\r\n throw new AutoDownloaderError(`Auto-downloader is not checking for new transfers, so it cannot be paused`);\r\n\r\n this.#eventsEngine.emit(AutoDownloaderEvent.CheckingForNewTransfersStopping);\r\n this.#abortController.abort();\r\n }\r\n\r\n pauseTransfer(transferId: string) {\r\n this.#logger.logInfo(`AutoDownloader pauseTransfer ${transferId} called`);\r\n\r\n const transferDownloader = this.#state.getRunningTransferDownloader(transferId);\r\n transferDownloader.pause();\r\n }\r\n\r\n resumeTransfer(transferId: string) {\r\n this.#logger.logInfo(`AutoDownloader resumeTransfer ${transferId} called`);\r\n\r\n const transferDownloader = this.#state.getRunningTransferDownloader(transferId);\r\n transferDownloader.resume();\r\n }\r\n\r\n stopTransfer(transferId: string) {\r\n this.#logger.logInfo(`AutoDownloader stopTransfer ${transferId} called`);\r\n\r\n const transferDownloader = this.#state.getRunningTransferDownloader(transferId);\r\n\r\n if (transferDownloader.status !== TransferStatus.Running)\r\n return;\r\n\r\n transferDownloader.stop();\r\n }\r\n\r\n stopAllTransfers() {\r\n this.#logger.logInfo(`AutoDownloader stopAllTransfers called`);\r\n\r\n this.#state.runningTransfers.forEach(t => this.stopTransfer(t));\r\n }\r\n\r\n cancelTransfer(transferId: string) {\r\n this.#logger.logInfo(`AutoDownloader cancelTransfer ${transferId} called`);\r\n\r\n if (this.#state.runningTransfers.has(transferId)) {\r\n this.cancelRunningTransfer(transferId);\r\n return;\r\n }\r\n\r\n if (this.#state.failedTransfers.has(transferId)) {\r\n this.cancelFailedTransfer(transferId);\r\n return;\r\n }\r\n\r\n throw new AutoDownloaderError(`Transfer not found (TransferId = ${transferId})`);\r\n }\r\n\r\n private cancelRunningTransfer(transferId: string) {\r\n this.#destroyer.abortRunningTransfer(transferId);\r\n }\r\n\r\n private cancelFailedTransfer(transferId: string) {\r\n this.#state.transferAborting(transferId);\r\n\r\n const transfer = this.#state.failedTransfers.get(transferId)!;\r\n\r\n if (transfer.downloadId)\r\n this.#destroyer.cleanupTransfer(transfer.downloadId);\r\n\r\n this.#state.transferAborted(transferId);\r\n }\r\n\r\n addEventListener(eventName: AutoDownloaderEvent.DownloadAborted | AutoDownloaderEvent.DownloadCompleted | AutoDownloaderEvent.DownloadResumed | AutoDownloaderEvent.DownloadAborting | AutoDownloaderEvent.DownloadPaused | AutoDownloaderEvent.DownloadPausing | AutoDownloaderEvent.DownloadStopped | AutoDownloaderEvent.DownloadStopping, handler: (event: AutoDownloadEventArgs) => void): void\r\n addEventListener(eventName: AutoDownloaderEvent.DownloadProgressed, handler: (event: AutoDownloadProgressedEventArgs) => void): void\r\n addEventListener(eventName: AutoDownloaderEvent.DownloadFailed, handler: (event: AutoDownloadFailedEventArgs) => void): void\r\n addEventListener(eventName: AutoDownloaderEvent.DownloadStarted, handler: (event: AutoDownloadStartedEventArgs) => void): void\r\n addEventListener(eventName: AutoDownloaderEvent.DownloadStartingFailed, handler: (event: AutoDownloadStartingFailedEventArgs) => void): void\r\n addEventListener(eventName: AutoDownloaderEvent.NewTransfersCheckCompleted, handler: (event: NewTransfersCheckCompletedEventArgs) => void): void\r\n addEventListener(eventName: AutoDownloaderEvent.CheckingForNewTransfersStarted, handler: (event: CheckingForNewTransfersStartedEventArgs) => void): void\r\n addEventListener(eventName: AutoDownloaderEvent.CheckingForNewTransfersStopped | AutoDownloaderEvent.CheckingForNewTransfersStopping, handler: () => void): void\r\n addEventListener(eventName: string, handler: (arg?: any) => void): void\r\n addEventListener(eventName: string, handler: (arg?: any) => void): void {\r\n this.#eventsEngine.addEventListener(eventName, handler);\r\n }\r\n}\r\n\r\nexport default AutoDownloader;"]}
1
+ {"version":3,"file":"autoDownloader.js","sourceRoot":"","sources":["../../../src/autoDownloader/autoDownloader.ts"],"names":[],"mappings":"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","sourcesContent":["import sleep from \"abortable-sleep\";\r\n\r\nimport AutoDownloaderError from \"./autoDownloaderError.js\";\r\nimport AutoDownloaderState from \"./state/autoDownloaderState.js\";\r\nimport AutoDownloaderNewTransferHandler from \"./transferHandler/autoDownloaderNewTransferHandler.js\";\r\nimport AutoDownloaderRecoverableTransferHandler from \"./transferHandler/autoDownloaderRecoverableTransferHandler.js\";\r\nimport AutoDownloaderEvent from \"./autoDownloaderEvent.js\";\r\nimport TransferStatus from \"../utils/types/transferStatus.js\";\r\nimport AutoDownloaderDestroyer from \"./autoDownloaderDestroyer.js\";\r\n\r\nimport type Logger from \"../client/loggers/logger.js\";\r\nimport type ConcurrencyController from \"../utils/concurrencyController/concurrencyController.js\";\r\nimport type AutoDownloaderOptions from \"./autoDownloaderOptions.js\";\r\nimport type TransferDownloaderFactory from './transferDownloaderFactory.js';\r\nimport type AutoDownloaderStateSnapshot from './state/autoDownloaderStateSnapshot.js';\r\nimport type AutoDownloaderRecoverableState from './state/autoDownloaderRecoverableState.js';\r\nimport type EventsEngine from '../utils/events/eventsEngine.js';\r\nimport type AutoDownloaderStateSerializer from './autoDownloaderStateSerializer.js';\r\nimport type AutoDownloaderTransferHandlerBase from \"./transferHandler/autoDownloaderTransferHandlerBase.js\";\r\nimport type NewInboxTransfersRetriever from \"./newInboxTransfersRetriever/newInboxTransfersRetriever.js\";\r\nimport type NewInboxTransfer from \"./newInboxTransfersRetriever/newInboxTransfer.js\";\r\nimport type AutoDownloaderStateRecoverableTransfer from \"./state/autoDownloaderStateRecoverableTransfer.js\";\r\nimport type NewTransfersCheckCompletedEventArgs from \"./eventArgs/newTransfersCheckCompletedEventArgs.js\";\r\nimport type AutoDownloadStartedEventArgs from \"./eventArgs/autoDownloadStartedEventArgs.js\";\r\nimport type AutoDownloadFailedEventArgs from \"./eventArgs/autoDownloadFailedEventArgs.js\";\r\nimport type AutoDownloadProgressedEventArgs from \"./eventArgs/autoDownloadProgressedEventArgs.js\";\r\nimport type AutoDownloadEventArgs from \"./eventArgs/autoDownloadEventArgs.js\";\r\nimport type AutoDownloadStartingFailedEventArgs from \"./eventArgs/autoDownloadStartingFailedEventArgs.js\";\r\nimport type CheckingForNewTransfersStartedEventArgs from \"./eventArgs/checkingForNewTransfersStartedEventArgs.js\";\r\nimport type AutoDownloadUnhealthyEventArgs from \"./eventArgs/autoDownloadUnhealthyEventArgs.js\";\r\n\r\nclass AutoDownloader {\r\n #newTransfersCheckIntervalInSeconds: number;\r\n\r\n #logger: Logger;\r\n #eventsEngine: EventsEngine;\r\n #state: AutoDownloaderState;\r\n #newInboxTransfersRetriever: NewInboxTransfersRetriever;\r\n #concurrencyController: ConcurrencyController;\r\n #transferDownloaderFactory: TransferDownloaderFactory;\r\n #destroyer: AutoDownloaderDestroyer;\r\n\r\n #isCheckingForNewTransfers: boolean = false;\r\n #abortController: AbortController = new AbortController();\r\n\r\n constructor(options: AutoDownloaderOptions, logger: Logger, newInboxTransfersRetriever: NewInboxTransfersRetriever, concurrencyController: ConcurrencyController, eventsEngine: EventsEngine, transferDownloaderFactory: TransferDownloaderFactory, stateSerializer: AutoDownloaderStateSerializer, recoverableState: AutoDownloaderRecoverableState | null) {\r\n this.#newTransfersCheckIntervalInSeconds = options.newTransfersCheckIntervalInSeconds;\r\n\r\n this.#logger = logger;\r\n this.#eventsEngine = eventsEngine;\r\n this.#newInboxTransfersRetriever = newInboxTransfersRetriever;\r\n this.#concurrencyController = concurrencyController;\r\n this.#transferDownloaderFactory = transferDownloaderFactory;\r\n\r\n this.#state = new AutoDownloaderState(eventsEngine);\r\n\r\n if (recoverableState)\r\n this.#state.recover(recoverableState);\r\n\r\n this.#state.addRecoverableStateObserver(eventArgs => stateSerializer.serialize(eventArgs));\r\n\r\n this.#destroyer = new AutoDownloaderDestroyer(this.#state, stateSerializer, transferDownloaderFactory, logger);\r\n }\r\n\r\n get state(): AutoDownloaderStateSnapshot {\r\n return {\r\n lastCompletedNewTransfersCheck: this.#state.lastCompletedNewTransfersCheck,\r\n runningTransfers: this.#state.runningTransfers,\r\n completedTransfers: this.#state.completedTransfers,\r\n failedTransfers: new Set(this.#state.failedTransfers.keys()),\r\n canceledTransfers: this.#state.canceledTransfers,\r\n };\r\n }\r\n\r\n get isAnyTransferRunning(): boolean {\r\n return this.#state.isAnyTransferRunning;\r\n }\r\n\r\n get isCheckingForNewTransfers(): boolean {\r\n return this.#isCheckingForNewTransfers;\r\n }\r\n\r\n set loginToken(loginToken: string) {\r\n this.#logger.logInfo(`AutoDownloader set loginToken called`);\r\n this.#newInboxTransfersRetriever.loginToken = loginToken;\r\n }\r\n\r\n set maxNumberOfConcurrentDownloads(maxNumberOfConcurrentDownloads: number) {\r\n this.#logger.logInfo(`AutoDownloader set maxNumberOfConcurrentDownloads = ${maxNumberOfConcurrentDownloads} called`);\r\n this.#concurrencyController.maxConcurrency = maxNumberOfConcurrentDownloads;\r\n }\r\n\r\n set newTransfersCheckIntervalInSeconds(newTransfersCheckIntervalInSeconds: number) {\r\n this.#logger.logInfo(`AutoDownloader set newTransfersCheckIntervalInSeconds = ${newTransfersCheckIntervalInSeconds} called`);\r\n this.#newTransfersCheckIntervalInSeconds = newTransfersCheckIntervalInSeconds;\r\n }\r\n\r\n set periodToRetrieveTransfersInHours(periodToRetrieveTransfersInHours: number) {\r\n this.#logger.logInfo(`AutoDownloader set periodToRetrieveTransfersInHours = ${periodToRetrieveTransfersInHours} called`);\r\n this.#newInboxTransfersRetriever.periodToRetrieveTransfersInHours = periodToRetrieveTransfersInHours;\r\n }\r\n\r\n set downloadForAllUsers(downloadForAllUsers: boolean) {\r\n this.#logger.logInfo(`AutoDownloader set downloadForAllUsers = ${downloadForAllUsers} called`);\r\n this.#newInboxTransfersRetriever.downloadForAllUsers = downloadForAllUsers;\r\n }\r\n\r\n set downloadFolderTemplate(downloadFolderTemplate: string) {\r\n this.#logger.logInfo(`AutoDownloader set downloadFolderTemplate = ${downloadFolderTemplate} called`);\r\n this.#transferDownloaderFactory.downloadFolderTemplate = downloadFolderTemplate;\r\n }\r\n\r\n async startCheckingForNewTransfers(): Promise<void> {\r\n this.#logger.logInfo(`AutoDownloader startCheckingForNewTransfers called`);\r\n\r\n if (this.#destroyer.isDestroyed)\r\n throw new AutoDownloaderError(`Auto-downloader has been destroyed`);\r\n\r\n if (this.#isCheckingForNewTransfers)\r\n throw new AutoDownloaderError(`Auto-downloader is already checking for new transfers`);\r\n\r\n this.#isCheckingForNewTransfers = true;\r\n this.#abortController = new AbortController();\r\n\r\n const eventArgs: CheckingForNewTransfersStartedEventArgs = { lastCompletedNewTransfersCheck: this.#state.lastCompletedNewTransfersCheck };\r\n this.#eventsEngine.emit(AutoDownloaderEvent.CheckingForNewTransfersStarted, eventArgs);\r\n\r\n while (!this.#abortController.signal.aborted) {\r\n /* eslint-disable no-await-in-loop */\r\n try {\r\n this.#logger.logDebug(`AutoDownloader main loop iteration started`);\r\n\r\n const newTransfers = await this.#newInboxTransfersRetriever.getNewTransfers(transferId => this.#state.isTransferHandled(transferId), this.#abortController.signal);\r\n\r\n this.#logger.logDebug(`AutoDownloader retrieved new transfers to start: [${newTransfers.map(t => t.transferId).join(`, `)}]`);\r\n\r\n if (this.#abortController.signal.aborted)\r\n break;\r\n\r\n await this.startNewTransfers(newTransfers);\r\n\r\n this.#state.newTransfersCheckCompleted();\r\n\r\n this.#logger.logDebug(`AutoDownloader main loop iteration finished`);\r\n }\r\n catch (error) {\r\n this.#logger.logError(error as Error, `AutoDownloader main loop error occured`, { isAborted: this.#abortController.signal.aborted });\r\n }\r\n\r\n await sleep(this.#newTransfersCheckIntervalInSeconds * 1000, this.#abortController.signal);\r\n }\r\n\r\n this.#isCheckingForNewTransfers = false;\r\n\r\n this.#logger.logInfo(`AutoDownloader stopped`);\r\n\r\n this.#eventsEngine.emit(AutoDownloaderEvent.CheckingForNewTransfersStopped);\r\n }\r\n\r\n async recoverTransfers(): Promise<void> {\r\n this.#logger.logInfo(`AutoDownloader recoverTransfers called`);\r\n\r\n if (this.#destroyer.isDestroyed)\r\n throw new AutoDownloaderError(`Auto-downloader has been destroyed`);\r\n\r\n const recoverableTransferHandlerFactory = (transfer: [string, AutoDownloaderStateRecoverableTransfer]) => new AutoDownloaderRecoverableTransferHandler(transfer[1].data, transfer[1].downloadId, this.#state, this.#transferDownloaderFactory, this.#logger);\r\n await this.startTransfers(this.#state.toBeRecoveredTransfers, recoverableTransferHandlerFactory);\r\n }\r\n\r\n private async startNewTransfers(newTransfers: NewInboxTransfer[]) {\r\n const newTransferHandlerFactory = (transfer: NewInboxTransfer) => new AutoDownloaderNewTransferHandler(transfer, this.#state, this.#transferDownloaderFactory, this.#logger);\r\n await this.startTransfers(newTransfers, newTransferHandlerFactory);\r\n }\r\n\r\n private async startTransfers<T>(transfers: Iterable<T>, transferHandlerFactory: (transfer: T) => AutoDownloaderTransferHandlerBase) {\r\n for (const transfer of transfers) {\r\n const releaseSemaphore = await this.#concurrencyController.acquire();\r\n\r\n if (this.#abortController.signal.aborted) {\r\n releaseSemaphore();\r\n return;\r\n }\r\n\r\n const transferHandler = transferHandlerFactory(transfer);\r\n\r\n this.#logger.logInfo(`AutoDownloader starting transfer having id ${transferHandler.transferId}`);\r\n\r\n transferHandler.startTransfer(releaseSemaphore);\r\n }\r\n }\r\n\r\n destroy() {\r\n this.#logger.logInfo(`AutoDownloader destroy called`);\r\n\r\n if (this.#isCheckingForNewTransfers)\r\n this.pauseCheckingForNewTransfers();\r\n\r\n this.#destroyer.destroy();\r\n }\r\n\r\n pauseCheckingForNewTransfers() {\r\n this.#logger.logInfo(`AutoDownloader pauseCheckingForNewTransfers called`);\r\n\r\n if (!this.#isCheckingForNewTransfers)\r\n throw new AutoDownloaderError(`Auto-downloader is not checking for new transfers, so it cannot be paused`);\r\n\r\n this.#eventsEngine.emit(AutoDownloaderEvent.CheckingForNewTransfersStopping);\r\n this.#abortController.abort();\r\n }\r\n\r\n pauseTransfer(transferId: string) {\r\n this.#logger.logInfo(`AutoDownloader pauseTransfer ${transferId} called`);\r\n\r\n const transferDownloader = this.#state.getRunningTransferDownloader(transferId);\r\n transferDownloader.pause();\r\n }\r\n\r\n resumeTransfer(transferId: string) {\r\n this.#logger.logInfo(`AutoDownloader resumeTransfer ${transferId} called`);\r\n\r\n const transferDownloader = this.#state.getRunningTransferDownloader(transferId);\r\n transferDownloader.resume();\r\n }\r\n\r\n stopTransfer(transferId: string) {\r\n this.#logger.logInfo(`AutoDownloader stopTransfer ${transferId} called`);\r\n\r\n const transferDownloader = this.#state.getRunningTransferDownloader(transferId);\r\n\r\n if (transferDownloader.status !== TransferStatus.Running)\r\n return;\r\n\r\n transferDownloader.stop();\r\n }\r\n\r\n stopAllTransfers() {\r\n this.#logger.logInfo(`AutoDownloader stopAllTransfers called`);\r\n\r\n this.#state.runningTransfers.forEach(t => this.stopTransfer(t));\r\n }\r\n\r\n cancelTransfer(transferId: string) {\r\n this.#logger.logInfo(`AutoDownloader cancelTransfer ${transferId} called`);\r\n\r\n if (this.#state.runningTransfers.has(transferId)) {\r\n this.cancelRunningTransfer(transferId);\r\n return;\r\n }\r\n\r\n if (this.#state.failedTransfers.has(transferId)) {\r\n this.cancelFailedTransfer(transferId);\r\n return;\r\n }\r\n\r\n throw new AutoDownloaderError(`Transfer not found (TransferId = ${transferId})`);\r\n }\r\n\r\n private cancelRunningTransfer(transferId: string) {\r\n this.#destroyer.abortRunningTransfer(transferId);\r\n }\r\n\r\n private cancelFailedTransfer(transferId: string) {\r\n this.#state.transferAborting(transferId);\r\n\r\n const transfer = this.#state.failedTransfers.get(transferId)!;\r\n\r\n if (transfer.downloadId)\r\n this.#destroyer.cleanupTransfer(transfer.downloadId);\r\n\r\n this.#state.transferAborted(transferId);\r\n }\r\n\r\n addEventListener(eventName: AutoDownloaderEvent.DownloadAborted | AutoDownloaderEvent.DownloadCompleted | AutoDownloaderEvent.DownloadResumed | AutoDownloaderEvent.DownloadAborting | AutoDownloaderEvent.DownloadPaused | AutoDownloaderEvent.DownloadPausing | AutoDownloaderEvent.DownloadStopped | AutoDownloaderEvent.DownloadStopping | AutoDownloaderEvent.DownloadHealthy, handler: (event: AutoDownloadEventArgs) => void): void\r\n addEventListener(eventName: AutoDownloaderEvent.DownloadUnealthy, handler: (event: AutoDownloadUnhealthyEventArgs) => void): void\r\n addEventListener(eventName: AutoDownloaderEvent.DownloadProgressed, handler: (event: AutoDownloadProgressedEventArgs) => void): void\r\n addEventListener(eventName: AutoDownloaderEvent.DownloadFailed, handler: (event: AutoDownloadFailedEventArgs) => void): void\r\n addEventListener(eventName: AutoDownloaderEvent.DownloadStarted, handler: (event: AutoDownloadStartedEventArgs) => void): void\r\n addEventListener(eventName: AutoDownloaderEvent.DownloadStartingFailed, handler: (event: AutoDownloadStartingFailedEventArgs) => void): void\r\n addEventListener(eventName: AutoDownloaderEvent.NewTransfersCheckCompleted, handler: (event: NewTransfersCheckCompletedEventArgs) => void): void\r\n addEventListener(eventName: AutoDownloaderEvent.CheckingForNewTransfersStarted, handler: (event: CheckingForNewTransfersStartedEventArgs) => void): void\r\n addEventListener(eventName: AutoDownloaderEvent.CheckingForNewTransfersStopped | AutoDownloaderEvent.CheckingForNewTransfersStopping, handler: () => void): void\r\n addEventListener(eventName: string, handler: (arg?: any) => void): void\r\n addEventListener(eventName: string, handler: (arg?: any) => void): void {\r\n this.#eventsEngine.addEventListener(eventName, handler);\r\n }\r\n}\r\n\r\nexport default AutoDownloader;"]}
@@ -14,7 +14,9 @@ declare enum AutoDownloaderEvent {
14
14
  DownloadFailed = "AutoDownloadFailed",
15
15
  DownloadStopped = "AutoDownloadStopped",
16
16
  DownloadStopping = "AutoDownloadStopping",
17
- DownloadStartingFailed = "AutoDownloadStartingFailed"
17
+ DownloadStartingFailed = "AutoDownloadStartingFailed",
18
+ DownloadHealthy = "DownloadHealthy",
19
+ DownloadUnealthy = "DownloadUnealthy"
18
20
  }
19
21
  export default AutoDownloaderEvent;
20
22
  //# sourceMappingURL=autoDownloaderEvent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"autoDownloaderEvent.d.ts","sourceRoot":"","sources":["../../../src/autoDownloader/autoDownloaderEvent.ts"],"names":[],"mappings":"AAAA,aAAK,mBAAmB;IAEpB,eAAe,wBAAwB;IACvC,kBAAkB,2BAA2B;IAC7C,iBAAiB,0BAA0B;IAC3C,gBAAgB,yBAAyB;IACzC,eAAe,wBAAwB;IACvC,eAAe,wBAAwB;IACvC,cAAc,uBAAuB;IACrC,eAAe,wBAAwB;IAGvC,8BAA8B,iDAAiD;IAC/E,8BAA8B,iDAAiD;IAC/E,+BAA+B,kDAAkD;IACjF,0BAA0B,6CAA6C;IACvE,cAAc,uBAAuB;IACrC,eAAe,wBAAwB;IACvC,gBAAgB,yBAAyB;IACzC,sBAAsB,+BAA+B;CACxD;AAED,eAAe,mBAAmB,CAAC"}
1
+ {"version":3,"file":"autoDownloaderEvent.d.ts","sourceRoot":"","sources":["../../../src/autoDownloader/autoDownloaderEvent.ts"],"names":[],"mappings":"AAAA,aAAK,mBAAmB;IAEpB,eAAe,wBAAwB;IACvC,kBAAkB,2BAA2B;IAC7C,iBAAiB,0BAA0B;IAC3C,gBAAgB,yBAAyB;IACzC,eAAe,wBAAwB;IACvC,eAAe,wBAAwB;IACvC,cAAc,uBAAuB;IACrC,eAAe,wBAAwB;IAGvC,8BAA8B,iDAAiD;IAC/E,8BAA8B,iDAAiD;IAC/E,+BAA+B,kDAAkD;IACjF,0BAA0B,6CAA6C;IACvE,cAAc,uBAAuB;IACrC,eAAe,wBAAwB;IACvC,gBAAgB,yBAAyB;IACzC,sBAAsB,+BAA+B;IAGrD,eAAe,oBAAoB;IACnC,gBAAgB,qBAAqB;CACxC;AAED,eAAe,mBAAmB,CAAC"}
@@ -18,6 +18,9 @@ var AutoDownloaderEvent;
18
18
  AutoDownloaderEvent["DownloadStopped"] = "AutoDownloadStopped";
19
19
  AutoDownloaderEvent["DownloadStopping"] = "AutoDownloadStopping";
20
20
  AutoDownloaderEvent["DownloadStartingFailed"] = "AutoDownloadStartingFailed";
21
+ /* Healthy events */
22
+ AutoDownloaderEvent["DownloadHealthy"] = "DownloadHealthy";
23
+ AutoDownloaderEvent["DownloadUnealthy"] = "DownloadUnealthy";
21
24
  })(AutoDownloaderEvent || (AutoDownloaderEvent = {}));
22
25
  export default AutoDownloaderEvent;
23
26
  //# sourceMappingURL=autoDownloaderEvent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"autoDownloaderEvent.js","sourceRoot":"","sources":["../../../src/autoDownloader/autoDownloaderEvent.ts"],"names":[],"mappings":"AAAA,IAAK,mBAoBJ;AApBD,WAAK,mBAAmB;IACpB,uBAAuB;IACvB,8DAAuC,CAAA;IACvC,oEAA6C,CAAA;IAC7C,kEAA2C,CAAA;IAC3C,gEAAyC,CAAA;IACzC,8DAAuC,CAAA;IACvC,8DAAuC,CAAA;IACvC,4DAAqC,CAAA;IACrC,8DAAuC,CAAA;IAEvC,sCAAsC;IACtC,sGAA+E,CAAA;IAC/E,sGAA+E,CAAA;IAC/E,wGAAiF,CAAA;IACjF,8FAAuE,CAAA;IACvE,4DAAqC,CAAA;IACrC,8DAAuC,CAAA;IACvC,gEAAyC,CAAA;IACzC,4EAAqD,CAAA;AACzD,CAAC,EApBI,mBAAmB,KAAnB,mBAAmB,QAoBvB;AAED,eAAe,mBAAmB,CAAC","sourcesContent":["enum AutoDownloaderEvent {\r\n /* Downloader events */\r\n DownloadStarted = `AutoDownloadStarted`,\r\n DownloadProgressed = `AutoDownloadProgressed`,\r\n DownloadCompleted = `AutoDownloadCompleted`,\r\n DownloadAborting = `AutoDownloadAborting`,\r\n DownloadAborted = `AutoDownloadAborted`,\r\n DownloadPausing = `AutoDownloadPausing`,\r\n DownloadPaused = `AutoDownloadPaused`,\r\n DownloadResumed = `AutoDownloadResumed`,\r\n\r\n /* AutoDownloader additional events */\r\n CheckingForNewTransfersStarted = `AutoDownloaderCheckingForNewTransfersStarted`,\r\n CheckingForNewTransfersStopped = `AutoDownloaderCheckingForNewTransfersStopped`,\r\n CheckingForNewTransfersStopping = `AutoDownloaderCheckingForNewTransfersStopping`,\r\n NewTransfersCheckCompleted = `AutoDownloaderNewTransfersCheckCompleted`,\r\n DownloadFailed = `AutoDownloadFailed`,\r\n DownloadStopped = `AutoDownloadStopped`,\r\n DownloadStopping = `AutoDownloadStopping`,\r\n DownloadStartingFailed = `AutoDownloadStartingFailed`,\r\n}\r\n\r\nexport default AutoDownloaderEvent;"]}
1
+ {"version":3,"file":"autoDownloaderEvent.js","sourceRoot":"","sources":["../../../src/autoDownloader/autoDownloaderEvent.ts"],"names":[],"mappings":"AAAA,IAAK,mBAwBJ;AAxBD,WAAK,mBAAmB;IACpB,uBAAuB;IACvB,8DAAuC,CAAA;IACvC,oEAA6C,CAAA;IAC7C,kEAA2C,CAAA;IAC3C,gEAAyC,CAAA;IACzC,8DAAuC,CAAA;IACvC,8DAAuC,CAAA;IACvC,4DAAqC,CAAA;IACrC,8DAAuC,CAAA;IAEvC,sCAAsC;IACtC,sGAA+E,CAAA;IAC/E,sGAA+E,CAAA;IAC/E,wGAAiF,CAAA;IACjF,8FAAuE,CAAA;IACvE,4DAAqC,CAAA;IACrC,8DAAuC,CAAA;IACvC,gEAAyC,CAAA;IACzC,4EAAqD,CAAA;IAErD,oBAAoB;IACpB,0DAAmC,CAAA;IACnC,4DAAqC,CAAA;AACzC,CAAC,EAxBI,mBAAmB,KAAnB,mBAAmB,QAwBvB;AAED,eAAe,mBAAmB,CAAC","sourcesContent":["enum AutoDownloaderEvent {\r\n /* Downloader events */\r\n DownloadStarted = `AutoDownloadStarted`,\r\n DownloadProgressed = `AutoDownloadProgressed`,\r\n DownloadCompleted = `AutoDownloadCompleted`,\r\n DownloadAborting = `AutoDownloadAborting`,\r\n DownloadAborted = `AutoDownloadAborted`,\r\n DownloadPausing = `AutoDownloadPausing`,\r\n DownloadPaused = `AutoDownloadPaused`,\r\n DownloadResumed = `AutoDownloadResumed`,\r\n\r\n /* AutoDownloader additional events */\r\n CheckingForNewTransfersStarted = `AutoDownloaderCheckingForNewTransfersStarted`,\r\n CheckingForNewTransfersStopped = `AutoDownloaderCheckingForNewTransfersStopped`,\r\n CheckingForNewTransfersStopping = `AutoDownloaderCheckingForNewTransfersStopping`,\r\n NewTransfersCheckCompleted = `AutoDownloaderNewTransfersCheckCompleted`,\r\n DownloadFailed = `AutoDownloadFailed`,\r\n DownloadStopped = `AutoDownloadStopped`,\r\n DownloadStopping = `AutoDownloadStopping`,\r\n DownloadStartingFailed = `AutoDownloadStartingFailed`,\r\n\r\n /* Healthy events */\r\n DownloadHealthy = `DownloadHealthy`,\r\n DownloadUnealthy = `DownloadUnealthy`,\r\n}\r\n\r\nexport default AutoDownloaderEvent;"]}
@@ -0,0 +1,6 @@
1
+ import { HealthMonitorUnhealthyEventArgs } from "../../index.node.js";
2
+ type AutoDownloadUnhealthyEventArgs = HealthMonitorUnhealthyEventArgs & {
3
+ transferId: string;
4
+ };
5
+ export default AutoDownloadUnhealthyEventArgs;
6
+ //# sourceMappingURL=autoDownloadUnhealthyEventArgs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autoDownloadUnhealthyEventArgs.d.ts","sourceRoot":"","sources":["../../../../src/autoDownloader/eventArgs/autoDownloadUnhealthyEventArgs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,qBAAqB,CAAC;AAEtE,KAAK,8BAA8B,GAAG,+BAA+B,GAAG;IACpE,UAAU,EAAE,MAAM,CAAC;CACtB,CAAA;AAED,eAAe,8BAA8B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=autoDownloadUnhealthyEventArgs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autoDownloadUnhealthyEventArgs.js","sourceRoot":"","sources":["../../../../src/autoDownloader/eventArgs/autoDownloadUnhealthyEventArgs.ts"],"names":[],"mappings":"","sourcesContent":["import { HealthMonitorUnhealthyEventArgs } from \"../../index.node.js\";\r\n\r\ntype AutoDownloadUnhealthyEventArgs = HealthMonitorUnhealthyEventArgs & {\r\n transferId: string;\r\n}\r\n\r\nexport default AutoDownloadUnhealthyEventArgs;"]}
@@ -1,3 +1,4 @@
1
+ import type HealthMonitorUnhealthyEventArgs from "../../client/healthMonitor/events/eventArgs/healthMonitorUnhealthyEventArgs.js";
1
2
  import type EventsEngine from "../../utils/events/eventsEngine.js";
2
3
  import type TransferDownloader from "../../client/downloader/transferDownloader.js";
3
4
  import type DownloadEventArgs from "../../downloader/eventArgs/downloadEventArgs.js";
@@ -36,6 +37,8 @@ declare class AutoDownloaderState {
36
37
  transferPausing(transferId: string): void;
37
38
  transferStopped(transferId: string): void;
38
39
  transferStopping(transferId: string): void;
40
+ transferHealthy(transferId: string): void;
41
+ transferUnhealthy(transferId: string, downloaderEventArgs: HealthMonitorUnhealthyEventArgs): void;
39
42
  private emitBasicEvent;
40
43
  }
41
44
  export default AutoDownloaderState;
@@ -1 +1 @@
1
- {"version":3,"file":"autoDownloaderState.d.ts","sourceRoot":"","sources":["../../../../src/autoDownloader/state/autoDownloaderState.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,YAAY,MAAM,oCAAoC,CAAC;AAGnE,OAAO,KAAK,kBAAkB,MAAM,+CAA+C,CAAC;AAEpF,OAAO,KAAK,iBAAiB,MAAM,iDAAiD,CAAC;AAGrF,OAAO,KAAK,8BAA8B,MAAM,qCAAqC,CAAC;AAEtF,OAAO,KAAK,sCAAsC,MAAM,6CAA6C,CAAC;AACtG,OAAO,KAAK,gBAAgB,MAAM,mDAAmD,CAAC;AAItF,cAAM,mBAAmB;;IAarB,IAAI,8BAA8B,IAAI,IAAI,GAAG,SAAS,CAErD;IAED,IAAI,oBAAoB,IAAI,OAAO,CAQlC;IAED,IAAI,sBAAsB,IAAI,WAAW,CAAC,MAAM,EAAE,sCAAsC,CAAC,CAExF;IAED,IAAI,gBAAgB,IAAI,WAAW,CAAC,MAAM,CAAC,CAE1C;IAED,IAAI,eAAe,IAAI,WAAW,CAAC,MAAM,EAAE,sCAAsC,CAAC,CAEjF;IAED,IAAI,iBAAiB,IAAI,WAAW,CAAC,MAAM,CAAC,CAE3C;IAED,IAAI,kBAAkB,IAAI,WAAW,CAAC,MAAM,CAAC,CAE5C;gBAEW,YAAY,EAAE,YAAY;IAItC,OAAO,CAAC,gBAAgB,EAAE,8BAA8B;IAYxD,2BAA2B,CAAC,QAAQ,EAAE,CAAC,gBAAgB,EAAE,8BAA8B,KAAK,IAAI;IAIhG,kCAAkC;IAIlC,OAAO,CAAC,gCAAgC;IAKxC,OAAO,CAAC,mBAAmB;IAiB3B,4BAA4B,CAAC,UAAU,EAAE,MAAM,GAAG,kBAAkB;IASpE,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAQ9C,0BAA0B;IAS1B,iBAAiB,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,UAAU,EAAE,kBAAkB;IASrF,eAAe,CAAC,QAAQ,EAAE,gBAAgB,EAAE,UAAU,EAAE,kBAAkB;IAsB1E,sBAAsB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM;IAS/E,sBAAsB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM;IAkB/E,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM;IAc/D,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAkBzC,iBAAiB,CAAC,UAAU,EAAE,MAAM;IASpC,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,mBAAmB,EAAE,iBAAiB,GAAG,IAAI;IAapF,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAIzC,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAI1C,cAAc,CAAC,UAAU,EAAE,MAAM;IAIjC,eAAe,CAAC,UAAU,EAAE,MAAM;IAIlC,eAAe,CAAC,UAAU,EAAE,MAAM;IAIlC,gBAAgB,CAAC,UAAU,EAAE,MAAM;IAInC,OAAO,CAAC,cAAc;CAIzB;AAED,eAAe,mBAAmB,CAAC"}
1
+ {"version":3,"file":"autoDownloaderState.d.ts","sourceRoot":"","sources":["../../../../src/autoDownloader/state/autoDownloaderState.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,+BAA+B,MAAM,gFAAgF,CAAC;AAClI,OAAO,KAAK,YAAY,MAAM,oCAAoC,CAAC;AAGnE,OAAO,KAAK,kBAAkB,MAAM,+CAA+C,CAAC;AAEpF,OAAO,KAAK,iBAAiB,MAAM,iDAAiD,CAAC;AAGrF,OAAO,KAAK,8BAA8B,MAAM,qCAAqC,CAAC;AAEtF,OAAO,KAAK,sCAAsC,MAAM,6CAA6C,CAAC;AACtG,OAAO,KAAK,gBAAgB,MAAM,mDAAmD,CAAC;AAGtF,cAAM,mBAAmB;;IAarB,IAAI,8BAA8B,IAAI,IAAI,GAAG,SAAS,CAErD;IAED,IAAI,oBAAoB,IAAI,OAAO,CAQlC;IAED,IAAI,sBAAsB,IAAI,WAAW,CAAC,MAAM,EAAE,sCAAsC,CAAC,CAExF;IAED,IAAI,gBAAgB,IAAI,WAAW,CAAC,MAAM,CAAC,CAE1C;IAED,IAAI,eAAe,IAAI,WAAW,CAAC,MAAM,EAAE,sCAAsC,CAAC,CAEjF;IAED,IAAI,iBAAiB,IAAI,WAAW,CAAC,MAAM,CAAC,CAE3C;IAED,IAAI,kBAAkB,IAAI,WAAW,CAAC,MAAM,CAAC,CAE5C;gBAEW,YAAY,EAAE,YAAY;IAItC,OAAO,CAAC,gBAAgB,EAAE,8BAA8B;IAYxD,2BAA2B,CAAC,QAAQ,EAAE,CAAC,gBAAgB,EAAE,8BAA8B,KAAK,IAAI;IAIhG,kCAAkC;IAIlC,OAAO,CAAC,gCAAgC;IAKxC,OAAO,CAAC,mBAAmB;IAiB3B,4BAA4B,CAAC,UAAU,EAAE,MAAM,GAAG,kBAAkB;IASpE,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAQ9C,0BAA0B;IAS1B,iBAAiB,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,UAAU,EAAE,kBAAkB;IASrF,eAAe,CAAC,QAAQ,EAAE,gBAAgB,EAAE,UAAU,EAAE,kBAAkB;IAsB1E,sBAAsB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM;IAS/E,sBAAsB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM;IAkB/E,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM;IAc/D,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAkBzC,iBAAiB,CAAC,UAAU,EAAE,MAAM;IASpC,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,mBAAmB,EAAE,iBAAiB,GAAG,IAAI;IAapF,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAIzC,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAI1C,cAAc,CAAC,UAAU,EAAE,MAAM;IAIjC,eAAe,CAAC,UAAU,EAAE,MAAM;IAIlC,eAAe,CAAC,UAAU,EAAE,MAAM;IAIlC,gBAAgB,CAAC,UAAU,EAAE,MAAM;IAInC,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAIzC,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,mBAAmB,EAAE,+BAA+B,GAAG,IAAI;IASjG,OAAO,CAAC,cAAc;CAIzB;AAED,eAAe,mBAAmB,CAAC"}
@@ -190,6 +190,16 @@ class AutoDownloaderState {
190
190
  transferStopping(transferId) {
191
191
  this.emitBasicEvent(transferId, AutoDownloaderEvent.DownloadStopping);
192
192
  }
193
+ transferHealthy(transferId) {
194
+ this.emitBasicEvent(transferId, AutoDownloaderEvent.DownloadHealthy);
195
+ }
196
+ transferUnhealthy(transferId, downloaderEventArgs) {
197
+ const eventArgs = {
198
+ transferId,
199
+ ...downloaderEventArgs,
200
+ };
201
+ this.#eventsEngine.emit(AutoDownloaderEvent.DownloadUnealthy, eventArgs);
202
+ }
193
203
  emitBasicEvent(transferId, event) {
194
204
  const eventArgs = { transferId };
195
205
  this.#eventsEngine.emit(event, eventArgs);
@@ -1 +1 @@
1
- {"version":3,"file":"autoDownloaderState.js","sourceRoot":"","sources":["../../../../src/autoDownloader/state/autoDownloaderState.ts"],"names":[],"mappings":"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","sourcesContent":["import AutoDownloaderEvent from \"../autoDownloaderEvent.js\";\r\nimport AutoDownloaderError from \"../autoDownloaderError.js\";\r\n\r\nimport type EventsEngine from \"../../utils/events/eventsEngine.js\";\r\nimport type NewTransfersCheckCompletedEventArgs from \"../eventArgs/newTransfersCheckCompletedEventArgs.js\";\r\nimport type AutoDownloadFailedEventArgs from \"../eventArgs/autoDownloadFailedEventArgs.js\";\r\nimport type TransferDownloader from \"../../client/downloader/transferDownloader.js\";\r\nimport type AutoDownloadStartedEventArgs from \"../eventArgs/autoDownloadStartedEventArgs.js\";\r\nimport type DownloadEventArgs from \"../../downloader/eventArgs/downloadEventArgs.js\";\r\nimport type AutoDownloadEventArgs from \"../eventArgs/autoDownloadEventArgs.js\";\r\nimport type AutoDownloadProgressedEventArgs from \"../eventArgs/autoDownloadProgressedEventArgs.js\";\r\nimport type AutoDownloaderRecoverableState from \"./autoDownloaderRecoverableState.js\";\r\nimport type AutoDownloaderStateRunningTransfer from \"./autoDownloaderStateRunningTransfer.js\";\r\nimport type AutoDownloaderStateRecoverableTransfer from \"./autoDownloaderStateRecoverableTransfer.js\";\r\nimport type NewInboxTransfer from \"../newInboxTransfersRetriever/newInboxTransfer.js\";\r\nimport TransferStatus from \"../../utils/types/transferStatus.js\";\r\nimport type AutoDownloadStartingFailedEventArgs from \"../eventArgs/autoDownloadStartingFailedEventArgs.js\";\r\n\r\nclass AutoDownloaderState {\r\n #eventsEngine: EventsEngine;\r\n\r\n #lastCompletedNewTransfersCheck?: Date;\r\n\r\n #toBeRecoveredTransfers = new Map<string, AutoDownloaderStateRecoverableTransfer>();\r\n #runningTransfers = new Map<string, AutoDownloaderStateRunningTransfer>();\r\n #failedTransfers = new Map<string, AutoDownloaderStateRecoverableTransfer>();\r\n #canceledTransfers = new Set<string>();\r\n #completedTransfers = new Set<string>();\r\n\r\n #recoverableStateObservers = new Set<(recoverableState: AutoDownloaderRecoverableState) => void>();\r\n\r\n get lastCompletedNewTransfersCheck(): Date | undefined {\r\n return this.#lastCompletedNewTransfersCheck;\r\n }\r\n\r\n get isAnyTransferRunning(): boolean {\r\n return Array\r\n .from(this.#runningTransfers.values())\r\n .filter(t => t.downloader.status === TransferStatus.Running\r\n || t.downloader.status === TransferStatus.Pausing\r\n || t.downloader.status === TransferStatus.Aborting\r\n || t.downloader.status === TransferStatus.Canceling)\r\n .length > 0;\r\n }\r\n\r\n get toBeRecoveredTransfers(): ReadonlyMap<string, AutoDownloaderStateRecoverableTransfer> {\r\n return this.#toBeRecoveredTransfers;\r\n }\r\n\r\n get runningTransfers(): ReadonlySet<string> {\r\n return new Set(this.#runningTransfers.keys());\r\n }\r\n\r\n get failedTransfers(): ReadonlyMap<string, AutoDownloaderStateRecoverableTransfer> {\r\n return this.#failedTransfers;\r\n }\r\n\r\n get canceledTransfers(): ReadonlySet<string> {\r\n return this.#canceledTransfers;\r\n }\r\n\r\n get completedTransfers(): ReadonlySet<string> {\r\n return this.#completedTransfers;\r\n }\r\n\r\n constructor(eventsEngine: EventsEngine) {\r\n this.#eventsEngine = eventsEngine;\r\n }\r\n\r\n recover(recoverableState: AutoDownloaderRecoverableState) {\r\n if (recoverableState.lastCompletedNewTransfersCheckDate)\r\n this.#lastCompletedNewTransfersCheck = new Date(recoverableState.lastCompletedNewTransfersCheckDate);\r\n\r\n recoverableState.completedTransfers.forEach(t => this.#completedTransfers.add(t));\r\n recoverableState.canceledTransfers.forEach(t => this.#canceledTransfers.add(t));\r\n\r\n recoverableState.toBeRecoveredTransfers.forEach((value, key) => this.#toBeRecoveredTransfers.set(key, value));\r\n recoverableState.runningTransfers.forEach((value, key) => this.#toBeRecoveredTransfers.set(key, value));\r\n recoverableState.failedTransfers.forEach((value, key) => this.#toBeRecoveredTransfers.set(key, value));\r\n }\r\n\r\n addRecoverableStateObserver(observer: (recoverableState: AutoDownloaderRecoverableState) => void) {\r\n this.#recoverableStateObservers.add(observer);\r\n }\r\n\r\n removeAllRecoverableStateObservers() {\r\n this.#recoverableStateObservers.clear();\r\n }\r\n\r\n private notifyRecoverableStateHasChanged() {\r\n const recoverableState = this.getRecoverableState();\r\n this.#recoverableStateObservers.forEach(observer => observer(recoverableState));\r\n }\r\n\r\n private getRecoverableState(): AutoDownloaderRecoverableState {\r\n const recoverableRunningTransfers: Map<string, AutoDownloaderStateRecoverableTransfer> = new Map(\r\n Array\r\n .from(this.#runningTransfers.entries())\r\n .map(entry => [entry[0], { downloadId: entry[1].downloader.downloadId, data: entry[1].data }]),\r\n );\r\n\r\n return {\r\n lastCompletedNewTransfersCheckDate: this.#lastCompletedNewTransfersCheck?.getTime(),\r\n toBeRecoveredTransfers: this.#toBeRecoveredTransfers,\r\n runningTransfers: recoverableRunningTransfers,\r\n failedTransfers: this.#failedTransfers,\r\n canceledTransfers: this.#canceledTransfers,\r\n completedTransfers: this.#completedTransfers,\r\n };\r\n }\r\n\r\n getRunningTransferDownloader(transferId: string): TransferDownloader {\r\n const runningTransfer = this.#runningTransfers.get(transferId);\r\n\r\n if (!runningTransfer)\r\n throw new AutoDownloaderError(`Transfer downloader for transfer having id = ${transferId} doesn't exist`);\r\n\r\n return runningTransfer.downloader;\r\n }\r\n\r\n isTransferHandled(transferId: string): boolean {\r\n return this.#runningTransfers.has(transferId)\r\n || this.#completedTransfers.has(transferId)\r\n || this.#canceledTransfers.has(transferId)\r\n || this.#failedTransfers.has(transferId)\r\n || this.#toBeRecoveredTransfers.has(transferId);\r\n }\r\n\r\n newTransfersCheckCompleted() {\r\n this.#lastCompletedNewTransfersCheck = new Date();\r\n\r\n this.notifyRecoverableStateHasChanged();\r\n\r\n const eventArgs: NewTransfersCheckCompletedEventArgs = { date: this.#lastCompletedNewTransfersCheck };\r\n this.#eventsEngine.emit(AutoDownloaderEvent.NewTransfersCheckCompleted, eventArgs);\r\n }\r\n\r\n transferRecovered(recoveredTransfer: NewInboxTransfer, downloader: TransferDownloader) {\r\n const recoveredTransferMapEntry = this.#toBeRecoveredTransfers.get(recoveredTransfer.transferId);\r\n\r\n if (recoveredTransferMapEntry)\r\n this.#toBeRecoveredTransfers.delete(recoveredTransfer.transferId);\r\n\r\n this.transferStarted(recoveredTransfer, downloader);\r\n }\r\n\r\n transferStarted(transfer: NewInboxTransfer, downloader: TransferDownloader) {\r\n this.#runningTransfers.set(transfer.transferId, { downloader, data: transfer });\r\n\r\n this.notifyRecoverableStateHasChanged();\r\n\r\n const initialState = downloader.state!;\r\n\r\n const eventArgs: AutoDownloadStartedEventArgs = {\r\n transferId: transfer.transferId,\r\n filesCount: transfer.filesCount,\r\n totalSizeInBytes: transfer.sizeInBytes,\r\n message: transfer.message,\r\n subject: transfer.subject,\r\n downloadPath: initialState.downloadBaseFolder,\r\n progressInPercentage: initialState.progressPercent,\r\n transferredBytesCount: initialState.downloadedBytes,\r\n files: initialState.files!.map(f => ({ name: f.name, downloadPath: f.downloadPath })),\r\n };\r\n\r\n this.#eventsEngine.emit(AutoDownloaderEvent.DownloadStarted, eventArgs);\r\n }\r\n\r\n transferRecoveryFailed(transfer: NewInboxTransfer, error: Error, reason: string) {\r\n const recoveredTransferMapEntry = this.#toBeRecoveredTransfers.get(transfer.transferId);\r\n\r\n if (recoveredTransferMapEntry)\r\n this.#toBeRecoveredTransfers.delete(transfer.transferId);\r\n\r\n this.transferStartingFailed(transfer, error, reason);\r\n }\r\n\r\n transferStartingFailed(transfer: NewInboxTransfer, error: Error, reason: string) {\r\n this.#failedTransfers.set(transfer.transferId, { data: transfer });\r\n\r\n this.notifyRecoverableStateHasChanged();\r\n\r\n const eventArgs: AutoDownloadStartingFailedEventArgs = {\r\n transferId: transfer.transferId,\r\n filesCount: transfer.filesCount,\r\n totalSizeInBytes: transfer.sizeInBytes,\r\n message: transfer.message,\r\n subject: transfer.subject,\r\n error,\r\n reason,\r\n };\r\n\r\n this.#eventsEngine.emit(AutoDownloaderEvent.DownloadStartingFailed, eventArgs);\r\n }\r\n\r\n transferFailed(transferId: string, error: Error, reason: string) {\r\n const runningTransfer = this.#runningTransfers.get(transferId);\r\n\r\n if (runningTransfer) {\r\n this.#runningTransfers.delete(transferId);\r\n this.#failedTransfers.set(transferId, { downloadId: runningTransfer.downloader.downloadId, data: runningTransfer.data });\r\n }\r\n\r\n this.notifyRecoverableStateHasChanged();\r\n\r\n const eventArgs: AutoDownloadFailedEventArgs = { transferId, error, reason };\r\n this.#eventsEngine.emit(AutoDownloaderEvent.DownloadFailed, eventArgs);\r\n }\r\n\r\n transferAborted(transferId: string): void {\r\n const runningTransfer = this.#runningTransfers.get(transferId);\r\n\r\n if (runningTransfer)\r\n this.#runningTransfers.delete(transferId);\r\n\r\n const failedTransfer = this.#failedTransfers.get(transferId);\r\n\r\n if (failedTransfer)\r\n this.#failedTransfers.delete(transferId);\r\n\r\n this.#canceledTransfers.add(transferId);\r\n\r\n this.notifyRecoverableStateHasChanged();\r\n\r\n this.emitBasicEvent(transferId, AutoDownloaderEvent.DownloadAborted);\r\n }\r\n\r\n transferCompleted(transferId: string) {\r\n this.#runningTransfers.delete(transferId);\r\n this.#completedTransfers.add(transferId);\r\n\r\n this.notifyRecoverableStateHasChanged();\r\n\r\n this.emitBasicEvent(transferId, AutoDownloaderEvent.DownloadCompleted);\r\n }\r\n\r\n transferProgressed(transferId: string, downloaderEventArgs: DownloadEventArgs): void {\r\n const eventArgs: AutoDownloadProgressedEventArgs = {\r\n transferId,\r\n bytesPerSecondAverage: downloaderEventArgs.bytesPerSecondAverage,\r\n bytesPerSecondCurrent: downloaderEventArgs.bytesPerSecondCurrent,\r\n downloadedBytes: downloaderEventArgs.downloadedBytes,\r\n estimatedRemainingTimeInSeconds: downloaderEventArgs.estimatedRemainingTimeSeconds,\r\n progressPercentage: downloaderEventArgs.progressPercent,\r\n };\r\n\r\n this.#eventsEngine.emit(AutoDownloaderEvent.DownloadProgressed, eventArgs);\r\n }\r\n\r\n transferResumed(transferId: string): void {\r\n this.emitBasicEvent(transferId, AutoDownloaderEvent.DownloadResumed);\r\n }\r\n\r\n transferAborting(transferId: string): void {\r\n this.emitBasicEvent(transferId, AutoDownloaderEvent.DownloadAborting);\r\n }\r\n\r\n transferPaused(transferId: string) {\r\n this.emitBasicEvent(transferId, AutoDownloaderEvent.DownloadPaused);\r\n }\r\n\r\n transferPausing(transferId: string) {\r\n this.emitBasicEvent(transferId, AutoDownloaderEvent.DownloadPausing);\r\n }\r\n\r\n transferStopped(transferId: string) {\r\n this.emitBasicEvent(transferId, AutoDownloaderEvent.DownloadStopped);\r\n }\r\n\r\n transferStopping(transferId: string) {\r\n this.emitBasicEvent(transferId, AutoDownloaderEvent.DownloadStopping);\r\n }\r\n\r\n private emitBasicEvent(transferId: string, event: AutoDownloaderEvent) {\r\n const eventArgs: AutoDownloadEventArgs = { transferId };\r\n this.#eventsEngine.emit(event, eventArgs);\r\n }\r\n}\r\n\r\nexport default AutoDownloaderState;"]}
1
+ {"version":3,"file":"autoDownloaderState.js","sourceRoot":"","sources":["../../../../src/autoDownloader/state/autoDownloaderState.ts"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,MAAM,2BAA2B,CAAC;AAC5D,OAAO,mBAAmB,MAAM,2BAA2B,CAAC;AAC5D,OAAO,cAAc,MAAM,qCAAqC,CAAC;AAkBjE,MAAM,mBAAmB;IACrB,aAAa,CAAe;IAE5B,+BAA+B,CAAQ;IAEvC,uBAAuB,GAAG,IAAI,GAAG,EAAkD,CAAC;IACpF,iBAAiB,GAAG,IAAI,GAAG,EAA8C,CAAC;IAC1E,gBAAgB,GAAG,IAAI,GAAG,EAAkD,CAAC;IAC7E,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAC;IACvC,mBAAmB,GAAG,IAAI,GAAG,EAAU,CAAC;IAExC,0BAA0B,GAAG,IAAI,GAAG,EAA8D,CAAC;IAEnG,IAAI,8BAA8B;QAC9B,OAAO,IAAI,CAAC,+BAA+B,CAAC;IAChD,CAAC;IAED,IAAI,oBAAoB;QACpB,OAAO,KAAK;aACP,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC;aACrC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,KAAK,cAAc,CAAC,OAAO;eACpD,CAAC,CAAC,UAAU,CAAC,MAAM,KAAK,cAAc,CAAC,OAAO;eAC9C,CAAC,CAAC,UAAU,CAAC,MAAM,KAAK,cAAc,CAAC,QAAQ;eAC/C,CAAC,CAAC,UAAU,CAAC,MAAM,KAAK,cAAc,CAAC,SAAS,CAAC;aACvD,MAAM,GAAG,CAAC,CAAC;IACpB,CAAC;IAED,IAAI,sBAAsB;QACtB,OAAO,IAAI,CAAC,uBAAuB,CAAC;IACxC,CAAC;IAED,IAAI,gBAAgB;QAChB,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,eAAe;QACf,OAAO,IAAI,CAAC,gBAAgB,CAAC;IACjC,CAAC;IAED,IAAI,iBAAiB;QACjB,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACnC,CAAC;IAED,IAAI,kBAAkB;QAClB,OAAO,IAAI,CAAC,mBAAmB,CAAC;IACpC,CAAC;IAED,YAAY,YAA0B;QAClC,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;IACtC,CAAC;IAED,OAAO,CAAC,gBAAgD;QACpD,IAAI,gBAAgB,CAAC,kCAAkC;YACnD,IAAI,CAAC,+BAA+B,GAAG,IAAI,IAAI,CAAC,gBAAgB,CAAC,kCAAkC,CAAC,CAAC;QAEzG,gBAAgB,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAClF,gBAAgB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAEhF,gBAAgB,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;QAC9G,gBAAgB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;QACxG,gBAAgB,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;IAC3G,CAAC;IAED,2BAA2B,CAAC,QAAoE;QAC5F,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAClD,CAAC;IAED,kCAAkC;QAC9B,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,CAAC;IAC5C,CAAC;IAEO,gCAAgC;QACpC,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACpD,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACpF,CAAC;IAEO,mBAAmB;QACvB,MAAM,2BAA2B,GAAwD,IAAI,GAAG,CAC5F,KAAK;aACA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;aACtC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CACrG,CAAC;QAEF,OAAO;YACH,kCAAkC,EAAE,IAAI,CAAC,+BAA+B,EAAE,OAAO,EAAE;YACnF,sBAAsB,EAAE,IAAI,CAAC,uBAAuB;YACpD,gBAAgB,EAAE,2BAA2B;YAC7C,eAAe,EAAE,IAAI,CAAC,gBAAgB;YACtC,iBAAiB,EAAE,IAAI,CAAC,kBAAkB;YAC1C,kBAAkB,EAAE,IAAI,CAAC,mBAAmB;SAC/C,CAAC;IACN,CAAC;IAED,4BAA4B,CAAC,UAAkB;QAC3C,MAAM,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAE/D,IAAI,CAAC,eAAe;YAChB,MAAM,IAAI,mBAAmB,CAAC,gDAAgD,UAAU,gBAAgB,CAAC,CAAC;QAE9G,OAAO,eAAe,CAAC,UAAU,CAAC;IACtC,CAAC;IAED,iBAAiB,CAAC,UAAkB;QAChC,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC;eACtC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC;eACxC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC;eACvC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC;eACrC,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACxD,CAAC;IAED,0BAA0B;QACtB,IAAI,CAAC,+BAA+B,GAAG,IAAI,IAAI,EAAE,CAAC;QAElD,IAAI,CAAC,gCAAgC,EAAE,CAAC;QAExC,MAAM,SAAS,GAAwC,EAAE,IAAI,EAAE,IAAI,CAAC,+BAA+B,EAAE,CAAC;QACtG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,0BAA0B,EAAE,SAAS,CAAC,CAAC;IACvF,CAAC;IAED,iBAAiB,CAAC,iBAAmC,EAAE,UAA8B;QACjF,MAAM,yBAAyB,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAEjG,IAAI,yBAAyB;YACzB,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAEtE,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;IACxD,CAAC;IAED,eAAe,CAAC,QAA0B,EAAE,UAA8B;QACtE,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAEhF,IAAI,CAAC,gCAAgC,EAAE,CAAC;QAExC,MAAM,YAAY,GAAG,UAAU,CAAC,KAAM,CAAC;QAEvC,MAAM,SAAS,GAAiC;YAC5C,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,gBAAgB,EAAE,QAAQ,CAAC,WAAW;YACtC,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,YAAY,EAAE,YAAY,CAAC,kBAAkB;YAC7C,oBAAoB,EAAE,YAAY,CAAC,eAAe;YAClD,qBAAqB,EAAE,YAAY,CAAC,eAAe;YACnD,KAAK,EAAE,YAAY,CAAC,KAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;SACxF,CAAC;QAEF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;IAC5E,CAAC;IAED,sBAAsB,CAAC,QAA0B,EAAE,KAAY,EAAE,MAAc;QAC3E,MAAM,yBAAyB,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAExF,IAAI,yBAAyB;YACzB,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAE7D,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACzD,CAAC;IAED,sBAAsB,CAAC,QAA0B,EAAE,KAAY,EAAE,MAAc;QAC3E,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAEnE,IAAI,CAAC,gCAAgC,EAAE,CAAC;QAExC,MAAM,SAAS,GAAwC;YACnD,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,gBAAgB,EAAE,QAAQ,CAAC,WAAW;YACtC,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,KAAK;YACL,MAAM;SACT,CAAC;QAEF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,EAAE,SAAS,CAAC,CAAC;IACnF,CAAC;IAED,cAAc,CAAC,UAAkB,EAAE,KAAY,EAAE,MAAc;QAC3D,MAAM,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAE/D,IAAI,eAAe,EAAE,CAAC;YAClB,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAC1C,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE,eAAe,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,EAAE,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7H,CAAC;QAED,IAAI,CAAC,gCAAgC,EAAE,CAAC;QAExC,MAAM,SAAS,GAAgC,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAC7E,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;IAC3E,CAAC;IAED,eAAe,CAAC,UAAkB;QAC9B,MAAM,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAE/D,IAAI,eAAe;YACf,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAE9C,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAE7D,IAAI,cAAc;YACd,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAE7C,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAExC,IAAI,CAAC,gCAAgC,EAAE,CAAC;QAExC,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACzE,CAAC;IAED,iBAAiB,CAAC,UAAkB;QAChC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAEzC,IAAI,CAAC,gCAAgC,EAAE,CAAC;QAExC,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;IAC3E,CAAC;IAED,kBAAkB,CAAC,UAAkB,EAAE,mBAAsC;QACzE,MAAM,SAAS,GAAoC;YAC/C,UAAU;YACV,qBAAqB,EAAE,mBAAmB,CAAC,qBAAqB;YAChE,qBAAqB,EAAE,mBAAmB,CAAC,qBAAqB;YAChE,eAAe,EAAE,mBAAmB,CAAC,eAAe;YACpD,+BAA+B,EAAE,mBAAmB,CAAC,6BAA6B;YAClF,kBAAkB,EAAE,mBAAmB,CAAC,eAAe;SAC1D,CAAC;QAEF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;IAC/E,CAAC;IAED,eAAe,CAAC,UAAkB;QAC9B,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACzE,CAAC;IAED,gBAAgB,CAAC,UAAkB;QAC/B,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IAC1E,CAAC;IAED,cAAc,CAAC,UAAkB;QAC7B,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,mBAAmB,CAAC,cAAc,CAAC,CAAC;IACxE,CAAC;IAED,eAAe,CAAC,UAAkB;QAC9B,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACzE,CAAC;IAED,eAAe,CAAC,UAAkB;QAC9B,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACzE,CAAC;IAED,gBAAgB,CAAC,UAAkB;QAC/B,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IAC1E,CAAC;IAED,eAAe,CAAC,UAAkB;QAC9B,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACzE,CAAC;IAED,iBAAiB,CAAC,UAAkB,EAAE,mBAAoD;QACtF,MAAM,SAAS,GAAmC;YAC9C,UAAU;YACV,GAAG,mBAAmB;SACzB,CAAC;QAEF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;IAC7E,CAAC;IAEO,cAAc,CAAC,UAAkB,EAAE,KAA0B;QACjE,MAAM,SAAS,GAA0B,EAAE,UAAU,EAAE,CAAC;QACxD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC9C,CAAC;CACJ;AAED,eAAe,mBAAmB,CAAC","sourcesContent":["import AutoDownloaderEvent from \"../autoDownloaderEvent.js\";\r\nimport AutoDownloaderError from \"../autoDownloaderError.js\";\r\nimport TransferStatus from \"../../utils/types/transferStatus.js\";\r\n\r\nimport type AutoDownloadUnhealthyEventArgs from \"../eventArgs/autoDownloadUnhealthyEventArgs.js\";\r\nimport type HealthMonitorUnhealthyEventArgs from \"../../client/healthMonitor/events/eventArgs/healthMonitorUnhealthyEventArgs.js\";\r\nimport type EventsEngine from \"../../utils/events/eventsEngine.js\";\r\nimport type NewTransfersCheckCompletedEventArgs from \"../eventArgs/newTransfersCheckCompletedEventArgs.js\";\r\nimport type AutoDownloadFailedEventArgs from \"../eventArgs/autoDownloadFailedEventArgs.js\";\r\nimport type TransferDownloader from \"../../client/downloader/transferDownloader.js\";\r\nimport type AutoDownloadStartedEventArgs from \"../eventArgs/autoDownloadStartedEventArgs.js\";\r\nimport type DownloadEventArgs from \"../../downloader/eventArgs/downloadEventArgs.js\";\r\nimport type AutoDownloadEventArgs from \"../eventArgs/autoDownloadEventArgs.js\";\r\nimport type AutoDownloadProgressedEventArgs from \"../eventArgs/autoDownloadProgressedEventArgs.js\";\r\nimport type AutoDownloaderRecoverableState from \"./autoDownloaderRecoverableState.js\";\r\nimport type AutoDownloaderStateRunningTransfer from \"./autoDownloaderStateRunningTransfer.js\";\r\nimport type AutoDownloaderStateRecoverableTransfer from \"./autoDownloaderStateRecoverableTransfer.js\";\r\nimport type NewInboxTransfer from \"../newInboxTransfersRetriever/newInboxTransfer.js\";\r\nimport type AutoDownloadStartingFailedEventArgs from \"../eventArgs/autoDownloadStartingFailedEventArgs.js\";\r\n\r\nclass AutoDownloaderState {\r\n #eventsEngine: EventsEngine;\r\n\r\n #lastCompletedNewTransfersCheck?: Date;\r\n\r\n #toBeRecoveredTransfers = new Map<string, AutoDownloaderStateRecoverableTransfer>();\r\n #runningTransfers = new Map<string, AutoDownloaderStateRunningTransfer>();\r\n #failedTransfers = new Map<string, AutoDownloaderStateRecoverableTransfer>();\r\n #canceledTransfers = new Set<string>();\r\n #completedTransfers = new Set<string>();\r\n\r\n #recoverableStateObservers = new Set<(recoverableState: AutoDownloaderRecoverableState) => void>();\r\n\r\n get lastCompletedNewTransfersCheck(): Date | undefined {\r\n return this.#lastCompletedNewTransfersCheck;\r\n }\r\n\r\n get isAnyTransferRunning(): boolean {\r\n return Array\r\n .from(this.#runningTransfers.values())\r\n .filter(t => t.downloader.status === TransferStatus.Running\r\n || t.downloader.status === TransferStatus.Pausing\r\n || t.downloader.status === TransferStatus.Aborting\r\n || t.downloader.status === TransferStatus.Canceling)\r\n .length > 0;\r\n }\r\n\r\n get toBeRecoveredTransfers(): ReadonlyMap<string, AutoDownloaderStateRecoverableTransfer> {\r\n return this.#toBeRecoveredTransfers;\r\n }\r\n\r\n get runningTransfers(): ReadonlySet<string> {\r\n return new Set(this.#runningTransfers.keys());\r\n }\r\n\r\n get failedTransfers(): ReadonlyMap<string, AutoDownloaderStateRecoverableTransfer> {\r\n return this.#failedTransfers;\r\n }\r\n\r\n get canceledTransfers(): ReadonlySet<string> {\r\n return this.#canceledTransfers;\r\n }\r\n\r\n get completedTransfers(): ReadonlySet<string> {\r\n return this.#completedTransfers;\r\n }\r\n\r\n constructor(eventsEngine: EventsEngine) {\r\n this.#eventsEngine = eventsEngine;\r\n }\r\n\r\n recover(recoverableState: AutoDownloaderRecoverableState) {\r\n if (recoverableState.lastCompletedNewTransfersCheckDate)\r\n this.#lastCompletedNewTransfersCheck = new Date(recoverableState.lastCompletedNewTransfersCheckDate);\r\n\r\n recoverableState.completedTransfers.forEach(t => this.#completedTransfers.add(t));\r\n recoverableState.canceledTransfers.forEach(t => this.#canceledTransfers.add(t));\r\n\r\n recoverableState.toBeRecoveredTransfers.forEach((value, key) => this.#toBeRecoveredTransfers.set(key, value));\r\n recoverableState.runningTransfers.forEach((value, key) => this.#toBeRecoveredTransfers.set(key, value));\r\n recoverableState.failedTransfers.forEach((value, key) => this.#toBeRecoveredTransfers.set(key, value));\r\n }\r\n\r\n addRecoverableStateObserver(observer: (recoverableState: AutoDownloaderRecoverableState) => void) {\r\n this.#recoverableStateObservers.add(observer);\r\n }\r\n\r\n removeAllRecoverableStateObservers() {\r\n this.#recoverableStateObservers.clear();\r\n }\r\n\r\n private notifyRecoverableStateHasChanged() {\r\n const recoverableState = this.getRecoverableState();\r\n this.#recoverableStateObservers.forEach(observer => observer(recoverableState));\r\n }\r\n\r\n private getRecoverableState(): AutoDownloaderRecoverableState {\r\n const recoverableRunningTransfers: Map<string, AutoDownloaderStateRecoverableTransfer> = new Map(\r\n Array\r\n .from(this.#runningTransfers.entries())\r\n .map(entry => [entry[0], { downloadId: entry[1].downloader.downloadId, data: entry[1].data }]),\r\n );\r\n\r\n return {\r\n lastCompletedNewTransfersCheckDate: this.#lastCompletedNewTransfersCheck?.getTime(),\r\n toBeRecoveredTransfers: this.#toBeRecoveredTransfers,\r\n runningTransfers: recoverableRunningTransfers,\r\n failedTransfers: this.#failedTransfers,\r\n canceledTransfers: this.#canceledTransfers,\r\n completedTransfers: this.#completedTransfers,\r\n };\r\n }\r\n\r\n getRunningTransferDownloader(transferId: string): TransferDownloader {\r\n const runningTransfer = this.#runningTransfers.get(transferId);\r\n\r\n if (!runningTransfer)\r\n throw new AutoDownloaderError(`Transfer downloader for transfer having id = ${transferId} doesn't exist`);\r\n\r\n return runningTransfer.downloader;\r\n }\r\n\r\n isTransferHandled(transferId: string): boolean {\r\n return this.#runningTransfers.has(transferId)\r\n || this.#completedTransfers.has(transferId)\r\n || this.#canceledTransfers.has(transferId)\r\n || this.#failedTransfers.has(transferId)\r\n || this.#toBeRecoveredTransfers.has(transferId);\r\n }\r\n\r\n newTransfersCheckCompleted() {\r\n this.#lastCompletedNewTransfersCheck = new Date();\r\n\r\n this.notifyRecoverableStateHasChanged();\r\n\r\n const eventArgs: NewTransfersCheckCompletedEventArgs = { date: this.#lastCompletedNewTransfersCheck };\r\n this.#eventsEngine.emit(AutoDownloaderEvent.NewTransfersCheckCompleted, eventArgs);\r\n }\r\n\r\n transferRecovered(recoveredTransfer: NewInboxTransfer, downloader: TransferDownloader) {\r\n const recoveredTransferMapEntry = this.#toBeRecoveredTransfers.get(recoveredTransfer.transferId);\r\n\r\n if (recoveredTransferMapEntry)\r\n this.#toBeRecoveredTransfers.delete(recoveredTransfer.transferId);\r\n\r\n this.transferStarted(recoveredTransfer, downloader);\r\n }\r\n\r\n transferStarted(transfer: NewInboxTransfer, downloader: TransferDownloader) {\r\n this.#runningTransfers.set(transfer.transferId, { downloader, data: transfer });\r\n\r\n this.notifyRecoverableStateHasChanged();\r\n\r\n const initialState = downloader.state!;\r\n\r\n const eventArgs: AutoDownloadStartedEventArgs = {\r\n transferId: transfer.transferId,\r\n filesCount: transfer.filesCount,\r\n totalSizeInBytes: transfer.sizeInBytes,\r\n message: transfer.message,\r\n subject: transfer.subject,\r\n downloadPath: initialState.downloadBaseFolder,\r\n progressInPercentage: initialState.progressPercent,\r\n transferredBytesCount: initialState.downloadedBytes,\r\n files: initialState.files!.map(f => ({ name: f.name, downloadPath: f.downloadPath })),\r\n };\r\n\r\n this.#eventsEngine.emit(AutoDownloaderEvent.DownloadStarted, eventArgs);\r\n }\r\n\r\n transferRecoveryFailed(transfer: NewInboxTransfer, error: Error, reason: string) {\r\n const recoveredTransferMapEntry = this.#toBeRecoveredTransfers.get(transfer.transferId);\r\n\r\n if (recoveredTransferMapEntry)\r\n this.#toBeRecoveredTransfers.delete(transfer.transferId);\r\n\r\n this.transferStartingFailed(transfer, error, reason);\r\n }\r\n\r\n transferStartingFailed(transfer: NewInboxTransfer, error: Error, reason: string) {\r\n this.#failedTransfers.set(transfer.transferId, { data: transfer });\r\n\r\n this.notifyRecoverableStateHasChanged();\r\n\r\n const eventArgs: AutoDownloadStartingFailedEventArgs = {\r\n transferId: transfer.transferId,\r\n filesCount: transfer.filesCount,\r\n totalSizeInBytes: transfer.sizeInBytes,\r\n message: transfer.message,\r\n subject: transfer.subject,\r\n error,\r\n reason,\r\n };\r\n\r\n this.#eventsEngine.emit(AutoDownloaderEvent.DownloadStartingFailed, eventArgs);\r\n }\r\n\r\n transferFailed(transferId: string, error: Error, reason: string) {\r\n const runningTransfer = this.#runningTransfers.get(transferId);\r\n\r\n if (runningTransfer) {\r\n this.#runningTransfers.delete(transferId);\r\n this.#failedTransfers.set(transferId, { downloadId: runningTransfer.downloader.downloadId, data: runningTransfer.data });\r\n }\r\n\r\n this.notifyRecoverableStateHasChanged();\r\n\r\n const eventArgs: AutoDownloadFailedEventArgs = { transferId, error, reason };\r\n this.#eventsEngine.emit(AutoDownloaderEvent.DownloadFailed, eventArgs);\r\n }\r\n\r\n transferAborted(transferId: string): void {\r\n const runningTransfer = this.#runningTransfers.get(transferId);\r\n\r\n if (runningTransfer)\r\n this.#runningTransfers.delete(transferId);\r\n\r\n const failedTransfer = this.#failedTransfers.get(transferId);\r\n\r\n if (failedTransfer)\r\n this.#failedTransfers.delete(transferId);\r\n\r\n this.#canceledTransfers.add(transferId);\r\n\r\n this.notifyRecoverableStateHasChanged();\r\n\r\n this.emitBasicEvent(transferId, AutoDownloaderEvent.DownloadAborted);\r\n }\r\n\r\n transferCompleted(transferId: string) {\r\n this.#runningTransfers.delete(transferId);\r\n this.#completedTransfers.add(transferId);\r\n\r\n this.notifyRecoverableStateHasChanged();\r\n\r\n this.emitBasicEvent(transferId, AutoDownloaderEvent.DownloadCompleted);\r\n }\r\n\r\n transferProgressed(transferId: string, downloaderEventArgs: DownloadEventArgs): void {\r\n const eventArgs: AutoDownloadProgressedEventArgs = {\r\n transferId,\r\n bytesPerSecondAverage: downloaderEventArgs.bytesPerSecondAverage,\r\n bytesPerSecondCurrent: downloaderEventArgs.bytesPerSecondCurrent,\r\n downloadedBytes: downloaderEventArgs.downloadedBytes,\r\n estimatedRemainingTimeInSeconds: downloaderEventArgs.estimatedRemainingTimeSeconds,\r\n progressPercentage: downloaderEventArgs.progressPercent,\r\n };\r\n\r\n this.#eventsEngine.emit(AutoDownloaderEvent.DownloadProgressed, eventArgs);\r\n }\r\n\r\n transferResumed(transferId: string): void {\r\n this.emitBasicEvent(transferId, AutoDownloaderEvent.DownloadResumed);\r\n }\r\n\r\n transferAborting(transferId: string): void {\r\n this.emitBasicEvent(transferId, AutoDownloaderEvent.DownloadAborting);\r\n }\r\n\r\n transferPaused(transferId: string) {\r\n this.emitBasicEvent(transferId, AutoDownloaderEvent.DownloadPaused);\r\n }\r\n\r\n transferPausing(transferId: string) {\r\n this.emitBasicEvent(transferId, AutoDownloaderEvent.DownloadPausing);\r\n }\r\n\r\n transferStopped(transferId: string) {\r\n this.emitBasicEvent(transferId, AutoDownloaderEvent.DownloadStopped);\r\n }\r\n\r\n transferStopping(transferId: string) {\r\n this.emitBasicEvent(transferId, AutoDownloaderEvent.DownloadStopping);\r\n }\r\n\r\n transferHealthy(transferId: string): void {\r\n this.emitBasicEvent(transferId, AutoDownloaderEvent.DownloadHealthy);\r\n }\r\n\r\n transferUnhealthy(transferId: string, downloaderEventArgs: HealthMonitorUnhealthyEventArgs): void {\r\n const eventArgs: AutoDownloadUnhealthyEventArgs = {\r\n transferId,\r\n ...downloaderEventArgs,\r\n };\r\n\r\n this.#eventsEngine.emit(AutoDownloaderEvent.DownloadUnealthy, eventArgs);\r\n }\r\n\r\n private emitBasicEvent(transferId: string, event: AutoDownloaderEvent) {\r\n const eventArgs: AutoDownloadEventArgs = { transferId };\r\n this.#eventsEngine.emit(event, eventArgs);\r\n }\r\n}\r\n\r\nexport default AutoDownloaderState;"]}
@@ -1 +1 @@
1
- {"version":3,"file":"autoDownloaderTransferHandlerBase.d.ts","sourceRoot":"","sources":["../../../../src/autoDownloader/transferHandler/autoDownloaderTransferHandlerBase.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,gCAAgC,CAAC;AACzD,OAAO,KAAK,kBAAkB,MAAM,+CAA+C,CAAC;AACpF,OAAO,KAAK,mBAAmB,MAAM,0DAA0D,CAAC;AAChG,OAAO,KAAK,mBAAmB,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,yBAAyB,MAAM,iCAAiC,CAAC;AAC7E,OAAO,KAAK,YAAY,MAAM,uCAAuC,CAAC;AACtE,OAAO,KAAK,gBAAgB,MAAM,mDAAmD,CAAC;AAEtF,uBAAe,iCAAiC;;IAI5C,SAAS,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACrC,SAAS,CAAC,QAAQ,EAAE,gBAAgB,CAAC;gBAIzB,QAAQ,EAAE,gBAAgB,EAAE,KAAK,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,MAAM,EAAE,MAAM;IAQxI,IAAI,UAAU,IAAI,MAAM,CAEvB;IAEK,aAAa,CAAC,mBAAmB,EAAE,mBAAmB;IAwB5D,SAAS,CAAC,QAAQ,CAAC,2BAA2B,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;IACrG,SAAS,CAAC,QAAQ,CAAC,sBAAsB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAEzG,OAAO,CAAC,iBAAiB;IAkCzB,OAAO,CAAC,gBAAgB;CAM3B;AAED,eAAe,iCAAiC,CAAC"}
1
+ {"version":3,"file":"autoDownloaderTransferHandlerBase.d.ts","sourceRoot":"","sources":["../../../../src/autoDownloader/transferHandler/autoDownloaderTransferHandlerBase.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,MAAM,gCAAgC,CAAC;AACzD,OAAO,KAAK,kBAAkB,MAAM,+CAA+C,CAAC;AACpF,OAAO,KAAK,mBAAmB,MAAM,0DAA0D,CAAC;AAChG,OAAO,KAAK,mBAAmB,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,yBAAyB,MAAM,iCAAiC,CAAC;AAC7E,OAAO,KAAK,YAAY,MAAM,uCAAuC,CAAC;AACtE,OAAO,KAAK,gBAAgB,MAAM,mDAAmD,CAAC;AAEtF,uBAAe,iCAAiC;;IAI5C,SAAS,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACrC,SAAS,CAAC,QAAQ,EAAE,gBAAgB,CAAC;gBAIzB,QAAQ,EAAE,gBAAgB,EAAE,KAAK,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,MAAM,EAAE,MAAM;IAQxI,IAAI,UAAU,IAAI,MAAM,CAEvB;IAEK,aAAa,CAAC,mBAAmB,EAAE,mBAAmB;IAwB5D,SAAS,CAAC,QAAQ,CAAC,2BAA2B,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;IACrG,SAAS,CAAC,QAAQ,CAAC,sBAAsB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAEzG,OAAO,CAAC,iBAAiB;IAqCzB,OAAO,CAAC,gBAAgB;CAM3B;AAED,eAAe,iCAAiC,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import TransferDownloadEvent from "../../downloader/dtos/downloadEvent.js";
2
2
  import AutoDownloaderError from "../autoDownloaderError.js";
3
3
  import TransferStatus from "../../utils/types/transferStatus.js";
4
+ import TransferHealthMonitorEvent from "../../client/healthMonitor/events/transferHealthMonitorEvent.js";
4
5
  class AutoDownloaderTransferHandlerBase {
5
6
  #transferDownloaderFactory;
6
7
  #logger;
@@ -36,6 +37,8 @@ class AutoDownloaderTransferHandlerBase {
36
37
  }
37
38
  }
38
39
  addEventListeners(downloader) {
40
+ downloader.healthMonitor.addEventListener(TransferHealthMonitorEvent.Healthy, () => this.state.transferHealthy(this.transfer.transferId));
41
+ downloader.healthMonitor.addEventListener(TransferHealthMonitorEvent.Unhealthy, eventArgs => this.state.transferUnhealthy(this.transfer.transferId, eventArgs));
39
42
  downloader.addEventListener(TransferDownloadEvent.DownloadCompleted, eventArgs => {
40
43
  if (eventArgs.status === TransferStatus.Completed)
41
44
  this.state.transferCompleted(this.transfer.transferId);
@@ -1 +1 @@
1
- {"version":3,"file":"autoDownloaderTransferHandlerBase.js","sourceRoot":"","sources":["../../../../src/autoDownloader/transferHandler/autoDownloaderTransferHandlerBase.ts"],"names":[],"mappings":"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","sourcesContent":["import TransferDownloadEvent from \"../../downloader/dtos/downloadEvent.js\";\r\nimport AutoDownloaderError from \"../autoDownloaderError.js\";\r\nimport TransferStatus from \"../../utils/types/transferStatus.js\";\r\n\r\nimport type Logger from \"../../client/loggers/logger.js\";\r\nimport type TransferDownloader from \"../../client/downloader/transferDownloader.js\";\r\nimport type ConcurrencyReleaser from \"../../utils/concurrencyController/concurrencyReleaser.js\";\r\nimport type AutoDownloaderState from \"../state/autoDownloaderState.js\";\r\nimport type TransferDownloaderFactory from \"../transferDownloaderFactory.js\";\r\nimport type DownloadInfo from \"../../downloader/dtos/downloadInfo.js\";\r\nimport type NewInboxTransfer from \"../newInboxTransfersRetriever/newInboxTransfer.js\";\r\n\r\nabstract class AutoDownloaderTransferHandlerBase {\r\n #transferDownloaderFactory: TransferDownloaderFactory;\r\n #logger: Logger;\r\n\r\n protected state: AutoDownloaderState;\r\n protected transfer: NewInboxTransfer;\r\n\r\n #lastError: Error | undefined;\r\n\r\n constructor(transfer: NewInboxTransfer, state: AutoDownloaderState, transferDownloaderFactory: TransferDownloaderFactory, logger: Logger) {\r\n this.#transferDownloaderFactory = transferDownloaderFactory;\r\n this.#logger = logger;\r\n\r\n this.state = state;\r\n this.transfer = transfer;\r\n }\r\n\r\n get transferId(): string {\r\n return this.transfer.transferId;\r\n }\r\n\r\n async startTransfer(concurrencyReleaser: ConcurrencyReleaser) {\r\n try {\r\n const downloader = this.#transferDownloaderFactory.create();\r\n\r\n this.addEventListeners(downloader);\r\n\r\n const downloadInfo = await this.startDownloadAndUpdateState(downloader);\r\n\r\n await downloadInfo.completion;\r\n }\r\n catch (error) {\r\n const reason = `AutoDownloader transfer handler failed (transfer id = ${this.transfer.transferId})`;\r\n this.#logger.logError(error as Error, reason);\r\n\r\n if (this.state.runningTransfers.has(this.transfer.transferId))\r\n this.state.transferFailed(this.transfer.transferId, error as Error, reason);\r\n else\r\n this.transferStartingFailed(this.transfer, error as Error, reason);\r\n }\r\n finally {\r\n concurrencyReleaser();\r\n }\r\n }\r\n\r\n protected abstract startDownloadAndUpdateState(downloader: TransferDownloader): Promise<DownloadInfo>;\r\n protected abstract transferStartingFailed(transfer: NewInboxTransfer, error: Error, reason: string): void;\r\n\r\n private addEventListeners(downloader: TransferDownloader) {\r\n downloader.addEventListener(TransferDownloadEvent.DownloadCompleted, eventArgs => {\r\n if (eventArgs.status === TransferStatus.Completed)\r\n this.state.transferCompleted(this.transfer.transferId);\r\n else {\r\n const error = this.getFailureReason(downloader);\r\n this.state.transferFailed(this.transfer.transferId, error, error.message);\r\n }\r\n });\r\n\r\n downloader.addEventListener(TransferDownloadEvent.Pausing, eventArgs => {\r\n if (eventArgs.interruptPendingChunks)\r\n this.state.transferStopping(this.transfer.transferId);\r\n else\r\n this.state.transferPausing(this.transfer.transferId);\r\n });\r\n\r\n downloader.addEventListener(TransferDownloadEvent.Paused, eventArgs => {\r\n if (eventArgs.interruptPendingChunks)\r\n this.state.transferStopped(this.transfer.transferId);\r\n else\r\n this.state.transferPaused(this.transfer.transferId);\r\n });\r\n\r\n downloader.addEventListener(TransferDownloadEvent.FileDownloadFailed, eventArgs => (this.#lastError = eventArgs.reason));\r\n downloader.addEventListener(TransferDownloadEvent.ChunkDownloadFailed, eventArgs => (this.#lastError = eventArgs.reason));\r\n\r\n downloader.addEventListener(TransferDownloadEvent.DownloadProgressed, eventArgs => this.state.transferProgressed(this.transfer.transferId, eventArgs));\r\n\r\n downloader.addEventListener(TransferDownloadEvent.Aborting, () => this.state.transferAborting(this.transfer.transferId));\r\n downloader.addEventListener(TransferDownloadEvent.Aborted, () => this.state.transferAborted(this.transfer.transferId));\r\n downloader.addEventListener(TransferDownloadEvent.Resumed, () => this.state.transferResumed(this.transfer.transferId));\r\n }\r\n\r\n private getFailureReason(downloader: TransferDownloader): Error {\r\n if (this.#lastError)\r\n return this.#lastError;\r\n\r\n return new AutoDownloaderError(`Download finished in state: ${downloader.status === null ? `NULL` : TransferStatus[downloader.status]}`);\r\n }\r\n}\r\n\r\nexport default AutoDownloaderTransferHandlerBase;"]}
1
+ {"version":3,"file":"autoDownloaderTransferHandlerBase.js","sourceRoot":"","sources":["../../../../src/autoDownloader/transferHandler/autoDownloaderTransferHandlerBase.ts"],"names":[],"mappings":"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","sourcesContent":["import TransferDownloadEvent from \"../../downloader/dtos/downloadEvent.js\";\r\nimport AutoDownloaderError from \"../autoDownloaderError.js\";\r\nimport TransferStatus from \"../../utils/types/transferStatus.js\";\r\nimport TransferHealthMonitorEvent from \"../../client/healthMonitor/events/transferHealthMonitorEvent.js\";\r\n\r\nimport type Logger from \"../../client/loggers/logger.js\";\r\nimport type TransferDownloader from \"../../client/downloader/transferDownloader.js\";\r\nimport type ConcurrencyReleaser from \"../../utils/concurrencyController/concurrencyReleaser.js\";\r\nimport type AutoDownloaderState from \"../state/autoDownloaderState.js\";\r\nimport type TransferDownloaderFactory from \"../transferDownloaderFactory.js\";\r\nimport type DownloadInfo from \"../../downloader/dtos/downloadInfo.js\";\r\nimport type NewInboxTransfer from \"../newInboxTransfersRetriever/newInboxTransfer.js\";\r\n\r\nabstract class AutoDownloaderTransferHandlerBase {\r\n #transferDownloaderFactory: TransferDownloaderFactory;\r\n #logger: Logger;\r\n\r\n protected state: AutoDownloaderState;\r\n protected transfer: NewInboxTransfer;\r\n\r\n #lastError: Error | undefined;\r\n\r\n constructor(transfer: NewInboxTransfer, state: AutoDownloaderState, transferDownloaderFactory: TransferDownloaderFactory, logger: Logger) {\r\n this.#transferDownloaderFactory = transferDownloaderFactory;\r\n this.#logger = logger;\r\n\r\n this.state = state;\r\n this.transfer = transfer;\r\n }\r\n\r\n get transferId(): string {\r\n return this.transfer.transferId;\r\n }\r\n\r\n async startTransfer(concurrencyReleaser: ConcurrencyReleaser) {\r\n try {\r\n const downloader = this.#transferDownloaderFactory.create();\r\n\r\n this.addEventListeners(downloader);\r\n\r\n const downloadInfo = await this.startDownloadAndUpdateState(downloader);\r\n\r\n await downloadInfo.completion;\r\n }\r\n catch (error) {\r\n const reason = `AutoDownloader transfer handler failed (transfer id = ${this.transfer.transferId})`;\r\n this.#logger.logError(error as Error, reason);\r\n\r\n if (this.state.runningTransfers.has(this.transfer.transferId))\r\n this.state.transferFailed(this.transfer.transferId, error as Error, reason);\r\n else\r\n this.transferStartingFailed(this.transfer, error as Error, reason);\r\n }\r\n finally {\r\n concurrencyReleaser();\r\n }\r\n }\r\n\r\n protected abstract startDownloadAndUpdateState(downloader: TransferDownloader): Promise<DownloadInfo>;\r\n protected abstract transferStartingFailed(transfer: NewInboxTransfer, error: Error, reason: string): void;\r\n\r\n private addEventListeners(downloader: TransferDownloader) {\r\n downloader.healthMonitor.addEventListener(TransferHealthMonitorEvent.Healthy, () => this.state.transferHealthy(this.transfer.transferId));\r\n downloader.healthMonitor.addEventListener(TransferHealthMonitorEvent.Unhealthy, eventArgs => this.state.transferUnhealthy(this.transfer.transferId, eventArgs));\r\n\r\n downloader.addEventListener(TransferDownloadEvent.DownloadCompleted, eventArgs => {\r\n if (eventArgs.status === TransferStatus.Completed)\r\n this.state.transferCompleted(this.transfer.transferId);\r\n else {\r\n const error = this.getFailureReason(downloader);\r\n this.state.transferFailed(this.transfer.transferId, error, error.message);\r\n }\r\n });\r\n\r\n downloader.addEventListener(TransferDownloadEvent.Pausing, eventArgs => {\r\n if (eventArgs.interruptPendingChunks)\r\n this.state.transferStopping(this.transfer.transferId);\r\n else\r\n this.state.transferPausing(this.transfer.transferId);\r\n });\r\n\r\n downloader.addEventListener(TransferDownloadEvent.Paused, eventArgs => {\r\n if (eventArgs.interruptPendingChunks)\r\n this.state.transferStopped(this.transfer.transferId);\r\n else\r\n this.state.transferPaused(this.transfer.transferId);\r\n });\r\n\r\n downloader.addEventListener(TransferDownloadEvent.FileDownloadFailed, eventArgs => (this.#lastError = eventArgs.reason));\r\n downloader.addEventListener(TransferDownloadEvent.ChunkDownloadFailed, eventArgs => (this.#lastError = eventArgs.reason));\r\n\r\n downloader.addEventListener(TransferDownloadEvent.DownloadProgressed, eventArgs => this.state.transferProgressed(this.transfer.transferId, eventArgs));\r\n\r\n downloader.addEventListener(TransferDownloadEvent.Aborting, () => this.state.transferAborting(this.transfer.transferId));\r\n downloader.addEventListener(TransferDownloadEvent.Aborted, () => this.state.transferAborted(this.transfer.transferId));\r\n downloader.addEventListener(TransferDownloadEvent.Resumed, () => this.state.transferResumed(this.transfer.transferId));\r\n }\r\n\r\n private getFailureReason(downloader: TransferDownloader): Error {\r\n if (this.#lastError)\r\n return this.#lastError;\r\n\r\n return new AutoDownloaderError(`Download finished in state: ${downloader.status === null ? `NULL` : TransferStatus[downloader.status]}`);\r\n }\r\n}\r\n\r\nexport default AutoDownloaderTransferHandlerBase;"]}
@@ -12,9 +12,10 @@ import type FileSystemService from "../../utils/fileSystem/fileSystemService.js"
12
12
  import type DownloadLogger from "../../downloader/downloadLogger.js";
13
13
  import type DownloadEventArgs from "../../downloader/eventArgs/downloadEventArgs.js";
14
14
  import type CryptographyProvider from "../../utils/crypto/cryptographyProvider.js";
15
+ import type TransferDownloaderHealthMonitor from "../healthMonitor/transferDownloaderHealthMonitor.js";
15
16
  export default class DownloaderCore {
16
17
  #private;
17
- constructor(options: DownloadOptions, logger: DownloadLogger, apiClient: ApiClient, chunkProviderFactory: ChunkStreamProviderFactory<string>, fileserverClientFactory: FileServerClientFactory, fileSystem: FileSystemService, eventsEngine: EventsEngine, cryptography: CryptographyProvider);
18
+ constructor(options: DownloadOptions, logger: DownloadLogger, apiClient: ApiClient, chunkProviderFactory: ChunkStreamProviderFactory<string>, fileserverClientFactory: FileServerClientFactory, fileSystem: FileSystemService, eventsEngine: EventsEngine, cryptography: CryptographyProvider, healthMonitor: TransferDownloaderHealthMonitor);
18
19
  get status(): TransferStatus | null;
19
20
  get state(): DownloadEventArgs | null;
20
21
  get downloadId(): string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"downloaderCore.d.ts","sourceRoot":"","sources":["../../../../src/client/downloader/downloaderCore.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,eAAe,MAAM,qCAAqC,CAAC;AACvE,OAAO,KAAK,SAAS,MAAM,8BAA8B,CAAC;AAC1D,OAAO,KAAK,iBAAiB,MAAM,6CAA6C,CAAC;AACjF,OAAO,cAAc,MAAM,qCAAqC,CAAC;AAEjE,OAAO,KAAK,YAAY,MAAM,uCAAuC,CAAC;AAGtE,OAAO,KAAK,eAAe,MAAM,0CAA0C,CAAC;AAC5E,OAAO,KAAK,oBAAoB,MAAM,+CAA+C,CAAC;AAEtF,OAAO,KAAK,0BAA0B,MAAM,sDAAsD,CAAC;AACnG,OAAO,KAAK,uBAAuB,MAAM,4CAA4C,CAAC;AACtF,OAAO,KAAK,YAAY,MAAM,oCAAoC,CAAC;AACnE,OAAO,KAAK,iBAAiB,MAAM,6CAA6C,CAAC;AACjF,OAAO,KAAK,cAAc,MAAM,oCAAoC,CAAC;AACrE,OAAO,KAAK,iBAAiB,MAAM,iDAAiD,CAAC;AAGrF,OAAO,KAAK,oBAAoB,MAAM,4CAA4C,CAAC;AAEnF,MAAM,CAAC,OAAO,OAAO,cAAc;;gBAiBnB,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,oBAAoB,EAAE,0BAA0B,CAAC,MAAM,CAAC,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,UAAU,EAAE,iBAAiB,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,oBAAoB;IAW7R,IAAI,MAAM,IAAI,cAAc,GAAG,IAAI,CAKlC;IAED,IAAI,KAAK,IAAI,iBAAiB,GAAG,IAAI,CAKpC;IAED,IAAI,UAAU,IAAI,MAAM,GAAG,SAAS,CAEnC;IAEK,KAAK,CAAC,OAAO,EAAE;QAAE,sBAAsB,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAc3E,MAAM,IAAI,OAAO;IAKjB,KAAK,IAAI,OAAO;IAKhB,mBAAmB,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAI/C,sBAAsB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,YAAY,CAAC;IAYvE,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,YAAY,CAAC;IAYjE,qBAAqB,CAAC,OAAO,EAAE,oBAAoB;IAcnD,uBAAuB;IAsBvB,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAqC3E,OAAO,CAAC,yCAAyC;IAU3C,eAAe,CAAC,UAAU,GAAE,MAAM,GAAG,IAAW;CA8MzD"}
1
+ {"version":3,"file":"downloaderCore.d.ts","sourceRoot":"","sources":["../../../../src/client/downloader/downloaderCore.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,eAAe,MAAM,qCAAqC,CAAC;AACvE,OAAO,KAAK,SAAS,MAAM,8BAA8B,CAAC;AAC1D,OAAO,KAAK,iBAAiB,MAAM,6CAA6C,CAAC;AACjF,OAAO,cAAc,MAAM,qCAAqC,CAAC;AAEjE,OAAO,KAAK,YAAY,MAAM,uCAAuC,CAAC;AAGtE,OAAO,KAAK,eAAe,MAAM,0CAA0C,CAAC;AAC5E,OAAO,KAAK,oBAAoB,MAAM,+CAA+C,CAAC;AAEtF,OAAO,KAAK,0BAA0B,MAAM,sDAAsD,CAAC;AACnG,OAAO,KAAK,uBAAuB,MAAM,4CAA4C,CAAC;AACtF,OAAO,KAAK,YAAY,MAAM,oCAAoC,CAAC;AACnE,OAAO,KAAK,iBAAiB,MAAM,6CAA6C,CAAC;AACjF,OAAO,KAAK,cAAc,MAAM,oCAAoC,CAAC;AACrE,OAAO,KAAK,iBAAiB,MAAM,iDAAiD,CAAC;AAGrF,OAAO,KAAK,oBAAoB,MAAM,4CAA4C,CAAC;AACnF,OAAO,KAAK,+BAA+B,MAAM,qDAAqD,CAAC;AAEvG,MAAM,CAAC,OAAO,OAAO,cAAc;;gBAkBnB,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,oBAAoB,EAAE,0BAA0B,CAAC,MAAM,CAAC,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,UAAU,EAAE,iBAAiB,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,aAAa,EAAE,+BAA+B;IAY7U,IAAI,MAAM,IAAI,cAAc,GAAG,IAAI,CAKlC;IAED,IAAI,KAAK,IAAI,iBAAiB,GAAG,IAAI,CAKpC;IAED,IAAI,UAAU,IAAI,MAAM,GAAG,SAAS,CAEnC;IAEK,KAAK,CAAC,OAAO,EAAE;QAAE,sBAAsB,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAc3E,MAAM,IAAI,OAAO;IAKjB,KAAK,IAAI,OAAO;IAKhB,mBAAmB,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAI/C,sBAAsB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,YAAY,CAAC;IAYvE,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,YAAY,CAAC;IAYjE,qBAAqB,CAAC,OAAO,EAAE,oBAAoB;IAcnD,uBAAuB;IAsBvB,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAqC3E,OAAO,CAAC,yCAAyC;IAU3C,eAAe,CAAC,UAAU,GAAE,MAAM,GAAG,IAAW;CAqNzD"}
@@ -20,13 +20,14 @@ export default class DownloaderCore {
20
20
  #eventsEngine;
21
21
  #logger;
22
22
  #cryptography;
23
+ #healthMonitor;
23
24
  #downloadId;
24
25
  #transferId;
25
26
  #trackId;
26
27
  #filesDownloader = null;
27
28
  #downloadTracker = null;
28
29
  #downloadRegistrationMode = DownloadRegistrationMode.Transfer;
29
- constructor(options, logger, apiClient, chunkProviderFactory, fileserverClientFactory, fileSystem, eventsEngine, cryptography) {
30
+ constructor(options, logger, apiClient, chunkProviderFactory, fileserverClientFactory, fileSystem, eventsEngine, cryptography, healthMonitor) {
30
31
  this.#options = options;
31
32
  this.#logger = logger;
32
33
  this.#apiClient = apiClient;
@@ -35,6 +36,7 @@ export default class DownloaderCore {
35
36
  this.#fileSystem = fileSystem;
36
37
  this.#eventsEngine = eventsEngine;
37
38
  this.#cryptography = cryptography;
39
+ this.#healthMonitor = healthMonitor;
38
40
  }
39
41
  get status() {
40
42
  if (this.#filesDownloader === null)
@@ -213,7 +215,11 @@ export default class DownloaderCore {
213
215
  await this.#downloadTracker.start(downloadFiles);
214
216
  }
215
217
  const initialState = this.#filesDownloader.getCurrentState(false);
218
+ this.#healthMonitor.start();
216
219
  const completion = this.#filesDownloader.start();
220
+ completion.finally(() => {
221
+ this.#healthMonitor.stop();
222
+ });
217
223
  return { downloadId: this.#downloadId, transferId: this.#transferId, completion, initialState };
218
224
  }
219
225
  async #getEffectiveTransfer(command, fileslimit) {