filemail-sdk 9.3.4 → 9.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +10 -10
- package/dist/src/autoDownloader/autoDownloader.js.map +1 -1
- package/dist/src/autoDownloader/autoDownloaderDestroyer.js.map +1 -1
- package/dist/src/autoDownloader/autoDownloaderError.js.map +1 -1
- package/dist/src/autoDownloader/autoDownloaderEvent.js.map +1 -1
- package/dist/src/autoDownloader/autoDownloaderOptions.js.map +1 -1
- package/dist/src/autoDownloader/autoDownloaderStateSerializer.js.map +1 -1
- package/dist/src/autoDownloader/eventArgs/autoDownloadEventArgs.js.map +1 -1
- package/dist/src/autoDownloader/eventArgs/autoDownloadFailedEventArgs.js.map +1 -1
- package/dist/src/autoDownloader/eventArgs/autoDownloadProgressedEventArgs.js.map +1 -1
- package/dist/src/autoDownloader/eventArgs/autoDownloadStartedEventArgs.js.map +1 -1
- package/dist/src/autoDownloader/eventArgs/autoDownloadStartingFailedEventArgs.js.map +1 -1
- package/dist/src/autoDownloader/eventArgs/autoDownloadUnhealthyEventArgs.js.map +1 -1
- package/dist/src/autoDownloader/eventArgs/checkingForNewTransfersStartedEventArgs.js.map +1 -1
- package/dist/src/autoDownloader/eventArgs/newTransfersCheckCompletedEventArgs.js.map +1 -1
- package/dist/src/autoDownloader/factory/nodeAutoDownloaderFactory.js.map +1 -1
- package/dist/src/autoDownloader/factory/nodeAutoDownloaderFactoryOptions.js.map +1 -1
- package/dist/src/autoDownloader/newInboxTransfersRetriever/newInboxTransfer.js.map +1 -1
- package/dist/src/autoDownloader/newInboxTransfersRetriever/newInboxTransfersRetriever.js.map +1 -1
- package/dist/src/autoDownloader/node/nodeAutoDownloaderStateSerializer.js.map +1 -1
- package/dist/src/autoDownloader/node/nodeTransferDownloaderFactory.js.map +1 -1
- package/dist/src/autoDownloader/state/autoDownloaderRecoverableState.js.map +1 -1
- package/dist/src/autoDownloader/state/autoDownloaderState.js.map +1 -1
- package/dist/src/autoDownloader/state/autoDownloaderStateRecoverableTransfer.js.map +1 -1
- package/dist/src/autoDownloader/state/autoDownloaderStateRunningTransfer.js.map +1 -1
- package/dist/src/autoDownloader/state/autoDownloaderStateSnapshot.js.map +1 -1
- package/dist/src/autoDownloader/transferDownloaderFactory.js.map +1 -1
- package/dist/src/autoDownloader/transferHandler/autoDownloaderNewTransferHandler.js.map +1 -1
- package/dist/src/autoDownloader/transferHandler/autoDownloaderRecoverableTransferHandler.js.map +1 -1
- package/dist/src/autoDownloader/transferHandler/autoDownloaderTransferHandlerBase.js.map +1 -1
- package/dist/src/client/downloader/downloaderCore.d.ts.map +1 -1
- package/dist/src/client/downloader/downloaderCore.js +6 -0
- package/dist/src/client/downloader/downloaderCore.js.map +1 -1
- package/dist/src/client/downloader/node/nodeTransferDownloader.js.map +1 -1
- package/dist/src/client/downloader/transferDownloader.js.map +1 -1
- package/dist/src/client/environmentVariables.js.map +1 -1
- package/dist/src/client/healthMonitor/events/eventArgs/healthMonitorHealthyEventArgs.js.map +1 -1
- package/dist/src/client/healthMonitor/events/eventArgs/healthMonitorUnhealthyEventArgs.js.map +1 -1
- package/dist/src/client/healthMonitor/events/transferHealthMonitorEvent.js.map +1 -1
- package/dist/src/client/healthMonitor/onlineChecker/nodeOnlineChecker.js.map +1 -1
- package/dist/src/client/healthMonitor/onlineChecker/onlineChecker.js.map +1 -1
- package/dist/src/client/healthMonitor/onlineChecker/webOnlineChecker.js.map +1 -1
- package/dist/src/client/healthMonitor/transferDownloaderHealthMonitor.js.map +1 -1
- package/dist/src/client/healthMonitor/transferHealthMonitorBase.js.map +1 -1
- package/dist/src/client/healthMonitor/transferUploaderHealthMonitor.js.map +1 -1
- package/dist/src/client/loggers/dummyLogger.js.map +1 -1
- package/dist/src/client/loggers/logger.js.map +1 -1
- package/dist/src/client/loggers/utils/logHealthyStatus.js.map +1 -1
- package/dist/src/client/node/nodeFileDetailsProvider.js.map +1 -1
- package/dist/src/client/uploader/node/nodeTransferUploader.js.map +1 -1
- package/dist/src/client/uploader/transferUploader.js.map +1 -1
- package/dist/src/client/uploader/transferUploaderBase.js.map +1 -1
- package/dist/src/client/uploader/transferUploaderConfig.js.map +1 -1
- package/dist/src/client/uploader/utils/uploaderUtils.js.map +1 -1
- package/dist/src/client/uploader/web/webTransferUploader.js.map +1 -1
- package/dist/src/downloader/api/fileServerDownloadClient.js.map +1 -1
- package/dist/src/downloader/api/node/nodeFileServerDownloadClient.js.map +1 -1
- package/dist/src/downloader/chunkDownloader.d.ts.map +1 -1
- package/dist/src/downloader/chunkDownloader.js +22 -3
- package/dist/src/downloader/chunkDownloader.js.map +1 -1
- package/dist/src/downloader/downloadFolderResolver.js.map +1 -1
- package/dist/src/downloader/downloadLogger.js.map +1 -1
- package/dist/src/downloader/downloadOptions.js.map +1 -1
- package/dist/src/downloader/downloadStatus/downloadFileChunkProgress.js.map +1 -1
- package/dist/src/downloader/downloadStatus/downloadFileProgress.js.map +1 -1
- package/dist/src/downloader/downloadStatus/downloadFilePromise.js.map +1 -1
- package/dist/src/downloader/downloadStatus/downloadState.d.ts +1 -0
- package/dist/src/downloader/downloadStatus/downloadState.d.ts.map +1 -1
- package/dist/src/downloader/downloadStatus/downloadState.js +4 -0
- package/dist/src/downloader/downloadStatus/downloadState.js.map +1 -1
- package/dist/src/downloader/downloadTracker.d.ts.map +1 -1
- package/dist/src/downloader/downloadTracker.js +31 -0
- package/dist/src/downloader/downloadTracker.js.map +1 -1
- package/dist/src/downloader/dtos/downloadCommand.js.map +1 -1
- package/dist/src/downloader/dtos/downloadError.js.map +1 -1
- package/dist/src/downloader/dtos/downloadErrorCode.js.map +1 -1
- package/dist/src/downloader/dtos/downloadEvent.js.map +1 -1
- package/dist/src/downloader/dtos/downloadFileChunkInfo.js.map +1 -1
- package/dist/src/downloader/dtos/downloadFileInfo.js.map +1 -1
- package/dist/src/downloader/dtos/downloadFilesCommand.js.map +1 -1
- package/dist/src/downloader/dtos/downloadInfo.js.map +1 -1
- package/dist/src/downloader/dtos/downloadRegistrationMode.js.map +1 -1
- package/dist/src/downloader/dtos/downloadTrackerFileInfo.js.map +1 -1
- package/dist/src/downloader/dtos/downloadTrackerFileProgressInfo.d.ts +5 -0
- package/dist/src/downloader/dtos/downloadTrackerFileProgressInfo.d.ts.map +1 -1
- package/dist/src/downloader/dtos/downloadTrackerFileProgressInfo.js.map +1 -1
- package/dist/src/downloader/dtos/downloadTrackerProgressInfo.js.map +1 -1
- package/dist/src/downloader/dtos/downloadTrackingMetadata.js.map +1 -1
- package/dist/src/downloader/dtos/downloaderRestoredState.js.map +1 -1
- package/dist/src/downloader/eventArgs/chunkDownloadEventArgs.js.map +1 -1
- package/dist/src/downloader/eventArgs/chunkDownloadFailedEventArgs.js.map +1 -1
- package/dist/src/downloader/eventArgs/downloadCompletedEventArgs.js.map +1 -1
- package/dist/src/downloader/eventArgs/downloadEventArgs.js.map +1 -1
- package/dist/src/downloader/eventArgs/downloadMetadataDeterminedEventArgs.js.map +1 -1
- package/dist/src/downloader/eventArgs/downloadPauseEventArgs.js.map +1 -1
- package/dist/src/downloader/eventArgs/downloadTrackingFailedEventArgs.js.map +1 -1
- package/dist/src/downloader/eventArgs/fileDownloadEventArgs.js.map +1 -1
- package/dist/src/downloader/eventArgs/fileDownloadFailedEventArgs.js.map +1 -1
- package/dist/src/downloader/filesDownloader.d.ts.map +1 -1
- package/dist/src/downloader/filesDownloader.js +97 -6
- package/dist/src/downloader/filesDownloader.js.map +1 -1
- package/dist/src/downloader/filesPreparer.js.map +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/index.node.js.map +1 -1
- package/dist/src/index.web.js.map +1 -1
- package/dist/src/uploader/api/dtos/handshakeRequest.js.map +1 -1
- package/dist/src/uploader/api/dtos/handshakeResponse.js.map +1 -1
- package/dist/src/uploader/api/dtos/pingResponse.js.map +1 -1
- package/dist/src/uploader/api/dtos/sendChunkRequest.js.map +1 -1
- package/dist/src/uploader/api/fileServerUdpClient.js.map +1 -1
- package/dist/src/uploader/api/fileServerUploadClient.js.map +1 -1
- package/dist/src/uploader/api/node/nodeFileServerUdpClient.js +8 -8
- package/dist/src/uploader/api/node/nodeFileServerUdpClient.js.map +1 -1
- package/dist/src/uploader/api/node/nodeFileServerUploadClient.js.map +1 -1
- package/dist/src/uploader/api/web/utils/axiosIdleTimeoutManager.js.map +1 -1
- package/dist/src/uploader/api/web/webFileServerUploadClient.js.map +1 -1
- package/dist/src/uploader/chunkStreamProviderFactory/nodeFileDetailsUploaderChunkStreamProviderFactory.js.map +1 -1
- package/dist/src/uploader/chunkStreamProviderFactory/uploaderChunkStreamProviderFactory.js.map +1 -1
- package/dist/src/uploader/chunkStreamProviderFactory/webFileDetailsUploaderChunkStreamProviderFactory.js.map +1 -1
- package/dist/src/uploader/chunksIterator/chunksIterator.js.map +1 -1
- package/dist/src/uploader/eventArgs/fileChunkUploadCompletedEventArgs.js.map +1 -1
- package/dist/src/uploader/eventArgs/fileChunkUploadCompletedPartiallyEventArgs.js.map +1 -1
- package/dist/src/uploader/eventArgs/fileChunkUploadEventArgs.js.map +1 -1
- package/dist/src/uploader/eventArgs/fileChunkUploadFailedEventArgs.js.map +1 -1
- package/dist/src/uploader/eventArgs/fileChunkUploadProgressedEventArgs.js.map +1 -1
- package/dist/src/uploader/eventArgs/fileUploadEventArgs.js.map +1 -1
- package/dist/src/uploader/eventArgs/fileUploadFailedEventArgs.js.map +1 -1
- package/dist/src/uploader/eventArgs/transferMetadataDeterminedEventArgs.js.map +1 -1
- package/dist/src/uploader/eventArgs/transferUploadCompletedEventArgs.js.map +1 -1
- package/dist/src/uploader/eventArgs/transferUploadModeChosenEventArgs.js.map +1 -1
- package/dist/src/uploader/eventArgs/transferUploadProgressedEventArgs.js.map +1 -1
- package/dist/src/uploader/export/transferUploadExportData.js.map +1 -1
- package/dist/src/uploader/export/transferUploadExportState.js.map +1 -1
- package/dist/src/uploader/export/transferUploadMetadata.js.map +1 -1
- package/dist/src/uploader/optimizer/optimizationValues.js.map +1 -1
- package/dist/src/uploader/optimizer/strategies/udpConcurrencyBasedOptimizationStrategy.js.map +1 -1
- package/dist/src/uploader/optimizer/strategies/udpSleepBasedOptimizationStrategy.js.map +1 -1
- package/dist/src/uploader/optimizer/transferUploadOptimizationStrategy.js.map +1 -1
- package/dist/src/uploader/optimizer/transferUploadOptimizer.js.map +1 -1
- package/dist/src/uploader/optimizer/uploadOptimizer.js.map +1 -1
- package/dist/src/uploader/options/transferUploadAppendInfo.js.map +1 -1
- package/dist/src/uploader/options/transferUploadConfig.js.map +1 -1
- package/dist/src/uploader/options/transferUploadInfo.js.map +1 -1
- package/dist/src/uploader/options/transferUploadInfoBase.js.map +1 -1
- package/dist/src/uploader/pauseController.js.map +1 -1
- package/dist/src/uploader/state/continuousChunksCalculator.js.map +1 -1
- package/dist/src/uploader/state/readonlyTransferUploadStateFile.js.map +1 -1
- package/dist/src/uploader/state/readonlyTransferUploadStateFiles.js.map +1 -1
- package/dist/src/uploader/state/transferUploadProgressCalculator.js.map +1 -1
- package/dist/src/uploader/state/transferUploadState.js.map +1 -1
- package/dist/src/uploader/state/transferUploadStateFile.js.map +1 -1
- package/dist/src/uploader/state/transferUploadStateFiles.js.map +1 -1
- package/dist/src/uploader/transferUpload.js.map +1 -1
- package/dist/src/uploader/transferUploadError.js.map +1 -1
- package/dist/src/uploader/transferUploadEvent.js.map +1 -1
- package/dist/src/utils/api/apiClient.js.map +1 -1
- package/dist/src/utils/api/apiClientBase.js.map +1 -1
- package/dist/src/utils/api/apiError.js.map +1 -1
- package/dist/src/utils/api/apiFilemail449Error.js.map +1 -1
- package/dist/src/utils/api/apiFilemailError.js.map +1 -1
- package/dist/src/utils/api/dtos/baseResponse.js.map +1 -1
- package/dist/src/utils/api/dtos/cancelTransferRequest.js.map +1 -1
- package/dist/src/utils/api/dtos/finalizeTransferRequest.js.map +1 -1
- package/dist/src/utils/api/dtos/finalizeTransferResponse.js.map +1 -1
- package/dist/src/utils/api/dtos/getCompanyResponse.js.map +1 -1
- package/dist/src/utils/api/dtos/getCompressedFileMetadataResponse.js.map +1 -1
- package/dist/src/utils/api/dtos/getInboxTransfersRequest.js.map +1 -1
- package/dist/src/utils/api/dtos/getInboxTransfersResponse.js.map +1 -1
- package/dist/src/utils/api/dtos/getRangehashResponse.js.map +1 -1
- package/dist/src/utils/api/dtos/getTransferRequest.js.map +1 -1
- package/dist/src/utils/api/dtos/getTransferResponse.js.map +1 -1
- package/dist/src/utils/api/dtos/initializeTransferRequest.js.map +1 -1
- package/dist/src/utils/api/dtos/initializeTransferResponse.js.map +1 -1
- package/dist/src/utils/api/dtos/loginRequest.js.map +1 -1
- package/dist/src/utils/api/dtos/loginResponse.js.map +1 -1
- package/dist/src/utils/api/dtos/registerFileDownloadRequest.js.map +1 -1
- package/dist/src/utils/api/dtos/registerTransferDownloadRequest.js.map +1 -1
- package/dist/src/utils/api/dtos/resetTransferRequest.js.map +1 -1
- package/dist/src/utils/api/dtos/sendFileChunkRequest.js.map +1 -1
- package/dist/src/utils/api/dtos/transferCustomFieldDto.js.map +1 -1
- package/dist/src/utils/api/dtos/transferFileDto.js.map +1 -1
- package/dist/src/utils/api/fileServerClientFactory.js.map +1 -1
- package/dist/src/utils/api/node/gotWorkarounds.js.map +1 -1
- package/dist/src/utils/api/node/nodeApiClient.js.map +1 -1
- package/dist/src/utils/api/node/nodeClientBase.js.map +1 -1
- package/dist/src/utils/api/node/nodeFileServerClientFactory.js.map +1 -1
- package/dist/src/utils/api/node/nodeFileserverClientBase.js.map +1 -1
- package/dist/src/utils/api/urlUtil.js.map +1 -1
- package/dist/src/utils/api/web/webApiClient.js.map +1 -1
- package/dist/src/utils/api/web/webClientBase.js.map +1 -1
- package/dist/src/utils/api/web/webFileServerClientFactory.js.map +1 -1
- package/dist/src/utils/api/web/webFileserverClientBase.js.map +1 -1
- package/dist/src/utils/concurrencyController/concurrencyController.js.map +1 -1
- package/dist/src/utils/concurrencyController/concurrencyReleaser.js.map +1 -1
- package/dist/src/utils/concurrencyController/transferConcurrencyController.js.map +1 -1
- package/dist/src/utils/crypto/cryptographyProvider.js.map +1 -1
- package/dist/src/utils/crypto/node/nodeCryptographyProvider.js.map +1 -1
- package/dist/src/utils/crypto/web/webCryptographyProvider.js.map +1 -1
- package/dist/src/utils/dateAndTime/simpleDateFormatter.js.map +1 -1
- package/dist/src/utils/events/chunkProgressEvent.js.map +1 -1
- package/dist/src/utils/events/eventsEngine.js.map +1 -1
- package/dist/src/utils/events/node/nodeEventsEngine.js.map +1 -1
- package/dist/src/utils/events/web/webEventsEngine.js.map +1 -1
- package/dist/src/utils/fileSystem/chunkStreamProvider.js.map +1 -1
- package/dist/src/utils/fileSystem/chunkStreamProviderFactory.js.map +1 -1
- package/dist/src/utils/fileSystem/fileDetails.js.map +1 -1
- package/dist/src/utils/fileSystem/fileSystemService.d.ts +2 -2
- package/dist/src/utils/fileSystem/fileSystemService.d.ts.map +1 -1
- package/dist/src/utils/fileSystem/fileSystemService.js.map +1 -1
- package/dist/src/utils/fileSystem/fsError.js.map +1 -1
- package/dist/src/utils/fileSystem/node/nodeChunkStreamProvider.js.map +1 -1
- package/dist/src/utils/fileSystem/node/nodeChunkStreamProviderFactory.js.map +1 -1
- package/dist/src/utils/fileSystem/node/nodeFileDetails.js.map +1 -1
- package/dist/src/utils/fileSystem/node/nodeFileSystemService.d.ts +2 -1
- package/dist/src/utils/fileSystem/node/nodeFileSystemService.d.ts.map +1 -1
- package/dist/src/utils/fileSystem/node/nodeFileSystemService.js +15 -4
- package/dist/src/utils/fileSystem/node/nodeFileSystemService.js.map +1 -1
- package/dist/src/utils/fileSystem/parsedPath.js.map +1 -1
- package/dist/src/utils/fileSystem/web/chunkStreamProvider/webChunkStreamEncrypter.js.map +1 -1
- package/dist/src/utils/fileSystem/web/chunkStreamProvider/webChunkStreamProvider.js.map +1 -1
- package/dist/src/utils/fileSystem/web/webChunkStreamProviderFactory.js.map +1 -1
- package/dist/src/utils/fileSystem/web/webFileDetails.js.map +1 -1
- package/dist/src/utils/jsonParsing.js.map +1 -1
- package/dist/src/utils/logging/logEventPropertyNames.js.map +1 -1
- package/dist/src/utils/mergeAbortAndPauseSignals.js.map +1 -1
- package/dist/src/utils/networking/throttlingOptions.js.map +1 -1
- package/dist/src/utils/promiseAll.js.map +1 -1
- package/dist/src/utils/types/transferStatus.js.map +1 -1
- package/dist/src/utils/uint8ArrayUtils.js.map +1 -1
- package/package.json +79 -79
- package/readme.md +18 -18
package/LICENSE
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
© Copyright 2022 Filemail AS. All Rights Reserved.
|
|
2
|
-
|
|
3
|
-
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
|
4
|
-
|
|
5
|
-
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
|
6
|
-
|
|
7
|
-
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
|
|
8
|
-
|
|
9
|
-
3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
|
|
10
|
-
|
|
1
|
+
© Copyright 2022 Filemail AS. All Rights Reserved.
|
|
2
|
+
|
|
3
|
+
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
|
4
|
+
|
|
5
|
+
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
|
6
|
+
|
|
7
|
+
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
|
|
8
|
+
|
|
9
|
+
3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
|
|
10
|
+
|
|
11
11
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
@@ -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 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 portals(portals: string[]) {\r\n this.#logger.logInfo(`AutoDownloader set portals = ${portals.join(`, `)} called`);\r\n this.#newInboxTransfersRetriever.portals = portals;\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;"]}
|
|
1
|
+
{"version":3,"file":"autoDownloader.js","sourceRoot":"","sources":["../../../src/autoDownloader/autoDownloader.ts"],"names":[],"mappings":"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","sourcesContent":["import sleep from \"abortable-sleep\";\n\nimport AutoDownloaderError from \"./autoDownloaderError.js\";\nimport AutoDownloaderState from \"./state/autoDownloaderState.js\";\nimport AutoDownloaderNewTransferHandler from \"./transferHandler/autoDownloaderNewTransferHandler.js\";\nimport AutoDownloaderRecoverableTransferHandler from \"./transferHandler/autoDownloaderRecoverableTransferHandler.js\";\nimport AutoDownloaderEvent from \"./autoDownloaderEvent.js\";\nimport TransferStatus from \"../utils/types/transferStatus.js\";\nimport AutoDownloaderDestroyer from \"./autoDownloaderDestroyer.js\";\n\nimport type Logger from \"../client/loggers/logger.js\";\nimport type ConcurrencyController from \"../utils/concurrencyController/concurrencyController.js\";\nimport type AutoDownloaderOptions from \"./autoDownloaderOptions.js\";\nimport type TransferDownloaderFactory from './transferDownloaderFactory.js';\nimport type AutoDownloaderStateSnapshot from './state/autoDownloaderStateSnapshot.js';\nimport type AutoDownloaderRecoverableState from './state/autoDownloaderRecoverableState.js';\nimport type EventsEngine from '../utils/events/eventsEngine.js';\nimport type AutoDownloaderStateSerializer from './autoDownloaderStateSerializer.js';\nimport type AutoDownloaderTransferHandlerBase from \"./transferHandler/autoDownloaderTransferHandlerBase.js\";\nimport type NewInboxTransfersRetriever from \"./newInboxTransfersRetriever/newInboxTransfersRetriever.js\";\nimport type NewInboxTransfer from \"./newInboxTransfersRetriever/newInboxTransfer.js\";\nimport type AutoDownloaderStateRecoverableTransfer from \"./state/autoDownloaderStateRecoverableTransfer.js\";\nimport type NewTransfersCheckCompletedEventArgs from \"./eventArgs/newTransfersCheckCompletedEventArgs.js\";\nimport type AutoDownloadStartedEventArgs from \"./eventArgs/autoDownloadStartedEventArgs.js\";\nimport type AutoDownloadFailedEventArgs from \"./eventArgs/autoDownloadFailedEventArgs.js\";\nimport type AutoDownloadProgressedEventArgs from \"./eventArgs/autoDownloadProgressedEventArgs.js\";\nimport type AutoDownloadEventArgs from \"./eventArgs/autoDownloadEventArgs.js\";\nimport type AutoDownloadStartingFailedEventArgs from \"./eventArgs/autoDownloadStartingFailedEventArgs.js\";\nimport type CheckingForNewTransfersStartedEventArgs from \"./eventArgs/checkingForNewTransfersStartedEventArgs.js\";\nimport type AutoDownloadUnhealthyEventArgs from \"./eventArgs/autoDownloadUnhealthyEventArgs.js\";\n\nclass AutoDownloader {\n #newTransfersCheckIntervalInSeconds: number;\n\n #logger: Logger;\n #eventsEngine: EventsEngine;\n #state: AutoDownloaderState;\n #newInboxTransfersRetriever: NewInboxTransfersRetriever;\n #concurrencyController: ConcurrencyController;\n #transferDownloaderFactory: TransferDownloaderFactory;\n #destroyer: AutoDownloaderDestroyer;\n\n #isCheckingForNewTransfers: boolean = false;\n #abortController: AbortController = new AbortController();\n\n constructor(options: AutoDownloaderOptions, logger: Logger, newInboxTransfersRetriever: NewInboxTransfersRetriever, concurrencyController: ConcurrencyController, eventsEngine: EventsEngine, transferDownloaderFactory: TransferDownloaderFactory, stateSerializer: AutoDownloaderStateSerializer, recoverableState: AutoDownloaderRecoverableState | null) {\n this.#newTransfersCheckIntervalInSeconds = options.newTransfersCheckIntervalInSeconds;\n\n this.#logger = logger;\n this.#eventsEngine = eventsEngine;\n this.#newInboxTransfersRetriever = newInboxTransfersRetriever;\n this.#concurrencyController = concurrencyController;\n this.#transferDownloaderFactory = transferDownloaderFactory;\n\n this.#state = new AutoDownloaderState(eventsEngine);\n\n if (recoverableState)\n this.#state.recover(recoverableState);\n\n this.#state.addRecoverableStateObserver(eventArgs => stateSerializer.serialize(eventArgs));\n\n this.#destroyer = new AutoDownloaderDestroyer(this.#state, stateSerializer, transferDownloaderFactory, logger);\n }\n\n get state(): AutoDownloaderStateSnapshot {\n return {\n lastCompletedNewTransfersCheck: this.#state.lastCompletedNewTransfersCheck,\n runningTransfers: this.#state.runningTransfers,\n completedTransfers: this.#state.completedTransfers,\n failedTransfers: new Set(this.#state.failedTransfers.keys()),\n canceledTransfers: this.#state.canceledTransfers,\n };\n }\n\n get isAnyTransferRunning(): boolean {\n return this.#state.isAnyTransferRunning;\n }\n\n get isCheckingForNewTransfers(): boolean {\n return this.#isCheckingForNewTransfers;\n }\n\n set loginToken(loginToken: string) {\n this.#logger.logInfo(`AutoDownloader set loginToken called`);\n this.#newInboxTransfersRetriever.loginToken = loginToken;\n }\n\n set maxNumberOfConcurrentDownloads(maxNumberOfConcurrentDownloads: number) {\n this.#logger.logInfo(`AutoDownloader set maxNumberOfConcurrentDownloads = ${maxNumberOfConcurrentDownloads} called`);\n this.#concurrencyController.maxConcurrency = maxNumberOfConcurrentDownloads;\n }\n\n set newTransfersCheckIntervalInSeconds(newTransfersCheckIntervalInSeconds: number) {\n this.#logger.logInfo(`AutoDownloader set newTransfersCheckIntervalInSeconds = ${newTransfersCheckIntervalInSeconds} called`);\n this.#newTransfersCheckIntervalInSeconds = newTransfersCheckIntervalInSeconds;\n }\n\n set periodToRetrieveTransfersInHours(periodToRetrieveTransfersInHours: number) {\n this.#logger.logInfo(`AutoDownloader set periodToRetrieveTransfersInHours = ${periodToRetrieveTransfersInHours} called`);\n this.#newInboxTransfersRetriever.periodToRetrieveTransfersInHours = periodToRetrieveTransfersInHours;\n }\n\n set downloadForAllUsers(downloadForAllUsers: boolean) {\n this.#logger.logInfo(`AutoDownloader set downloadForAllUsers = ${downloadForAllUsers} called`);\n this.#newInboxTransfersRetriever.downloadForAllUsers = downloadForAllUsers;\n }\n\n set portals(portals: string[]) {\n this.#logger.logInfo(`AutoDownloader set portals = ${portals.join(`, `)} called`);\n this.#newInboxTransfersRetriever.portals = portals;\n }\n\n set downloadFolderTemplate(downloadFolderTemplate: string) {\n this.#logger.logInfo(`AutoDownloader set downloadFolderTemplate = ${downloadFolderTemplate} called`);\n this.#transferDownloaderFactory.downloadFolderTemplate = downloadFolderTemplate;\n }\n\n async startCheckingForNewTransfers(): Promise<void> {\n this.#logger.logInfo(`AutoDownloader startCheckingForNewTransfers called`);\n\n if (this.#destroyer.isDestroyed)\n throw new AutoDownloaderError(`Auto-downloader has been destroyed`);\n\n if (this.#isCheckingForNewTransfers)\n throw new AutoDownloaderError(`Auto-downloader is already checking for new transfers`);\n\n this.#isCheckingForNewTransfers = true;\n this.#abortController = new AbortController();\n\n const eventArgs: CheckingForNewTransfersStartedEventArgs = { lastCompletedNewTransfersCheck: this.#state.lastCompletedNewTransfersCheck };\n this.#eventsEngine.emit(AutoDownloaderEvent.CheckingForNewTransfersStarted, eventArgs);\n\n while (!this.#abortController.signal.aborted) {\n /* eslint-disable no-await-in-loop */\n try {\n this.#logger.logDebug(`AutoDownloader main loop iteration started`);\n\n const newTransfers = await this.#newInboxTransfersRetriever.getNewTransfers(transferId => this.#state.isTransferHandled(transferId), this.#abortController.signal);\n\n this.#logger.logDebug(`AutoDownloader retrieved new transfers to start: [${newTransfers.map(t => t.transferId).join(`, `)}]`);\n\n if (this.#abortController.signal.aborted)\n break;\n\n await this.startNewTransfers(newTransfers);\n\n this.#state.newTransfersCheckCompleted();\n\n this.#logger.logDebug(`AutoDownloader main loop iteration finished`);\n }\n catch (error) {\n this.#logger.logError(error as Error, `AutoDownloader main loop error occured`, { isAborted: this.#abortController.signal.aborted });\n }\n\n await sleep(this.#newTransfersCheckIntervalInSeconds * 1000, this.#abortController.signal);\n }\n\n this.#isCheckingForNewTransfers = false;\n\n this.#logger.logInfo(`AutoDownloader stopped`);\n\n this.#eventsEngine.emit(AutoDownloaderEvent.CheckingForNewTransfersStopped);\n }\n\n async recoverTransfers(): Promise<void> {\n this.#logger.logInfo(`AutoDownloader recoverTransfers called`);\n\n if (this.#destroyer.isDestroyed)\n throw new AutoDownloaderError(`Auto-downloader has been destroyed`);\n\n const recoverableTransferHandlerFactory = (transfer: [string, AutoDownloaderStateRecoverableTransfer]) => new AutoDownloaderRecoverableTransferHandler(transfer[1].data, transfer[1].downloadId, this.#state, this.#transferDownloaderFactory, this.#logger);\n await this.startTransfers(this.#state.toBeRecoveredTransfers, recoverableTransferHandlerFactory);\n }\n\n private async startNewTransfers(newTransfers: NewInboxTransfer[]) {\n const newTransferHandlerFactory = (transfer: NewInboxTransfer) => new AutoDownloaderNewTransferHandler(transfer, this.#state, this.#transferDownloaderFactory, this.#logger);\n await this.startTransfers(newTransfers, newTransferHandlerFactory);\n }\n\n private async startTransfers<T>(transfers: Iterable<T>, transferHandlerFactory: (transfer: T) => AutoDownloaderTransferHandlerBase) {\n for (const transfer of transfers) {\n const releaseSemaphore = await this.#concurrencyController.acquire();\n\n if (this.#abortController.signal.aborted) {\n releaseSemaphore();\n return;\n }\n\n const transferHandler = transferHandlerFactory(transfer);\n\n this.#logger.logInfo(`AutoDownloader starting transfer having id ${transferHandler.transferId}`);\n\n transferHandler.startTransfer(releaseSemaphore);\n }\n }\n\n destroy() {\n this.#logger.logInfo(`AutoDownloader destroy called`);\n\n if (this.#isCheckingForNewTransfers)\n this.pauseCheckingForNewTransfers();\n\n this.#destroyer.destroy();\n }\n\n pauseCheckingForNewTransfers() {\n this.#logger.logInfo(`AutoDownloader pauseCheckingForNewTransfers called`);\n\n if (!this.#isCheckingForNewTransfers)\n throw new AutoDownloaderError(`Auto-downloader is not checking for new transfers, so it cannot be paused`);\n\n this.#eventsEngine.emit(AutoDownloaderEvent.CheckingForNewTransfersStopping);\n this.#abortController.abort();\n }\n\n pauseTransfer(transferId: string) {\n this.#logger.logInfo(`AutoDownloader pauseTransfer ${transferId} called`);\n\n const transferDownloader = this.#state.getRunningTransferDownloader(transferId);\n transferDownloader.pause();\n }\n\n resumeTransfer(transferId: string) {\n this.#logger.logInfo(`AutoDownloader resumeTransfer ${transferId} called`);\n\n const transferDownloader = this.#state.getRunningTransferDownloader(transferId);\n transferDownloader.resume();\n }\n\n stopTransfer(transferId: string) {\n this.#logger.logInfo(`AutoDownloader stopTransfer ${transferId} called`);\n\n const transferDownloader = this.#state.getRunningTransferDownloader(transferId);\n\n if (transferDownloader.status !== TransferStatus.Running)\n return;\n\n transferDownloader.stop();\n }\n\n stopAllTransfers() {\n this.#logger.logInfo(`AutoDownloader stopAllTransfers called`);\n\n this.#state.runningTransfers.forEach(t => this.stopTransfer(t));\n }\n\n cancelTransfer(transferId: string) {\n this.#logger.logInfo(`AutoDownloader cancelTransfer ${transferId} called`);\n\n if (this.#state.runningTransfers.has(transferId)) {\n this.cancelRunningTransfer(transferId);\n return;\n }\n\n if (this.#state.failedTransfers.has(transferId)) {\n this.cancelFailedTransfer(transferId);\n return;\n }\n\n throw new AutoDownloaderError(`Transfer not found (TransferId = ${transferId})`);\n }\n\n private cancelRunningTransfer(transferId: string) {\n this.#destroyer.abortRunningTransfer(transferId);\n }\n\n private cancelFailedTransfer(transferId: string) {\n this.#state.transferAborting(transferId);\n\n const transfer = this.#state.failedTransfers.get(transferId)!;\n\n if (transfer.downloadId)\n this.#destroyer.cleanupTransfer(transfer.downloadId);\n\n this.#state.transferAborted(transferId);\n }\n\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\n addEventListener(eventName: AutoDownloaderEvent.DownloadUnealthy, handler: (event: AutoDownloadUnhealthyEventArgs) => void): void\n addEventListener(eventName: AutoDownloaderEvent.DownloadProgressed, handler: (event: AutoDownloadProgressedEventArgs) => void): void\n addEventListener(eventName: AutoDownloaderEvent.DownloadFailed, handler: (event: AutoDownloadFailedEventArgs) => void): void\n addEventListener(eventName: AutoDownloaderEvent.DownloadStarted, handler: (event: AutoDownloadStartedEventArgs) => void): void\n addEventListener(eventName: AutoDownloaderEvent.DownloadStartingFailed, handler: (event: AutoDownloadStartingFailedEventArgs) => void): void\n addEventListener(eventName: AutoDownloaderEvent.NewTransfersCheckCompleted, handler: (event: NewTransfersCheckCompletedEventArgs) => void): void\n addEventListener(eventName: AutoDownloaderEvent.CheckingForNewTransfersStarted, handler: (event: CheckingForNewTransfersStartedEventArgs) => void): void\n addEventListener(eventName: AutoDownloaderEvent.CheckingForNewTransfersStopped | AutoDownloaderEvent.CheckingForNewTransfersStopping, handler: () => void): void\n addEventListener(eventName: string, handler: (arg?: any) => void): void\n addEventListener(eventName: string, handler: (arg?: any) => void): void {\n this.#eventsEngine.addEventListener(eventName, handler);\n }\n}\n\nexport default AutoDownloader;"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autoDownloaderDestroyer.js","sourceRoot":"","sources":["../../../src/autoDownloader/autoDownloaderDestroyer.ts"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,MAAM,0BAA0B,CAAC;AAQ3D,MAAM,uBAAuB;IACzB,YAAY,GAAG,KAAK,CAAC;IAErB,MAAM,CAAsB;IAC5B,WAAW,CAAgC;IAC3C,0BAA0B,CAA4B;IACtD,OAAO,CAAS;IAEhB,YAAY,KAA0B,EAAE,UAAyC,EAAE,yBAAoD,EAAE,MAAc;QACnJ,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,0BAA0B,GAAG,yBAAyB,CAAC;QAC5D,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IAC1B,CAAC;IAED,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAED,OAAO;QACH,IAAI,IAAI,CAAC,YAAY;YACjB,MAAM,IAAI,mBAAmB,CAAC,4CAA4C,CAAC,CAAC;QAEhF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAEzB,IAAI,CAAC,MAAM,CAAC,kCAAkC,EAAE,CAAC;QAEjD,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;QAE/B,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,IAAI,CAAC,yCAAyC,EAAE,CAAC;IACrD,CAAC;IAEO,wBAAwB;QAC5B,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,oBAAoB,CAAC,UAAkB;QACnC,IAAI,CAAC;YACD,MAAM,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,4BAA4B,CAAC,UAAU,CAAC,CAAC;YAChF,kBAAkB,CAAC,KAAK,EAAE,CAAC;QAC/B,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAc,EAAE,8CAA8C,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;QAC1G,CAAC;IACL,CAAC;IAEO,yCAAyC;QAC7C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;QAC1D,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IACvD,CAAC;IAEO,gBAAgB,CAAC,SAAsE;QAC3F,KAAK,MAAM,QAAQ,IAAI,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;YACxC,IAAI,CAAC,QAAQ,CAAC,UAAU;gBACpB,SAAS;YAEb,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,UAAW,CAAC,CAAC;QAC/C,CAAC;IACL,CAAC;IAED,eAAe,CAAC,UAAkB;QAC9B,IAAI,CAAC;YACD,MAAM,UAAU,GAAG,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,CAAC;YAC5D,UAAU,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAc,EAAE,iDAAiD,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;QAC7G,CAAC;IACL,CAAC;CACJ;AAED,eAAe,uBAAuB,CAAC","sourcesContent":["import AutoDownloaderError from \"./autoDownloaderError.js\";\
|
|
1
|
+
{"version":3,"file":"autoDownloaderDestroyer.js","sourceRoot":"","sources":["../../../src/autoDownloader/autoDownloaderDestroyer.ts"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,MAAM,0BAA0B,CAAC;AAQ3D,MAAM,uBAAuB;IACzB,YAAY,GAAG,KAAK,CAAC;IAErB,MAAM,CAAsB;IAC5B,WAAW,CAAgC;IAC3C,0BAA0B,CAA4B;IACtD,OAAO,CAAS;IAEhB,YAAY,KAA0B,EAAE,UAAyC,EAAE,yBAAoD,EAAE,MAAc;QACnJ,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,0BAA0B,GAAG,yBAAyB,CAAC;QAC5D,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IAC1B,CAAC;IAED,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAED,OAAO;QACH,IAAI,IAAI,CAAC,YAAY;YACjB,MAAM,IAAI,mBAAmB,CAAC,4CAA4C,CAAC,CAAC;QAEhF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAEzB,IAAI,CAAC,MAAM,CAAC,kCAAkC,EAAE,CAAC;QAEjD,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;QAE/B,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,IAAI,CAAC,yCAAyC,EAAE,CAAC;IACrD,CAAC;IAEO,wBAAwB;QAC5B,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,oBAAoB,CAAC,UAAkB;QACnC,IAAI,CAAC;YACD,MAAM,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,4BAA4B,CAAC,UAAU,CAAC,CAAC;YAChF,kBAAkB,CAAC,KAAK,EAAE,CAAC;QAC/B,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAc,EAAE,8CAA8C,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;QAC1G,CAAC;IACL,CAAC;IAEO,yCAAyC;QAC7C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;QAC1D,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IACvD,CAAC;IAEO,gBAAgB,CAAC,SAAsE;QAC3F,KAAK,MAAM,QAAQ,IAAI,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;YACxC,IAAI,CAAC,QAAQ,CAAC,UAAU;gBACpB,SAAS;YAEb,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,UAAW,CAAC,CAAC;QAC/C,CAAC;IACL,CAAC;IAED,eAAe,CAAC,UAAkB;QAC9B,IAAI,CAAC;YACD,MAAM,UAAU,GAAG,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,CAAC;YAC5D,UAAU,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAc,EAAE,iDAAiD,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;QAC7G,CAAC;IACL,CAAC;CACJ;AAED,eAAe,uBAAuB,CAAC","sourcesContent":["import AutoDownloaderError from \"./autoDownloaderError.js\";\n\nimport type Logger from \"../client/loggers/logger.js\";\nimport type AutoDownloaderStateSerializer from \"./autoDownloaderStateSerializer.js\";\nimport type AutoDownloaderState from \"./state/autoDownloaderState.js\";\nimport type TransferDownloaderFactory from \"./transferDownloaderFactory.js\";\nimport type AutoDownloaderStateRecoverableTransfer from \"./state/autoDownloaderStateRecoverableTransfer.js\";\n\nclass AutoDownloaderDestroyer {\n #isDestroyed = false;\n\n #state: AutoDownloaderState;\n #serializer: AutoDownloaderStateSerializer;\n #transferDownloaderFactory: TransferDownloaderFactory;\n #logger: Logger;\n\n constructor(state: AutoDownloaderState, serializer: AutoDownloaderStateSerializer, transferDownloaderFactory: TransferDownloaderFactory, logger: Logger) {\n this.#state = state;\n this.#serializer = serializer;\n this.#transferDownloaderFactory = transferDownloaderFactory;\n this.#logger = logger;\n }\n\n get isDestroyed(): boolean {\n return this.#isDestroyed;\n }\n\n destroy() {\n if (this.#isDestroyed)\n throw new AutoDownloaderError(`Auto-downloader has already been destroyed`);\n\n this.#isDestroyed = true;\n\n this.#state.removeAllRecoverableStateObservers();\n\n this.#serializer.removeState();\n\n this.abortAllRunningTransfers();\n this.cleanupAllFailedAndToBeRecoveredTransfers();\n }\n\n private abortAllRunningTransfers() {\n this.#state.runningTransfers.forEach(t => this.abortRunningTransfer(t));\n }\n\n abortRunningTransfer(transferId: string) {\n try {\n const transferDownloader = this.#state.getRunningTransferDownloader(transferId);\n transferDownloader.abort();\n }\n catch (error) {\n this.#logger.logError(error as Error, `Error when aborting auto downloader transfer`, { transferId });\n }\n }\n\n private cleanupAllFailedAndToBeRecoveredTransfers() {\n this.cleanupTransfers(this.#state.toBeRecoveredTransfers);\n this.cleanupTransfers(this.#state.failedTransfers);\n }\n\n private cleanupTransfers(transfers: ReadonlyMap<string, AutoDownloaderStateRecoverableTransfer>) {\n for (const transfer of transfers.values()) {\n if (!transfer.downloadId)\n continue;\n\n this.cleanupTransfer(transfer.downloadId!);\n }\n }\n\n cleanupTransfer(downloadId: string) {\n try {\n const downloader = this.#transferDownloaderFactory.create();\n downloader.cleanupDownload(downloadId);\n }\n catch (error) {\n this.#logger.logError(error as Error, `Error when cleaning up auto downloader transfer`, { downloadId });\n }\n }\n}\n\nexport default AutoDownloaderDestroyer;"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autoDownloaderError.js","sourceRoot":"","sources":["../../../src/autoDownloader/autoDownloaderError.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,KAAK;IAClD,YAAY,OAAgB,EAAE,OAAsB;QAChD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACtC,CAAC;CACJ","sourcesContent":["export default class AutoDownloaderError extends Error {\
|
|
1
|
+
{"version":3,"file":"autoDownloaderError.js","sourceRoot":"","sources":["../../../src/autoDownloader/autoDownloaderError.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,KAAK;IAClD,YAAY,OAAgB,EAAE,OAAsB;QAChD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACtC,CAAC;CACJ","sourcesContent":["export default class AutoDownloaderError extends Error {\n constructor(message?: string, options?: ErrorOptions) {\n super(message, options);\n this.name = `AutoDownloaderError`;\n }\n}"]}
|
|
@@ -1 +1 @@
|
|
|
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 {\
|
|
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 {\n /* Downloader events */\n DownloadStarted = `AutoDownloadStarted`,\n DownloadProgressed = `AutoDownloadProgressed`,\n DownloadCompleted = `AutoDownloadCompleted`,\n DownloadAborting = `AutoDownloadAborting`,\n DownloadAborted = `AutoDownloadAborted`,\n DownloadPausing = `AutoDownloadPausing`,\n DownloadPaused = `AutoDownloadPaused`,\n DownloadResumed = `AutoDownloadResumed`,\n\n /* AutoDownloader additional events */\n CheckingForNewTransfersStarted = `AutoDownloaderCheckingForNewTransfersStarted`,\n CheckingForNewTransfersStopped = `AutoDownloaderCheckingForNewTransfersStopped`,\n CheckingForNewTransfersStopping = `AutoDownloaderCheckingForNewTransfersStopping`,\n NewTransfersCheckCompleted = `AutoDownloaderNewTransfersCheckCompleted`,\n DownloadFailed = `AutoDownloadFailed`,\n DownloadStopped = `AutoDownloadStopped`,\n DownloadStopping = `AutoDownloadStopping`,\n DownloadStartingFailed = `AutoDownloadStartingFailed`,\n\n /* Healthy events */\n DownloadHealthy = `DownloadHealthy`,\n DownloadUnealthy = `DownloadUnealthy`,\n}\n\nexport default AutoDownloaderEvent;"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autoDownloaderOptions.js","sourceRoot":"","sources":["../../../src/autoDownloader/autoDownloaderOptions.ts"],"names":[],"mappings":"","sourcesContent":["type AutoDownloaderOptions = {\
|
|
1
|
+
{"version":3,"file":"autoDownloaderOptions.js","sourceRoot":"","sources":["../../../src/autoDownloader/autoDownloaderOptions.ts"],"names":[],"mappings":"","sourcesContent":["type AutoDownloaderOptions = {\n newTransfersCheckIntervalInSeconds: number,\n};\n\nexport default AutoDownloaderOptions;"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autoDownloaderStateSerializer.js","sourceRoot":"","sources":["../../../src/autoDownloader/autoDownloaderStateSerializer.ts"],"names":[],"mappings":"","sourcesContent":["import type AutoDownloaderRecoverableState from \"./state/autoDownloaderRecoverableState.js\";\
|
|
1
|
+
{"version":3,"file":"autoDownloaderStateSerializer.js","sourceRoot":"","sources":["../../../src/autoDownloader/autoDownloaderStateSerializer.ts"],"names":[],"mappings":"","sourcesContent":["import type AutoDownloaderRecoverableState from \"./state/autoDownloaderRecoverableState.js\";\n\ninterface AutoDownloaderStateSerializer {\n removeState(): Promise<void>;\n serialize(recoverableState: AutoDownloaderRecoverableState): Promise<void>;\n deserialize(): Promise<AutoDownloaderRecoverableState | null>;\n}\n\nexport default AutoDownloaderStateSerializer;"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autoDownloadEventArgs.js","sourceRoot":"","sources":["../../../../src/autoDownloader/eventArgs/autoDownloadEventArgs.ts"],"names":[],"mappings":"","sourcesContent":["interface AutoDownloadEventArgs {\
|
|
1
|
+
{"version":3,"file":"autoDownloadEventArgs.js","sourceRoot":"","sources":["../../../../src/autoDownloader/eventArgs/autoDownloadEventArgs.ts"],"names":[],"mappings":"","sourcesContent":["interface AutoDownloadEventArgs {\n transferId: string\n}\n\nexport default AutoDownloadEventArgs;"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autoDownloadFailedEventArgs.js","sourceRoot":"","sources":["../../../../src/autoDownloader/eventArgs/autoDownloadFailedEventArgs.ts"],"names":[],"mappings":"","sourcesContent":["interface AutoDownloadFailedEventArgs {\
|
|
1
|
+
{"version":3,"file":"autoDownloadFailedEventArgs.js","sourceRoot":"","sources":["../../../../src/autoDownloader/eventArgs/autoDownloadFailedEventArgs.ts"],"names":[],"mappings":"","sourcesContent":["interface AutoDownloadFailedEventArgs {\n transferId: string,\n reason: string,\n error: Error,\n}\n\nexport default AutoDownloadFailedEventArgs;"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autoDownloadProgressedEventArgs.js","sourceRoot":"","sources":["../../../../src/autoDownloader/eventArgs/autoDownloadProgressedEventArgs.ts"],"names":[],"mappings":"","sourcesContent":["interface AutoDownloadProgressedEventArgs {\
|
|
1
|
+
{"version":3,"file":"autoDownloadProgressedEventArgs.js","sourceRoot":"","sources":["../../../../src/autoDownloader/eventArgs/autoDownloadProgressedEventArgs.ts"],"names":[],"mappings":"","sourcesContent":["interface AutoDownloadProgressedEventArgs {\n transferId: string;\n progressPercentage: number;\n bytesPerSecondAverage: number;\n bytesPerSecondCurrent: number;\n estimatedRemainingTimeInSeconds: number | null;\n downloadedBytes: number;\n}\n\nexport default AutoDownloadProgressedEventArgs;"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autoDownloadStartedEventArgs.js","sourceRoot":"","sources":["../../../../src/autoDownloader/eventArgs/autoDownloadStartedEventArgs.ts"],"names":[],"mappings":"","sourcesContent":["interface AutoDownloadStartedEventArgs {\
|
|
1
|
+
{"version":3,"file":"autoDownloadStartedEventArgs.js","sourceRoot":"","sources":["../../../../src/autoDownloader/eventArgs/autoDownloadStartedEventArgs.ts"],"names":[],"mappings":"","sourcesContent":["interface AutoDownloadStartedEventArgs {\n transferId: string,\n filesCount: number,\n transferredBytesCount: number,\n totalSizeInBytes: number,\n progressInPercentage: number,\n downloadPath: string,\n files: { name: string, downloadPath: string }[],\n subject?: string,\n message?: string,\n}\n\nexport default AutoDownloadStartedEventArgs;"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autoDownloadStartingFailedEventArgs.js","sourceRoot":"","sources":["../../../../src/autoDownloader/eventArgs/autoDownloadStartingFailedEventArgs.ts"],"names":[],"mappings":"","sourcesContent":["interface AutoDownloadStartingFailedEventArgs {\
|
|
1
|
+
{"version":3,"file":"autoDownloadStartingFailedEventArgs.js","sourceRoot":"","sources":["../../../../src/autoDownloader/eventArgs/autoDownloadStartingFailedEventArgs.ts"],"names":[],"mappings":"","sourcesContent":["interface AutoDownloadStartingFailedEventArgs {\n transferId: string,\n filesCount: number,\n totalSizeInBytes: number,\n reason: string,\n error: Error,\n subject?: string,\n message?: string,\n}\n\nexport default AutoDownloadStartingFailedEventArgs;"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autoDownloadUnhealthyEventArgs.js","sourceRoot":"","sources":["../../../../src/autoDownloader/eventArgs/autoDownloadUnhealthyEventArgs.ts"],"names":[],"mappings":"","sourcesContent":["import { HealthMonitorUnhealthyEventArgs } from \"../../index.node.js\";\
|
|
1
|
+
{"version":3,"file":"autoDownloadUnhealthyEventArgs.js","sourceRoot":"","sources":["../../../../src/autoDownloader/eventArgs/autoDownloadUnhealthyEventArgs.ts"],"names":[],"mappings":"","sourcesContent":["import { HealthMonitorUnhealthyEventArgs } from \"../../index.node.js\";\n\ntype AutoDownloadUnhealthyEventArgs = HealthMonitorUnhealthyEventArgs & {\n transferId: string;\n}\n\nexport default AutoDownloadUnhealthyEventArgs;"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkingForNewTransfersStartedEventArgs.js","sourceRoot":"","sources":["../../../../src/autoDownloader/eventArgs/checkingForNewTransfersStartedEventArgs.ts"],"names":[],"mappings":"","sourcesContent":["interface CheckingForNewTransfersStartedEventArgs {\
|
|
1
|
+
{"version":3,"file":"checkingForNewTransfersStartedEventArgs.js","sourceRoot":"","sources":["../../../../src/autoDownloader/eventArgs/checkingForNewTransfersStartedEventArgs.ts"],"names":[],"mappings":"","sourcesContent":["interface CheckingForNewTransfersStartedEventArgs {\n lastCompletedNewTransfersCheck: Date | undefined\n}\n\nexport default CheckingForNewTransfersStartedEventArgs;"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"newTransfersCheckCompletedEventArgs.js","sourceRoot":"","sources":["../../../../src/autoDownloader/eventArgs/newTransfersCheckCompletedEventArgs.ts"],"names":[],"mappings":"","sourcesContent":["interface NewTransfersCheckCompletedEventArgs {\
|
|
1
|
+
{"version":3,"file":"newTransfersCheckCompletedEventArgs.js","sourceRoot":"","sources":["../../../../src/autoDownloader/eventArgs/newTransfersCheckCompletedEventArgs.ts"],"names":[],"mappings":"","sourcesContent":["interface NewTransfersCheckCompletedEventArgs {\n date: Date,\n}\n\nexport default NewTransfersCheckCompletedEventArgs;"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodeAutoDownloaderFactory.js","sourceRoot":"","sources":["../../../../src/autoDownloader/factory/nodeAutoDownloaderFactory.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from 'crypto';\
|
|
1
|
+
{"version":3,"file":"nodeAutoDownloaderFactory.js","sourceRoot":"","sources":["../../../../src/autoDownloader/factory/nodeAutoDownloaderFactory.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from 'crypto';\nimport path from 'path';\n\nimport TransferConcurrencyController from \"../../utils/concurrencyController/transferConcurrencyController.js\";\nimport AutoDownloader from \"../autoDownloader.js\";\nimport NodeApiClient from \"../../utils/api/node/nodeApiClient.js\";\nimport NodeAutoDownloaderStateSerializer from \"../node/nodeAutoDownloaderStateSerializer.js\";\nimport NodeFileSystemService from \"../../utils/fileSystem/node/nodeFileSystemService.js\";\nimport NodeEventsEngine from \"../../utils/events/node/nodeEventsEngine.js\";\nimport NodeTransferDownloaderFactory from \"../node/nodeTransferDownloaderFactory.js\";\nimport DownloadOptions from \"../../downloader/downloadOptions.js\";\nimport NewInboxTransfersRetriever from \"../newInboxTransfersRetriever/newInboxTransfersRetriever.js\";\n\nimport type Logger from \"../../client/loggers/logger.js\";\nimport type EnvironmentVariables from \"../../client/environmentVariables.js\";\nimport type NodeAutoDownloaderFactoryOptions from \"./nodeAutoDownloaderFactoryOptions.js\";\n\nclass NodeAutoDownloaderFactory {\n async createForNode(options: NodeAutoDownloaderFactoryOptions, envValues: EnvironmentVariables, logger: Logger): Promise<AutoDownloader> {\n const eventsEngine = new NodeEventsEngine();\n const concurrencyController = new TransferConcurrencyController(options.maxNumberOfConcurrentAutoDownloads);\n const apiClient = this.getNodeApiClient(envValues, options);\n const newInboxTransfersRetriever = new NewInboxTransfersRetriever(options.downloadForAllUsers, options.periodToRetrieveTransfersInHours, options.portals, apiClient);\n const transferDownloaderFactory = this.getNodeTransferDownloaderFactory(options, envValues, logger);\n const downloadTrackingBaseFolder = this.getDownloadTrackingBaseFolder(options.downloadTrackingBaseFolder, options.downloadTrackingBaseFolderUsername);\n\n const recoverableStateSerializer = await NodeAutoDownloaderStateSerializer.create(downloadTrackingBaseFolder, new NodeFileSystemService(), logger);\n const recoverableState = await recoverableStateSerializer.deserialize();\n\n return new AutoDownloader(options, logger, newInboxTransfersRetriever, concurrencyController, eventsEngine, transferDownloaderFactory, recoverableStateSerializer, recoverableState);\n }\n\n private getNodeApiClient(envValues: EnvironmentVariables, options: NodeAutoDownloaderFactoryOptions) {\n const apiClient = new NodeApiClient(envValues.apiBaseUrl, envValues.source, envValues.sourceDetails, options.apiRequestTotalTimeoutInMs, options.apiRetryLimit);\n apiClient.setLoginToken(options.loginToken);\n return apiClient;\n }\n\n private getNodeTransferDownloaderFactory(options: NodeAutoDownloaderFactoryOptions, envValues: EnvironmentVariables, logger: Logger): NodeTransferDownloaderFactory {\n const downloadOptions: DownloadOptions = this.createTransferDownloaderOptions(options);\n\n return new NodeTransferDownloaderFactory(downloadOptions, envValues, logger);\n }\n\n private createTransferDownloaderOptions(options: NodeAutoDownloaderFactoryOptions): DownloadOptions {\n const downloadOptions = new DownloadOptions();\n\n downloadOptions.logintoken = options.loginToken;\n downloadOptions.downloadFolderTemplate = options.downloadFolderTemplate;\n downloadOptions.downloadTrackingBaseFolder = options.downloadTrackingBaseFolder;\n downloadOptions.progressTickMillis = options.progressTickMillis;\n downloadOptions.momentaryDownloadSpeedTimespanMillis = options.momentaryDownloadSpeedTimespanMillis;\n\n return downloadOptions;\n }\n\n private getDownloadTrackingBaseFolder(downloadTrackingBaseFolder: string, downloadTrackingBaseFolderUsername: string): string {\n const hash = createHash(`sha256`);\n hash.update(downloadTrackingBaseFolderUsername);\n const userNameHash = hash.digest(`hex`);\n\n return path.join(downloadTrackingBaseFolder, userNameHash);\n }\n}\n\nexport default NodeAutoDownloaderFactory;"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodeAutoDownloaderFactoryOptions.js","sourceRoot":"","sources":["../../../../src/autoDownloader/factory/nodeAutoDownloaderFactoryOptions.ts"],"names":[],"mappings":"","sourcesContent":["import type AutoDownloaderOptions from \"../autoDownloaderOptions.js\";\
|
|
1
|
+
{"version":3,"file":"nodeAutoDownloaderFactoryOptions.js","sourceRoot":"","sources":["../../../../src/autoDownloader/factory/nodeAutoDownloaderFactoryOptions.ts"],"names":[],"mappings":"","sourcesContent":["import type AutoDownloaderOptions from \"../autoDownloaderOptions.js\";\n\ninterface NodeAutoDownloaderFactoryOptions extends AutoDownloaderOptions {\n apiRetryLimit: number;\n apiRequestTotalTimeoutInMs: number;\n periodToRetrieveTransfersInHours: number,\n portals: string[],\n downloadForAllUsers: boolean,\n maxNumberOfConcurrentAutoDownloads: number,\n downloadFolderTemplate: string,\n downloadTrackingBaseFolder: string,\n downloadTrackingBaseFolderUsername: string,\n progressTickMillis: number,\n momentaryDownloadSpeedTimespanMillis: number,\n loginToken: string,\n}\n\nexport default NodeAutoDownloaderFactoryOptions;"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"newInboxTransfer.js","sourceRoot":"","sources":["../../../../src/autoDownloader/newInboxTransfersRetriever/newInboxTransfer.ts"],"names":[],"mappings":"","sourcesContent":["interface NewInboxTransfer {\
|
|
1
|
+
{"version":3,"file":"newInboxTransfer.js","sourceRoot":"","sources":["../../../../src/autoDownloader/newInboxTransfersRetriever/newInboxTransfer.ts"],"names":[],"mappings":"","sourcesContent":["interface NewInboxTransfer {\n transferId: string;\n trackId: string | undefined;\n filesCount: number;\n sizeInBytes: number;\n sentDate: number;\n from?: string;\n message?: string;\n subject?: string;\n to?: string[];\n}\n\nexport default NewInboxTransfer;"]}
|
package/dist/src/autoDownloader/newInboxTransfersRetriever/newInboxTransfersRetriever.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"newInboxTransfersRetriever.js","sourceRoot":"","sources":["../../../../src/autoDownloader/newInboxTransfersRetriever/newInboxTransfersRetriever.ts"],"names":[],"mappings":"AAEA,OAAO,mBAAmB,MAAM,2BAA2B,CAAC;AAG5D,MAAM,2BAA2B,GAAG,EAAE,GAAG,IAAI,CAAC;AAE9C,MAAM,0BAA0B;IAC5B,cAAc,CAAqB;IAEnC,oBAAoB,CAAU;IAC9B,UAAU,CAAY;IACtB,iCAAiC,CAAS;IAC1C,QAAQ,CAAW;IAEnB,YAAY,mBAA4B,EAAE,gCAAwC,EAAE,OAAiB,EAAE,SAAoB;QACvH,IAAI,gCAAgC,IAAI,CAAC;YACrC,MAAM,IAAI,mBAAmB,CAAC,2DAA2D,CAAC,CAAC;QAE/F,IAAI,CAAC,oBAAoB,GAAG,mBAAmB,CAAC;QAChD,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,iCAAiC,GAAG,gCAAgC,CAAC;QAC1E,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC5B,CAAC;IAED,IAAI,gCAAgC,CAAC,gCAAwC;QACzE,IAAI,gCAAgC,IAAI,CAAC;YACrC,MAAM,IAAI,mBAAmB,CAAC,2DAA2D,CAAC,CAAC;QAE/F,IAAI,CAAC,iCAAiC,GAAG,gCAAgC,CAAC;QAC1E,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;IACpC,CAAC;IAED,IAAI,OAAO,CAAC,OAAiB;QACzB,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;YACnC,MAAM,IAAI,mBAAmB,CAAC,qCAAqC,CAAC,CAAC;QAEzE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC5B,CAAC;IAED,IAAI,UAAU,CAAC,UAAkB;QAC7B,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,mBAAmB,CAAC,mBAA4B;QAChD,IAAI,CAAC,oBAAoB,GAAG,mBAAmB,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,iBAAkD,EAAE,WAAwB;QAC9F,MAAM,gBAAgB,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;QAE9C,MAAM,OAAO,GAA6B;YACtC,cAAc,EAAE,IAAI,CAAC,oBAAoB;YACzC,aAAa,EAAE,IAAI,CAAC,+BAA+B,EAAE;YACrD,OAAO,EAAE,IAAI,CAAC,QAAQ;SACzB,CAAC;QAEF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAE5E,MAAM,cAAc,GAAG,KAAK;aACvB,SAAS;aACT,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,CAAC,iBAAiB,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;aAC7G,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACP,UAAU,EAAE,CAAC,CAAC,EAAE;YAChB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,UAAU,EAAE,CAAC,CAAC,aAAa,IAAI,CAAC;YAChC,WAAW,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC;YACxB,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,OAAO,EAAE,CAAC,CAAC,OAAO;SACrB,CAAC,CAAC,CAAC;QAER,IAAI,CAAC,cAAc,GAAG,gBAAgB,CAAC;QAEvC,OAAO,cAAc,CAAC;IAC1B,CAAC;IAEO,+BAA+B;QACnC,MAAM,kBAAkB,GAAG,IAAI,CAAC,6BAA6B,EAAE,CAAC;QAEhE,IAAI,CAAC,IAAI,CAAC,cAAc;YACpB,OAAO,kBAAkB,CAAC;QAE9B,MAAM,qBAAqB,GAAG,IAAI,CAAC,gCAAgC,EAAE,CAAC;QAEtE,OAAO,IAAI,CAAC,GAAG,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,CAAC;IAC/D,CAAC;IAEO,6BAA6B;QACjC,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC7B,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAClF,OAAO,SAAS,CAAC,OAAO,EAAE,CAAC;IAC/B,CAAC;IAEO,gCAAgC;QACpC,OAAO,IAAI,CAAC,cAAe,GAAG,2BAA2B,CAAC;IAC9D,CAAC;CACJ;AAED,eAAe,0BAA0B,CAAC","sourcesContent":["import type ApiClient from \"../../utils/api/apiClient.js\";\
|
|
1
|
+
{"version":3,"file":"newInboxTransfersRetriever.js","sourceRoot":"","sources":["../../../../src/autoDownloader/newInboxTransfersRetriever/newInboxTransfersRetriever.ts"],"names":[],"mappings":"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","sourcesContent":["import type ApiClient from \"../../utils/api/apiClient.js\";\nimport type GetInboxTransfersRequest from \"../../utils/api/dtos/getInboxTransfersRequest.js\";\nimport AutoDownloaderError from \"../autoDownloaderError.js\";\nimport type NewInboxTransfer from \"./newInboxTransfer.js\";\n\nconst LastCheckSafeMarginAddition = 60 * 1000;\n\nclass NewInboxTransfersRetriever {\n #lastCheckDate: number | undefined;\n\n #downloadForAllUsers: boolean;\n #apiClient: ApiClient;\n #periodToRetrieveTransfersInHours: number;\n #portals: string[];\n\n constructor(downloadForAllUsers: boolean, periodToRetrieveTransfersInHours: number, portals: string[], apiClient: ApiClient) {\n if (periodToRetrieveTransfersInHours <= 0)\n throw new AutoDownloaderError(`periodToRetrieveTransfersInHours must be a positive value`);\n\n this.#downloadForAllUsers = downloadForAllUsers;\n this.#apiClient = apiClient;\n this.#periodToRetrieveTransfersInHours = periodToRetrieveTransfersInHours;\n this.#portals = portals;\n }\n\n set periodToRetrieveTransfersInHours(periodToRetrieveTransfersInHours: number) {\n if (periodToRetrieveTransfersInHours <= 0)\n throw new AutoDownloaderError(`periodToRetrieveTransfersInHours must be a positive value`);\n\n this.#periodToRetrieveTransfersInHours = periodToRetrieveTransfersInHours;\n this.#lastCheckDate = undefined;\n }\n\n set portals(portals: string[]) {\n if (!portals || !Array.isArray(portals))\n throw new AutoDownloaderError(`portals must be an array of strings`);\n\n this.#portals = portals;\n }\n\n set loginToken(loginToken: string) {\n this.#apiClient.setLoginToken(loginToken);\n }\n\n set downloadForAllUsers(downloadForAllUsers: boolean) {\n this.#downloadForAllUsers = downloadForAllUsers;\n }\n\n async getNewTransfers(isTransferHandled: (transferId: string) => boolean, abortSignal: AbortSignal): Promise<NewInboxTransfer[]> {\n const currentCheckDate = new Date().getTime();\n\n const request: GetInboxTransfersRequest = {\n getForAllUsers: this.#downloadForAllUsers,\n sinceUnixTime: this.getSinceUnixTimeApiRequestParam(),\n portals: this.#portals,\n };\n\n const inbox = await this.#apiClient.getInboxTransfers(request, abortSignal);\n\n const inboxTransfers = inbox\n .transfers\n .filter(t => !t.blockdownloads && !t.passwordprotected && !t.isexpired && !t.e2ee && !isTransferHandled(t.id))\n .map(t => ({\n transferId: t.id,\n trackId: t.trackid,\n filesCount: t.numberoffiles || 0,\n sizeInBytes: t.size || 0,\n sentDate: t.sentdate,\n from: t.from,\n to: t.to,\n subject: t.subject,\n message: t.message,\n }));\n\n this.#lastCheckDate = currentCheckDate;\n\n return inboxTransfers;\n }\n\n private getSinceUnixTimeApiRequestParam(): number {\n const sinceBasedOnPeriod = this.getSinceUnixTimeBasedOnPeriod();\n\n if (!this.#lastCheckDate)\n return sinceBasedOnPeriod;\n\n const sinceBasedOnLastCheck = this.getSinceUnixTimeBasedOnLastCheck();\n\n return Math.max(sinceBasedOnLastCheck, sinceBasedOnPeriod);\n }\n\n private getSinceUnixTimeBasedOnPeriod() {\n const sinceDate = new Date();\n sinceDate.setHours(sinceDate.getHours() - this.#periodToRetrieveTransfersInHours);\n return sinceDate.getTime();\n }\n\n private getSinceUnixTimeBasedOnLastCheck() {\n return this.#lastCheckDate! - LastCheckSafeMarginAddition;\n }\n}\n\nexport default NewInboxTransfersRetriever;"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodeAutoDownloaderStateSerializer.js","sourceRoot":"","sources":["../../../../src/autoDownloader/node/nodeAutoDownloaderStateSerializer.ts"],"names":[],"mappings":"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","sourcesContent":["import TransferConcurrencyController from \"../../utils/concurrencyController/transferConcurrencyController.js\";\r\n\r\nimport { jsonMapReplacer, jsonMapReviver } from \"../../utils/jsonParsing.js\";\r\nimport { promiseAll } from \"../../utils/promiseAll.js\";\r\n\r\nimport type ConcurrencyController from \"../../utils/concurrencyController/concurrencyController.js\";\r\nimport type AutoDownloaderStateSerializer from \"../autoDownloaderStateSerializer.js\";\r\nimport type AutoDownloaderRecoverableState from \"../state/autoDownloaderRecoverableState.js\";\r\nimport type Logger from \"../../client/loggers/logger.js\";\r\nimport type FileSystemService from '../../utils/fileSystem/fileSystemService.js';\r\n\r\nclass NodeAutoDownloaderStateSerializer implements AutoDownloaderStateSerializer {\r\n #logger: Logger;\r\n #fileSystemService: FileSystemService;\r\n\r\n #stateTempFilePath: string;\r\n #stateFilePath: string;\r\n\r\n #concurrencyController: ConcurrencyController;\r\n\r\n private constructor(persistenceFolder: string, fileSystemService: FileSystemService, logger: Logger) {\r\n this.#logger = logger;\r\n this.#fileSystemService = fileSystemService;\r\n\r\n this.#stateTempFilePath = fileSystemService.pathJoin(persistenceFolder, `autoDownloaderState.tmp`);\r\n this.#stateFilePath = fileSystemService.pathJoin(persistenceFolder, `autoDownloaderState.json`);\r\n\r\n this.#concurrencyController = new TransferConcurrencyController(1);\r\n }\r\n\r\n static async create(persistenceFolder: string, fileSystemService: FileSystemService, logger: Logger) {\r\n const isPersistenceFolderExisting = await fileSystemService.pathExists(persistenceFolder, true);\r\n\r\n if (!isPersistenceFolderExisting)\r\n await fileSystemService.createFolder(persistenceFolder);\r\n\r\n const serializer = new NodeAutoDownloaderStateSerializer(persistenceFolder, fileSystemService, logger);\r\n\r\n logger.logInfo(`AutoDownloader State Serializer created. Persistance folder: ${persistenceFolder}`);\r\n\r\n return serializer;\r\n }\r\n\r\n async removeState(): Promise<void> {\r\n this.#logger.logInfo(`AutoDownloader State Serializer removeState called`);\r\n\r\n const release = await this.#concurrencyController.acquire();\r\n\r\n try {\r\n const removeJsonStatePromise = this.#fileSystemService.deleteFile(this.#stateFilePath);\r\n const removeTempStatePromise = this.#fileSystemService.deleteFile(this.#stateTempFilePath);\r\n\r\n await promiseAll([removeJsonStatePromise, removeTempStatePromise]);\r\n }\r\n catch (error) {\r\n this.#logger.logError(error as Error, `Auto downloader removeState error`);\r\n }\r\n finally {\r\n release();\r\n }\r\n }\r\n\r\n async serialize(recoverableState: AutoDownloaderRecoverableState): Promise<void> {\r\n this.#logger.logDebug(`AutoDownloader State Serializer serialize called`);\r\n\r\n const release = await this.#concurrencyController.acquire();\r\n\r\n try {\r\n const stringifiedState = JSON.stringify(recoverableState, jsonMapReplacer, 2);\r\n\r\n await this.#fileSystemService.writeFile(this.#stateTempFilePath, stringifiedState);\r\n await this.#fileSystemService.renameFile(this.#stateTempFilePath, this.#stateFilePath);\r\n }\r\n catch (error) {\r\n this.#logger.logError(error as Error, `Auto downloader state serialization error`);\r\n }\r\n finally {\r\n release();\r\n }\r\n }\r\n\r\n async deserialize(): Promise<AutoDownloaderRecoverableState | null> {\r\n this.#logger.logInfo(`AutoDownloader State Serializer deserialize called`);\r\n\r\n const release = await this.#concurrencyController.acquire();\r\n\r\n try {\r\n let recoverableState = await this.tryDeserializeState(this.#stateFilePath);\r\n\r\n if (this.isAutoDownloaderRecoverableState(recoverableState)) {\r\n this.#logger.logInfo(`AutoDownloader State Serializer deserialize deserialized ${this.#stateFilePath}`);\r\n return recoverableState;\r\n }\r\n\r\n recoverableState = await this.tryDeserializeState(this.#stateTempFilePath);\r\n\r\n if (this.isAutoDownloaderRecoverableState(recoverableState)) {\r\n this.#logger.logInfo(`AutoDownloader State Serializer deserialize deserialized ${this.#stateTempFilePath}`);\r\n return recoverableState;\r\n }\r\n\r\n this.#logger.logInfo(`AutoDownloader State Serializer deserialize didn't deserialize any state`);\r\n\r\n return null;\r\n }\r\n catch (error) {\r\n this.#logger.logError(error as Error, `Auto downloader state deserialization error`);\r\n throw error;\r\n }\r\n finally {\r\n release();\r\n }\r\n }\r\n\r\n private async tryDeserializeState(filePath: string): Promise<unknown> {\r\n try {\r\n const fileExists = await this.#fileSystemService.pathExists(filePath);\r\n\r\n if (!fileExists)\r\n return null;\r\n\r\n const fileContent = await this.#fileSystemService.readFileAsString(filePath);\r\n\r\n return JSON.parse(fileContent, jsonMapReviver);\r\n }\r\n catch {\r\n return null;\r\n }\r\n }\r\n\r\n private isAutoDownloaderRecoverableState(possiblyRecoverableState: unknown): possiblyRecoverableState is AutoDownloaderRecoverableState {\r\n if (!possiblyRecoverableState)\r\n return false;\r\n\r\n const recoverableState = possiblyRecoverableState as AutoDownloaderRecoverableState;\r\n\r\n return Boolean(recoverableState.canceledTransfers)\r\n && Boolean(recoverableState.completedTransfers)\r\n && Boolean(recoverableState.failedTransfers)\r\n && Boolean(recoverableState.runningTransfers);\r\n }\r\n}\r\n\r\nexport default NodeAutoDownloaderStateSerializer;\r\n"]}
|
|
1
|
+
{"version":3,"file":"nodeAutoDownloaderStateSerializer.js","sourceRoot":"","sources":["../../../../src/autoDownloader/node/nodeAutoDownloaderStateSerializer.ts"],"names":[],"mappings":"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","sourcesContent":["import TransferConcurrencyController from \"../../utils/concurrencyController/transferConcurrencyController.js\";\n\nimport { jsonMapReplacer, jsonMapReviver } from \"../../utils/jsonParsing.js\";\nimport { promiseAll } from \"../../utils/promiseAll.js\";\n\nimport type ConcurrencyController from \"../../utils/concurrencyController/concurrencyController.js\";\nimport type AutoDownloaderStateSerializer from \"../autoDownloaderStateSerializer.js\";\nimport type AutoDownloaderRecoverableState from \"../state/autoDownloaderRecoverableState.js\";\nimport type Logger from \"../../client/loggers/logger.js\";\nimport type FileSystemService from '../../utils/fileSystem/fileSystemService.js';\n\nclass NodeAutoDownloaderStateSerializer implements AutoDownloaderStateSerializer {\n #logger: Logger;\n #fileSystemService: FileSystemService;\n\n #stateTempFilePath: string;\n #stateFilePath: string;\n\n #concurrencyController: ConcurrencyController;\n\n private constructor(persistenceFolder: string, fileSystemService: FileSystemService, logger: Logger) {\n this.#logger = logger;\n this.#fileSystemService = fileSystemService;\n\n this.#stateTempFilePath = fileSystemService.pathJoin(persistenceFolder, `autoDownloaderState.tmp`);\n this.#stateFilePath = fileSystemService.pathJoin(persistenceFolder, `autoDownloaderState.json`);\n\n this.#concurrencyController = new TransferConcurrencyController(1);\n }\n\n static async create(persistenceFolder: string, fileSystemService: FileSystemService, logger: Logger) {\n const isPersistenceFolderExisting = await fileSystemService.pathExists(persistenceFolder, true);\n\n if (!isPersistenceFolderExisting)\n await fileSystemService.createFolder(persistenceFolder);\n\n const serializer = new NodeAutoDownloaderStateSerializer(persistenceFolder, fileSystemService, logger);\n\n logger.logInfo(`AutoDownloader State Serializer created. Persistance folder: ${persistenceFolder}`);\n\n return serializer;\n }\n\n async removeState(): Promise<void> {\n this.#logger.logInfo(`AutoDownloader State Serializer removeState called`);\n\n const release = await this.#concurrencyController.acquire();\n\n try {\n const removeJsonStatePromise = this.#fileSystemService.deleteFile(this.#stateFilePath);\n const removeTempStatePromise = this.#fileSystemService.deleteFile(this.#stateTempFilePath);\n\n await promiseAll([removeJsonStatePromise, removeTempStatePromise]);\n }\n catch (error) {\n this.#logger.logError(error as Error, `Auto downloader removeState error`);\n }\n finally {\n release();\n }\n }\n\n async serialize(recoverableState: AutoDownloaderRecoverableState): Promise<void> {\n this.#logger.logDebug(`AutoDownloader State Serializer serialize called`);\n\n const release = await this.#concurrencyController.acquire();\n\n try {\n const stringifiedState = JSON.stringify(recoverableState, jsonMapReplacer, 2);\n\n await this.#fileSystemService.writeFile(this.#stateTempFilePath, stringifiedState);\n await this.#fileSystemService.renameFile(this.#stateTempFilePath, this.#stateFilePath);\n }\n catch (error) {\n this.#logger.logError(error as Error, `Auto downloader state serialization error`);\n }\n finally {\n release();\n }\n }\n\n async deserialize(): Promise<AutoDownloaderRecoverableState | null> {\n this.#logger.logInfo(`AutoDownloader State Serializer deserialize called`);\n\n const release = await this.#concurrencyController.acquire();\n\n try {\n let recoverableState = await this.tryDeserializeState(this.#stateFilePath);\n\n if (this.isAutoDownloaderRecoverableState(recoverableState)) {\n this.#logger.logInfo(`AutoDownloader State Serializer deserialize deserialized ${this.#stateFilePath}`);\n return recoverableState;\n }\n\n recoverableState = await this.tryDeserializeState(this.#stateTempFilePath);\n\n if (this.isAutoDownloaderRecoverableState(recoverableState)) {\n this.#logger.logInfo(`AutoDownloader State Serializer deserialize deserialized ${this.#stateTempFilePath}`);\n return recoverableState;\n }\n\n this.#logger.logInfo(`AutoDownloader State Serializer deserialize didn't deserialize any state`);\n\n return null;\n }\n catch (error) {\n this.#logger.logError(error as Error, `Auto downloader state deserialization error`);\n throw error;\n }\n finally {\n release();\n }\n }\n\n private async tryDeserializeState(filePath: string): Promise<unknown> {\n try {\n const fileExists = await this.#fileSystemService.pathExists(filePath);\n\n if (!fileExists)\n return null;\n\n const fileContent = await this.#fileSystemService.readFileAsString(filePath);\n\n return JSON.parse(fileContent, jsonMapReviver);\n }\n catch {\n return null;\n }\n }\n\n private isAutoDownloaderRecoverableState(possiblyRecoverableState: unknown): possiblyRecoverableState is AutoDownloaderRecoverableState {\n if (!possiblyRecoverableState)\n return false;\n\n const recoverableState = possiblyRecoverableState as AutoDownloaderRecoverableState;\n\n return Boolean(recoverableState.canceledTransfers)\n && Boolean(recoverableState.completedTransfers)\n && Boolean(recoverableState.failedTransfers)\n && Boolean(recoverableState.runningTransfers);\n }\n}\n\nexport default NodeAutoDownloaderStateSerializer;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodeTransferDownloaderFactory.js","sourceRoot":"","sources":["../../../../src/autoDownloader/node/nodeTransferDownloaderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,MAAM,wDAAwD,CAAC;AAO5F,MAAM,6BAA6B;IAC/B,QAAQ,CAAkB;IAC1B,UAAU,CAAuB;IACjC,OAAO,CAAS;IAEhB,YAAY,OAAwB,EAAE,SAA+B,EAAE,MAAc;QACjF,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IAC1B,CAAC;IAED,IAAI,sBAAsB,CAAC,KAAa;QACpC,IAAI,CAAC,QAAQ,CAAC,sBAAsB,GAAG,KAAK,CAAC;IACjD,CAAC;IAED,MAAM;QACF,OAAO,IAAI,sBAAsB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACpF,CAAC;CACJ;AAED,eAAe,6BAA6B,CAAC","sourcesContent":["import NodeTransferDownloader from \"../../client/downloader/node/nodeTransferDownloader.js\";\
|
|
1
|
+
{"version":3,"file":"nodeTransferDownloaderFactory.js","sourceRoot":"","sources":["../../../../src/autoDownloader/node/nodeTransferDownloaderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,MAAM,wDAAwD,CAAC;AAO5F,MAAM,6BAA6B;IAC/B,QAAQ,CAAkB;IAC1B,UAAU,CAAuB;IACjC,OAAO,CAAS;IAEhB,YAAY,OAAwB,EAAE,SAA+B,EAAE,MAAc;QACjF,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IAC1B,CAAC;IAED,IAAI,sBAAsB,CAAC,KAAa;QACpC,IAAI,CAAC,QAAQ,CAAC,sBAAsB,GAAG,KAAK,CAAC;IACjD,CAAC;IAED,MAAM;QACF,OAAO,IAAI,sBAAsB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACpF,CAAC;CACJ;AAED,eAAe,6BAA6B,CAAC","sourcesContent":["import NodeTransferDownloader from \"../../client/downloader/node/nodeTransferDownloader.js\";\n\nimport type EnvironmentVariables from \"../../client/environmentVariables.js\";\nimport type Logger from \"../../client/loggers/logger.js\";\nimport type DownloadOptions from \"../../downloader/downloadOptions.js\";\nimport type TransferDownloaderFactory from \"../transferDownloaderFactory.js\";\n\nclass NodeTransferDownloaderFactory implements TransferDownloaderFactory {\n #options: DownloadOptions;\n #envValues: EnvironmentVariables;\n #logger: Logger;\n\n constructor(options: DownloadOptions, envValues: EnvironmentVariables, logger: Logger) {\n this.#options = options;\n this.#envValues = envValues;\n this.#logger = logger;\n }\n\n set downloadFolderTemplate(value: string) {\n this.#options.downloadFolderTemplate = value;\n }\n\n create(): NodeTransferDownloader {\n return new NodeTransferDownloader(this.#options, this.#envValues, this.#logger);\n }\n}\n\nexport default NodeTransferDownloaderFactory;"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autoDownloaderRecoverableState.js","sourceRoot":"","sources":["../../../../src/autoDownloader/state/autoDownloaderRecoverableState.ts"],"names":[],"mappings":"","sourcesContent":["import type AutoDownloaderStateRecoverableTransfer from \"./autoDownloaderStateRecoverableTransfer.js\";\
|
|
1
|
+
{"version":3,"file":"autoDownloaderRecoverableState.js","sourceRoot":"","sources":["../../../../src/autoDownloader/state/autoDownloaderRecoverableState.ts"],"names":[],"mappings":"","sourcesContent":["import type AutoDownloaderStateRecoverableTransfer from \"./autoDownloaderStateRecoverableTransfer.js\";\n\ninterface AutoDownloaderRecoverableState {\n lastCompletedNewTransfersCheckDate?: Readonly<number>,\n toBeRecoveredTransfers: ReadonlyMap<string, AutoDownloaderStateRecoverableTransfer>,\n runningTransfers: ReadonlyMap<string, AutoDownloaderStateRecoverableTransfer>,\n failedTransfers: ReadonlyMap<string, AutoDownloaderStateRecoverableTransfer>,\n completedTransfers: ReadonlySet<string>,\n canceledTransfers: ReadonlySet<string>,\n}\n\nexport default AutoDownloaderRecoverableState;"]}
|
|
@@ -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\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
|
+
{"version":3,"file":"autoDownloaderState.js","sourceRoot":"","sources":["../../../../src/autoDownloader/state/autoDownloaderState.ts"],"names":[],"mappings":"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","sourcesContent":["import AutoDownloaderEvent from \"../autoDownloaderEvent.js\";\nimport AutoDownloaderError from \"../autoDownloaderError.js\";\nimport TransferStatus from \"../../utils/types/transferStatus.js\";\n\nimport type AutoDownloadUnhealthyEventArgs from \"../eventArgs/autoDownloadUnhealthyEventArgs.js\";\nimport type HealthMonitorUnhealthyEventArgs from \"../../client/healthMonitor/events/eventArgs/healthMonitorUnhealthyEventArgs.js\";\nimport type EventsEngine from \"../../utils/events/eventsEngine.js\";\nimport type NewTransfersCheckCompletedEventArgs from \"../eventArgs/newTransfersCheckCompletedEventArgs.js\";\nimport type AutoDownloadFailedEventArgs from \"../eventArgs/autoDownloadFailedEventArgs.js\";\nimport type TransferDownloader from \"../../client/downloader/transferDownloader.js\";\nimport type AutoDownloadStartedEventArgs from \"../eventArgs/autoDownloadStartedEventArgs.js\";\nimport type DownloadEventArgs from \"../../downloader/eventArgs/downloadEventArgs.js\";\nimport type AutoDownloadEventArgs from \"../eventArgs/autoDownloadEventArgs.js\";\nimport type AutoDownloadProgressedEventArgs from \"../eventArgs/autoDownloadProgressedEventArgs.js\";\nimport type AutoDownloaderRecoverableState from \"./autoDownloaderRecoverableState.js\";\nimport type AutoDownloaderStateRunningTransfer from \"./autoDownloaderStateRunningTransfer.js\";\nimport type AutoDownloaderStateRecoverableTransfer from \"./autoDownloaderStateRecoverableTransfer.js\";\nimport type NewInboxTransfer from \"../newInboxTransfersRetriever/newInboxTransfer.js\";\nimport type AutoDownloadStartingFailedEventArgs from \"../eventArgs/autoDownloadStartingFailedEventArgs.js\";\n\nclass AutoDownloaderState {\n #eventsEngine: EventsEngine;\n\n #lastCompletedNewTransfersCheck?: Date;\n\n #toBeRecoveredTransfers = new Map<string, AutoDownloaderStateRecoverableTransfer>();\n #runningTransfers = new Map<string, AutoDownloaderStateRunningTransfer>();\n #failedTransfers = new Map<string, AutoDownloaderStateRecoverableTransfer>();\n #canceledTransfers = new Set<string>();\n #completedTransfers = new Set<string>();\n\n #recoverableStateObservers = new Set<(recoverableState: AutoDownloaderRecoverableState) => void>();\n\n get lastCompletedNewTransfersCheck(): Date | undefined {\n return this.#lastCompletedNewTransfersCheck;\n }\n\n get isAnyTransferRunning(): boolean {\n return Array\n .from(this.#runningTransfers.values())\n .filter(t => t.downloader.status === TransferStatus.Running\n || t.downloader.status === TransferStatus.Pausing\n || t.downloader.status === TransferStatus.Aborting\n || t.downloader.status === TransferStatus.Canceling)\n .length > 0;\n }\n\n get toBeRecoveredTransfers(): ReadonlyMap<string, AutoDownloaderStateRecoverableTransfer> {\n return this.#toBeRecoveredTransfers;\n }\n\n get runningTransfers(): ReadonlySet<string> {\n return new Set(this.#runningTransfers.keys());\n }\n\n get failedTransfers(): ReadonlyMap<string, AutoDownloaderStateRecoverableTransfer> {\n return this.#failedTransfers;\n }\n\n get canceledTransfers(): ReadonlySet<string> {\n return this.#canceledTransfers;\n }\n\n get completedTransfers(): ReadonlySet<string> {\n return this.#completedTransfers;\n }\n\n constructor(eventsEngine: EventsEngine) {\n this.#eventsEngine = eventsEngine;\n }\n\n recover(recoverableState: AutoDownloaderRecoverableState) {\n if (recoverableState.lastCompletedNewTransfersCheckDate)\n this.#lastCompletedNewTransfersCheck = new Date(recoverableState.lastCompletedNewTransfersCheckDate);\n\n recoverableState.completedTransfers.forEach(t => this.#completedTransfers.add(t));\n recoverableState.canceledTransfers.forEach(t => this.#canceledTransfers.add(t));\n\n recoverableState.toBeRecoveredTransfers.forEach((value, key) => this.#toBeRecoveredTransfers.set(key, value));\n recoverableState.runningTransfers.forEach((value, key) => this.#toBeRecoveredTransfers.set(key, value));\n recoverableState.failedTransfers.forEach((value, key) => this.#toBeRecoveredTransfers.set(key, value));\n }\n\n addRecoverableStateObserver(observer: (recoverableState: AutoDownloaderRecoverableState) => void) {\n this.#recoverableStateObservers.add(observer);\n }\n\n removeAllRecoverableStateObservers() {\n this.#recoverableStateObservers.clear();\n }\n\n private notifyRecoverableStateHasChanged() {\n const recoverableState = this.getRecoverableState();\n this.#recoverableStateObservers.forEach(observer => observer(recoverableState));\n }\n\n private getRecoverableState(): AutoDownloaderRecoverableState {\n const recoverableRunningTransfers: Map<string, AutoDownloaderStateRecoverableTransfer> = new Map(\n Array\n .from(this.#runningTransfers.entries())\n .map(entry => [entry[0], { downloadId: entry[1].downloader.downloadId, data: entry[1].data }]),\n );\n\n return {\n lastCompletedNewTransfersCheckDate: this.#lastCompletedNewTransfersCheck?.getTime(),\n toBeRecoveredTransfers: this.#toBeRecoveredTransfers,\n runningTransfers: recoverableRunningTransfers,\n failedTransfers: this.#failedTransfers,\n canceledTransfers: this.#canceledTransfers,\n completedTransfers: this.#completedTransfers,\n };\n }\n\n getRunningTransferDownloader(transferId: string): TransferDownloader {\n const runningTransfer = this.#runningTransfers.get(transferId);\n\n if (!runningTransfer)\n throw new AutoDownloaderError(`Transfer downloader for transfer having id = ${transferId} doesn't exist`);\n\n return runningTransfer.downloader;\n }\n\n isTransferHandled(transferId: string): boolean {\n return this.#runningTransfers.has(transferId)\n || this.#completedTransfers.has(transferId)\n || this.#canceledTransfers.has(transferId)\n || this.#failedTransfers.has(transferId)\n || this.#toBeRecoveredTransfers.has(transferId);\n }\n\n newTransfersCheckCompleted() {\n this.#lastCompletedNewTransfersCheck = new Date();\n\n this.notifyRecoverableStateHasChanged();\n\n const eventArgs: NewTransfersCheckCompletedEventArgs = { date: this.#lastCompletedNewTransfersCheck };\n this.#eventsEngine.emit(AutoDownloaderEvent.NewTransfersCheckCompleted, eventArgs);\n }\n\n transferRecovered(recoveredTransfer: NewInboxTransfer, downloader: TransferDownloader) {\n const recoveredTransferMapEntry = this.#toBeRecoveredTransfers.get(recoveredTransfer.transferId);\n\n if (recoveredTransferMapEntry)\n this.#toBeRecoveredTransfers.delete(recoveredTransfer.transferId);\n\n this.transferStarted(recoveredTransfer, downloader);\n }\n\n transferStarted(transfer: NewInboxTransfer, downloader: TransferDownloader) {\n this.#runningTransfers.set(transfer.transferId, { downloader, data: transfer });\n\n this.notifyRecoverableStateHasChanged();\n\n const initialState = downloader.state!;\n\n const eventArgs: AutoDownloadStartedEventArgs = {\n transferId: transfer.transferId,\n filesCount: transfer.filesCount,\n totalSizeInBytes: transfer.sizeInBytes,\n message: transfer.message,\n subject: transfer.subject,\n downloadPath: initialState.downloadBaseFolder,\n progressInPercentage: initialState.progressPercent,\n transferredBytesCount: initialState.downloadedBytes,\n files: initialState.files!.map(f => ({ name: f.name, downloadPath: f.downloadPath })),\n };\n\n this.#eventsEngine.emit(AutoDownloaderEvent.DownloadStarted, eventArgs);\n }\n\n transferRecoveryFailed(transfer: NewInboxTransfer, error: Error, reason: string) {\n const recoveredTransferMapEntry = this.#toBeRecoveredTransfers.get(transfer.transferId);\n\n if (recoveredTransferMapEntry)\n this.#toBeRecoveredTransfers.delete(transfer.transferId);\n\n this.transferStartingFailed(transfer, error, reason);\n }\n\n transferStartingFailed(transfer: NewInboxTransfer, error: Error, reason: string) {\n this.#failedTransfers.set(transfer.transferId, { data: transfer });\n\n this.notifyRecoverableStateHasChanged();\n\n const eventArgs: AutoDownloadStartingFailedEventArgs = {\n transferId: transfer.transferId,\n filesCount: transfer.filesCount,\n totalSizeInBytes: transfer.sizeInBytes,\n message: transfer.message,\n subject: transfer.subject,\n error,\n reason,\n };\n\n this.#eventsEngine.emit(AutoDownloaderEvent.DownloadStartingFailed, eventArgs);\n }\n\n transferFailed(transferId: string, error: Error, reason: string) {\n const runningTransfer = this.#runningTransfers.get(transferId);\n\n if (runningTransfer) {\n this.#runningTransfers.delete(transferId);\n this.#failedTransfers.set(transferId, { downloadId: runningTransfer.downloader.downloadId, data: runningTransfer.data });\n }\n\n this.notifyRecoverableStateHasChanged();\n\n const eventArgs: AutoDownloadFailedEventArgs = { transferId, error, reason };\n this.#eventsEngine.emit(AutoDownloaderEvent.DownloadFailed, eventArgs);\n }\n\n transferAborted(transferId: string): void {\n const runningTransfer = this.#runningTransfers.get(transferId);\n\n if (runningTransfer)\n this.#runningTransfers.delete(transferId);\n\n const failedTransfer = this.#failedTransfers.get(transferId);\n\n if (failedTransfer)\n this.#failedTransfers.delete(transferId);\n\n this.#canceledTransfers.add(transferId);\n\n this.notifyRecoverableStateHasChanged();\n\n this.emitBasicEvent(transferId, AutoDownloaderEvent.DownloadAborted);\n }\n\n transferCompleted(transferId: string) {\n this.#runningTransfers.delete(transferId);\n this.#completedTransfers.add(transferId);\n\n this.notifyRecoverableStateHasChanged();\n\n this.emitBasicEvent(transferId, AutoDownloaderEvent.DownloadCompleted);\n }\n\n transferProgressed(transferId: string, downloaderEventArgs: DownloadEventArgs): void {\n const eventArgs: AutoDownloadProgressedEventArgs = {\n transferId,\n bytesPerSecondAverage: downloaderEventArgs.bytesPerSecondAverage,\n bytesPerSecondCurrent: downloaderEventArgs.bytesPerSecondCurrent,\n downloadedBytes: downloaderEventArgs.downloadedBytes,\n estimatedRemainingTimeInSeconds: downloaderEventArgs.estimatedRemainingTimeSeconds,\n progressPercentage: downloaderEventArgs.progressPercent,\n };\n\n this.#eventsEngine.emit(AutoDownloaderEvent.DownloadProgressed, eventArgs);\n }\n\n transferResumed(transferId: string): void {\n this.emitBasicEvent(transferId, AutoDownloaderEvent.DownloadResumed);\n }\n\n transferAborting(transferId: string): void {\n this.emitBasicEvent(transferId, AutoDownloaderEvent.DownloadAborting);\n }\n\n transferPaused(transferId: string) {\n this.emitBasicEvent(transferId, AutoDownloaderEvent.DownloadPaused);\n }\n\n transferPausing(transferId: string) {\n this.emitBasicEvent(transferId, AutoDownloaderEvent.DownloadPausing);\n }\n\n transferStopped(transferId: string) {\n this.emitBasicEvent(transferId, AutoDownloaderEvent.DownloadStopped);\n }\n\n transferStopping(transferId: string) {\n this.emitBasicEvent(transferId, AutoDownloaderEvent.DownloadStopping);\n }\n\n transferHealthy(transferId: string): void {\n this.emitBasicEvent(transferId, AutoDownloaderEvent.DownloadHealthy);\n }\n\n transferUnhealthy(transferId: string, downloaderEventArgs: HealthMonitorUnhealthyEventArgs): void {\n const eventArgs: AutoDownloadUnhealthyEventArgs = {\n transferId,\n ...downloaderEventArgs,\n };\n\n this.#eventsEngine.emit(AutoDownloaderEvent.DownloadUnealthy, eventArgs);\n }\n\n private emitBasicEvent(transferId: string, event: AutoDownloaderEvent) {\n const eventArgs: AutoDownloadEventArgs = { transferId };\n this.#eventsEngine.emit(event, eventArgs);\n }\n}\n\nexport default AutoDownloaderState;"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autoDownloaderStateRecoverableTransfer.js","sourceRoot":"","sources":["../../../../src/autoDownloader/state/autoDownloaderStateRecoverableTransfer.ts"],"names":[],"mappings":"","sourcesContent":["import type NewInboxTransfer from \"../newInboxTransfersRetriever/newInboxTransfer.js\";\
|
|
1
|
+
{"version":3,"file":"autoDownloaderStateRecoverableTransfer.js","sourceRoot":"","sources":["../../../../src/autoDownloader/state/autoDownloaderStateRecoverableTransfer.ts"],"names":[],"mappings":"","sourcesContent":["import type NewInboxTransfer from \"../newInboxTransfersRetriever/newInboxTransfer.js\";\n\ninterface AutoDownloaderStateRecoverableTransfer {\n downloadId?: string,\n data: NewInboxTransfer,\n}\n\nexport default AutoDownloaderStateRecoverableTransfer;"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autoDownloaderStateRunningTransfer.js","sourceRoot":"","sources":["../../../../src/autoDownloader/state/autoDownloaderStateRunningTransfer.ts"],"names":[],"mappings":"","sourcesContent":["import type TransferDownloader from \"../../client/downloader/transferDownloader.js\";\
|
|
1
|
+
{"version":3,"file":"autoDownloaderStateRunningTransfer.js","sourceRoot":"","sources":["../../../../src/autoDownloader/state/autoDownloaderStateRunningTransfer.ts"],"names":[],"mappings":"","sourcesContent":["import type TransferDownloader from \"../../client/downloader/transferDownloader.js\";\nimport type NewInboxTransfer from \"../newInboxTransfersRetriever/newInboxTransfer.js\";\n\ninterface AutoDownloaderStateRunningTransfer {\n downloader: TransferDownloader,\n data: NewInboxTransfer,\n}\n\nexport default AutoDownloaderStateRunningTransfer;"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autoDownloaderStateSnapshot.js","sourceRoot":"","sources":["../../../../src/autoDownloader/state/autoDownloaderStateSnapshot.ts"],"names":[],"mappings":"","sourcesContent":["interface AutoDownloaderStateSnapshot {\
|
|
1
|
+
{"version":3,"file":"autoDownloaderStateSnapshot.js","sourceRoot":"","sources":["../../../../src/autoDownloader/state/autoDownloaderStateSnapshot.ts"],"names":[],"mappings":"","sourcesContent":["interface AutoDownloaderStateSnapshot {\n lastCompletedNewTransfersCheck?: Readonly<Date>,\n runningTransfers: ReadonlySet<string>,\n completedTransfers: ReadonlySet<string>,\n failedTransfers: ReadonlySet<string>,\n canceledTransfers: ReadonlySet<string>,\n}\n\nexport default AutoDownloaderStateSnapshot;"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transferDownloaderFactory.js","sourceRoot":"","sources":["../../../src/autoDownloader/transferDownloaderFactory.ts"],"names":[],"mappings":"","sourcesContent":["import type TransferDownloader from \"../client/downloader/transferDownloader.js\";\
|
|
1
|
+
{"version":3,"file":"transferDownloaderFactory.js","sourceRoot":"","sources":["../../../src/autoDownloader/transferDownloaderFactory.ts"],"names":[],"mappings":"","sourcesContent":["import type TransferDownloader from \"../client/downloader/transferDownloader.js\";\n\ninterface TransferDownloaderFactory {\n downloadFolderTemplate: string;\n create(): TransferDownloader;\n}\n\nexport default TransferDownloaderFactory;"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autoDownloaderNewTransferHandler.js","sourceRoot":"","sources":["../../../../src/autoDownloader/transferHandler/autoDownloaderNewTransferHandler.ts"],"names":[],"mappings":"AAAA,OAAO,iCAAiC,MAAM,wCAAwC,CAAC;AAOvF,MAAM,gCAAiC,SAAQ,iCAAiC;IACzD,KAAK,CAAC,2BAA2B,CAAC,UAA8B;QAC/E,MAAM,OAAO,GAAoB;YAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU;YAClC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO;SACjC,CAAC;QAEF,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAEhE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAEtD,OAAO,YAAY,CAAC;IACxB,CAAC;IAEkB,sBAAsB,CAAC,QAA0B,EAAE,KAAY,EAAE,MAAc;QAC9F,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC/D,CAAC;CACJ;AAED,eAAe,gCAAgC,CAAC","sourcesContent":["import AutoDownloaderTransferHandlerBase from \"./autoDownloaderTransferHandlerBase.js\";\
|
|
1
|
+
{"version":3,"file":"autoDownloaderNewTransferHandler.js","sourceRoot":"","sources":["../../../../src/autoDownloader/transferHandler/autoDownloaderNewTransferHandler.ts"],"names":[],"mappings":"AAAA,OAAO,iCAAiC,MAAM,wCAAwC,CAAC;AAOvF,MAAM,gCAAiC,SAAQ,iCAAiC;IACzD,KAAK,CAAC,2BAA2B,CAAC,UAA8B;QAC/E,MAAM,OAAO,GAAoB;YAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU;YAClC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO;SACjC,CAAC;QAEF,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAEhE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAEtD,OAAO,YAAY,CAAC;IACxB,CAAC;IAEkB,sBAAsB,CAAC,QAA0B,EAAE,KAAY,EAAE,MAAc;QAC9F,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC/D,CAAC;CACJ;AAED,eAAe,gCAAgC,CAAC","sourcesContent":["import AutoDownloaderTransferHandlerBase from \"./autoDownloaderTransferHandlerBase.js\";\n\nimport type TransferDownloader from \"../../client/downloader/transferDownloader.js\";\nimport type DownloadInfo from \"../../downloader/dtos/downloadInfo.js\";\nimport type DownloadCommand from \"../../downloader/dtos/downloadCommand.js\";\nimport type NewInboxTransfer from '../newInboxTransfersRetriever/newInboxTransfer.js';\n\nclass AutoDownloaderNewTransferHandler extends AutoDownloaderTransferHandlerBase {\n protected override async startDownloadAndUpdateState(downloader: TransferDownloader): Promise<DownloadInfo> {\n const options: DownloadCommand = {\n transfer: this.transfer.transferId,\n trackId: this.transfer.trackId,\n };\n\n const downloadInfo = await downloader.downloadAllFiles(options);\n\n this.state.transferStarted(this.transfer, downloader);\n\n return downloadInfo;\n }\n\n protected override transferStartingFailed(transfer: NewInboxTransfer, error: Error, reason: string): void {\n this.state.transferStartingFailed(transfer, error, reason);\n }\n}\n\nexport default AutoDownloaderNewTransferHandler;"]}
|