filemail-sdk 10.4.0 → 10.6.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.d.ts.map +1 -1
- package/dist/src/autoDownloader/factory/nodeAutoDownloaderFactory.js +1 -0
- package/dist/src/autoDownloader/factory/nodeAutoDownloaderFactory.js.map +1 -1
- package/dist/src/autoDownloader/factory/nodeAutoDownloaderFactoryOptions.d.ts +1 -0
- package/dist/src/autoDownloader/factory/nodeAutoDownloaderFactoryOptions.d.ts.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 +2 -1
- package/dist/src/client/downloader/downloaderCore.d.ts.map +1 -1
- package/dist/src/client/downloader/downloaderCore.js +19 -9
- package/dist/src/client/downloader/downloaderCore.js.map +1 -1
- package/dist/src/client/downloader/node/nodeTransferDownloader.d.ts.map +1 -1
- package/dist/src/client/downloader/node/nodeTransferDownloader.js +4 -2
- 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.d.ts.map +1 -1
- package/dist/src/client/uploader/node/nodeTransferUploader.js +10 -4
- 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 +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.d.ts +2 -2
- package/dist/src/client/uploader/web/webTransferUploader.d.ts.map +1 -1
- package/dist/src/client/uploader/web/webTransferUploader.js +7 -2
- package/dist/src/client/uploader/web/webTransferUploader.js.map +1 -1
- package/dist/src/client/uploader/web/webTransferUploaderConfig.d.ts +7 -0
- package/dist/src/client/uploader/web/webTransferUploaderConfig.d.ts.map +1 -0
- package/dist/src/client/uploader/web/webTransferUploaderConfig.js +2 -0
- package/dist/src/client/uploader/web/webTransferUploaderConfig.js.map +1 -0
- package/dist/src/downloader/api/fileServerDownloadClient.d.ts +2 -2
- package/dist/src/downloader/api/fileServerDownloadClient.d.ts.map +1 -1
- package/dist/src/downloader/api/fileServerDownloadClient.js.map +1 -1
- package/dist/src/downloader/api/fileServerDownloadStatusClient.d.ts +6 -0
- package/dist/src/downloader/api/fileServerDownloadStatusClient.d.ts.map +1 -0
- package/dist/src/downloader/api/fileServerDownloadStatusClient.js +2 -0
- package/dist/src/downloader/api/fileServerDownloadStatusClient.js.map +1 -0
- package/dist/src/downloader/api/node/nodeFileServerDownloadClient.d.ts.map +1 -1
- package/dist/src/downloader/api/node/nodeFileServerDownloadClient.js +8 -6
- package/dist/src/downloader/api/node/nodeFileServerDownloadClient.js.map +1 -1
- package/dist/src/downloader/api/node/nodeFileServerDownloadStatusClient.d.ts +10 -0
- package/dist/src/downloader/api/node/nodeFileServerDownloadStatusClient.d.ts.map +1 -0
- package/dist/src/downloader/api/node/nodeFileServerDownloadStatusClient.js +39 -0
- package/dist/src/downloader/api/node/nodeFileServerDownloadStatusClient.js.map +1 -0
- package/dist/src/downloader/chunkDownloader.d.ts +3 -2
- package/dist/src/downloader/chunkDownloader.d.ts.map +1 -1
- package/dist/src/downloader/chunkDownloader.js +6 -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.d.ts +5 -0
- package/dist/src/downloader/downloadOptions.d.ts.map +1 -1
- package/dist/src/downloader/downloadOptions.js +5 -0
- 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.js.map +1 -1
- package/dist/src/downloader/downloadTracker.d.ts +2 -1
- package/dist/src/downloader/downloadTracker.d.ts.map +1 -1
- package/dist/src/downloader/downloadTracker.js +5 -4
- 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.d.ts +2 -1
- package/dist/src/downloader/dtos/downloadRegistrationMode.d.ts.map +1 -1
- package/dist/src/downloader/dtos/downloadRegistrationMode.js +1 -0
- 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.js.map +1 -1
- package/dist/src/downloader/dtos/downloadTrackerProgressInfo.js.map +1 -1
- package/dist/src/downloader/dtos/downloadTrackingMetadata.d.ts +2 -0
- package/dist/src/downloader/dtos/downloadTrackingMetadata.d.ts.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 +2 -1
- package/dist/src/downloader/filesDownloader.d.ts.map +1 -1
- package/dist/src/downloader/filesDownloader.js +30 -2
- package/dist/src/downloader/filesDownloader.js.map +1 -1
- package/dist/src/downloader/filesPreparer.js.map +1 -1
- package/dist/src/downloader/md5Provider/downloaderChunkMD5Provider.d.ts +6 -0
- package/dist/src/downloader/md5Provider/downloaderChunkMD5Provider.d.ts.map +1 -0
- package/dist/src/downloader/md5Provider/downloaderChunkMD5Provider.js +2 -0
- package/dist/src/downloader/md5Provider/downloaderChunkMD5Provider.js.map +1 -0
- package/dist/src/downloader/md5Provider/downloaderChunkMD5ProviderFactory.d.ts +7 -0
- package/dist/src/downloader/md5Provider/downloaderChunkMD5ProviderFactory.d.ts.map +1 -0
- package/dist/src/downloader/md5Provider/downloaderChunkMD5ProviderFactory.js +2 -0
- package/dist/src/downloader/md5Provider/downloaderChunkMD5ProviderFactory.js.map +1 -0
- package/dist/src/downloader/md5Provider/node/nodeOnDemandMD5Provider.d.ts +10 -0
- package/dist/src/downloader/md5Provider/node/nodeOnDemandMD5Provider.d.ts.map +1 -0
- package/dist/src/downloader/md5Provider/node/nodeOnDemandMD5Provider.js +36 -0
- package/dist/src/downloader/md5Provider/node/nodeOnDemandMD5Provider.js.map +1 -0
- package/dist/src/downloader/md5Provider/node/nodeOnDemandMD5ProviderFactory.d.ts +10 -0
- package/dist/src/downloader/md5Provider/node/nodeOnDemandMD5ProviderFactory.d.ts.map +1 -0
- package/dist/src/downloader/md5Provider/node/nodeOnDemandMD5ProviderFactory.js +14 -0
- package/dist/src/downloader/md5Provider/node/nodeOnDemandMD5ProviderFactory.js.map +1 -0
- package/dist/src/index.d.ts +11 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/index.node.d.ts +5 -0
- package/dist/src/index.node.d.ts.map +1 -1
- package/dist/src/index.node.js +5 -0
- package/dist/src/index.node.js.map +1 -1
- package/dist/src/index.web.d.ts +5 -0
- package/dist/src/index.web.d.ts.map +1 -1
- package/dist/src/index.web.js +4 -0
- package/dist/src/index.web.js.map +1 -1
- package/dist/src/uploader/api/fileServerUploadClient.js.map +1 -1
- package/dist/src/uploader/api/node/nodeFileServerUploadClient.d.ts.map +1 -1
- package/dist/src/uploader/api/node/nodeFileServerUploadClient.js +1 -2
- 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.d.ts.map +1 -1
- package/dist/src/uploader/api/web/webFileServerUploadClient.js +1 -2
- package/dist/src/uploader/api/web/webFileServerUploadClient.js.map +1 -1
- package/dist/src/uploader/chunkStreamProviderFactory/node/nodeFileDetailsUploaderChunkStreamProviderFactory.d.ts +9 -0
- package/dist/src/uploader/chunkStreamProviderFactory/node/nodeFileDetailsUploaderChunkStreamProviderFactory.d.ts.map +1 -0
- package/dist/src/uploader/chunkStreamProviderFactory/{nodeFileDetailsUploaderChunkStreamProviderFactory.js → node/nodeFileDetailsUploaderChunkStreamProviderFactory.js} +1 -1
- package/dist/src/uploader/chunkStreamProviderFactory/node/nodeFileDetailsUploaderChunkStreamProviderFactory.js.map +1 -0
- package/dist/src/uploader/chunkStreamProviderFactory/uploaderChunkStreamProviderFactory.d.ts +2 -2
- package/dist/src/uploader/chunkStreamProviderFactory/uploaderChunkStreamProviderFactory.d.ts.map +1 -1
- package/dist/src/uploader/chunkStreamProviderFactory/uploaderChunkStreamProviderFactory.js.map +1 -1
- package/dist/src/uploader/chunkStreamProviderFactory/web/webFileDetailsUploaderChunkStreamProviderFactory.d.ts +9 -0
- package/dist/src/uploader/chunkStreamProviderFactory/web/webFileDetailsUploaderChunkStreamProviderFactory.d.ts.map +1 -0
- package/dist/src/uploader/chunkStreamProviderFactory/{webFileDetailsUploaderChunkStreamProviderFactory.js → web/webFileDetailsUploaderChunkStreamProviderFactory.js} +1 -1
- package/dist/src/uploader/chunkStreamProviderFactory/web/webFileDetailsUploaderChunkStreamProviderFactory.js.map +1 -0
- package/dist/src/uploader/chunksIterator/chunksIterator.js.map +1 -1
- package/dist/src/uploader/eventArgs/fileAckFailedEventArgs.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/filesBatchAckFailedEventArgs.js.map +1 -1
- package/dist/src/uploader/eventArgs/filesRegistrationBatchFailedEventArgs.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/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/fileChunksPlan.d.ts +8 -0
- package/dist/src/uploader/fileChunksPlan.d.ts.map +1 -0
- package/dist/src/uploader/fileChunksPlan.js +2 -0
- package/dist/src/uploader/fileChunksPlan.js.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/defaultMD5ComputationStrategyFactory.d.ts +10 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/defaultMD5ComputationStrategyFactory.d.ts.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/defaultMD5ComputationStrategyFactory.js +12 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/defaultMD5ComputationStrategyFactory.js.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/md5ComputationSession.d.ts +7 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/md5ComputationSession.d.ts.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/md5ComputationSession.js +2 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/md5ComputationSession.js.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/md5ComputationStrategy.d.ts +6 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/md5ComputationStrategy.d.ts.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/md5ComputationStrategy.js +2 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/md5ComputationStrategy.js.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/md5ComputationStrategyFactory.d.ts +6 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/md5ComputationStrategyFactory.d.ts.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/md5ComputationStrategyFactory.js +2 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/md5ComputationStrategyFactory.js.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/node/nodeAsyncMD5ComputationStrategy.d.ts +7 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/node/nodeAsyncMD5ComputationStrategy.d.ts.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/node/nodeAsyncMD5ComputationStrategy.js +14 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/node/nodeAsyncMD5ComputationStrategy.js.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/computeBlobMD5.d.ts +2 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/computeBlobMD5.d.ts.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/computeBlobMD5.js +27 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/computeBlobMD5.js.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5.worker.d.ts +2 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5.worker.d.ts.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5.worker.js +5 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5.worker.js.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5WorkerMessages.d.ts +14 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5WorkerMessages.d.ts.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5WorkerMessages.js +2 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5WorkerMessages.js.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5WorkersManager.d.ts +17 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5WorkersManager.d.ts.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5WorkersManager.js +113 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5WorkersManager.js.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/registerMD5Worker.d.ts +7 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/registerMD5Worker.d.ts.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/registerMD5Worker.js +17 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/registerMD5Worker.js.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/webAsyncWebWorkerMD5ComputationStrategy.d.ts +9 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/webAsyncWebWorkerMD5ComputationStrategy.d.ts.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/webAsyncWebWorkerMD5ComputationStrategy.js +62 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/webAsyncWebWorkerMD5ComputationStrategy.js.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/webMD5ComputationStrategyFactory.d.ts +9 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/webMD5ComputationStrategyFactory.d.ts.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/webMD5ComputationStrategyFactory.js +41 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/webMD5ComputationStrategyFactory.js.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/webSyncMD5ComputationStrategy.d.ts +6 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/webSyncMD5ComputationStrategy.d.ts.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/webSyncMD5ComputationStrategy.js +9 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/webSyncMD5ComputationStrategy.js.map +1 -0
- package/dist/src/uploader/md5Provider/precomputedMD5Provider.d.ts +27 -0
- package/dist/src/uploader/md5Provider/precomputedMD5Provider.d.ts.map +1 -0
- package/dist/src/uploader/md5Provider/precomputedMD5Provider.js +189 -0
- package/dist/src/uploader/md5Provider/precomputedMD5Provider.js.map +1 -0
- package/dist/src/uploader/md5Provider/uploaderMD5Provider.d.ts +28 -0
- package/dist/src/uploader/md5Provider/uploaderMD5Provider.d.ts.map +1 -0
- package/dist/src/uploader/md5Provider/uploaderMD5Provider.js +2 -0
- package/dist/src/uploader/md5Provider/uploaderMD5Provider.js.map +1 -0
- 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/pendingFileAck.js.map +1 -1
- package/dist/src/uploader/registeredTransferFile.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/transferFailureAbortReason.js.map +1 -1
- package/dist/src/uploader/transferFilesRegistrar.js.map +1 -1
- package/dist/src/uploader/transferUpload.d.ts +4 -2
- package/dist/src/uploader/transferUpload.d.ts.map +1 -1
- package/dist/src/uploader/transferUpload.js +27 -9
- package/dist/src/uploader/transferUpload.js.map +1 -1
- package/dist/src/uploader/transferUploadAcker.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/ackTransferFilesRequest.js.map +1 -1
- package/dist/src/utils/api/dtos/ackTransferFilesResponse.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.d.ts +1 -0
- package/dist/src/utils/api/dtos/getTransferResponse.d.ts.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/registerTransferFilesRequest.js.map +1 -1
- package/dist/src/utils/api/dtos/registerTransferFilesResponse.js.map +1 -1
- package/dist/src/utils/api/dtos/resetTransferRequest.js.map +1 -1
- package/dist/src/utils/api/dtos/sendFileChunkRequest.d.ts +1 -0
- package/dist/src/utils/api/dtos/sendFileChunkRequest.d.ts.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.d.ts +2 -0
- package/dist/src/utils/api/fileServerClientFactory.d.ts.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.d.ts +2 -0
- package/dist/src/utils/api/node/nodeFileServerClientFactory.d.ts.map +1 -1
- package/dist/src/utils/api/node/nodeFileServerClientFactory.js +4 -0
- 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.d.ts +2 -0
- package/dist/src/utils/api/web/webFileServerClientFactory.d.ts.map +1 -1
- package/dist/src/utils/api/web/webFileServerClientFactory.js +3 -0
- 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/chunkStreamEncryptionData.d.ts +6 -0
- package/dist/src/utils/fileSystem/chunkStreamEncryptionData.d.ts.map +1 -0
- package/dist/src/utils/fileSystem/chunkStreamEncryptionData.js +2 -0
- package/dist/src/utils/fileSystem/chunkStreamEncryptionData.js.map +1 -0
- package/dist/src/utils/fileSystem/chunkStreamProvider.d.ts +0 -5
- package/dist/src/utils/fileSystem/chunkStreamProvider.d.ts.map +1 -1
- package/dist/src/utils/fileSystem/chunkStreamProvider.js.map +1 -1
- package/dist/src/utils/fileSystem/chunkStreamProviderFactory.d.ts +2 -2
- package/dist/src/utils/fileSystem/chunkStreamProviderFactory.d.ts.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.js.map +1 -1
- package/dist/src/utils/fileSystem/fsError.js.map +1 -1
- package/dist/src/utils/fileSystem/node/nodeChunkStreamProvider.d.ts +2 -3
- package/dist/src/utils/fileSystem/node/nodeChunkStreamProvider.d.ts.map +1 -1
- package/dist/src/utils/fileSystem/node/nodeChunkStreamProvider.js +9 -28
- package/dist/src/utils/fileSystem/node/nodeChunkStreamProvider.js.map +1 -1
- package/dist/src/utils/fileSystem/node/nodeChunkStreamProviderFactory.d.ts +2 -2
- package/dist/src/utils/fileSystem/node/nodeChunkStreamProviderFactory.d.ts.map +1 -1
- package/dist/src/utils/fileSystem/node/nodeChunkStreamProviderFactory.js +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.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.d.ts +2 -3
- package/dist/src/utils/fileSystem/web/chunkStreamProvider/webChunkStreamProvider.d.ts.map +1 -1
- package/dist/src/utils/fileSystem/web/chunkStreamProvider/webChunkStreamProvider.js +0 -19
- package/dist/src/utils/fileSystem/web/chunkStreamProvider/webChunkStreamProvider.js.map +1 -1
- package/dist/src/utils/fileSystem/web/webChunkStreamProviderFactory.d.ts +2 -2
- package/dist/src/utils/fileSystem/web/webChunkStreamProviderFactory.d.ts.map +1 -1
- package/dist/src/utils/fileSystem/web/webChunkStreamProviderFactory.js +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 +80 -79
- package/readme.md +27 -27
- package/dist/src/uploader/chunkStreamProviderFactory/nodeFileDetailsUploaderChunkStreamProviderFactory.d.ts +0 -9
- package/dist/src/uploader/chunkStreamProviderFactory/nodeFileDetailsUploaderChunkStreamProviderFactory.d.ts.map +0 -1
- package/dist/src/uploader/chunkStreamProviderFactory/nodeFileDetailsUploaderChunkStreamProviderFactory.js.map +0 -1
- package/dist/src/uploader/chunkStreamProviderFactory/webFileDetailsUploaderChunkStreamProviderFactory.d.ts +0 -9
- package/dist/src/uploader/chunkStreamProviderFactory/webFileDetailsUploaderChunkStreamProviderFactory.d.ts.map +0 -1
- package/dist/src/uploader/chunkStreamProviderFactory/webFileDetailsUploaderChunkStreamProviderFactory.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transferUpload.js","sourceRoot":"","sources":["../../../src/uploader/transferUpload.ts"],"names":[],"mappings":"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","sourcesContent":["import TransferUploadState from \"./state/transferUploadState.js\";\nimport TransferUploadError from \"./transferUploadError.js\";\nimport TransferStatus from \"../utils/types/transferStatus.js\";\nimport TransferUploadEvent from './transferUploadEvent.js';\nimport ChunksIterator from './chunksIterator/chunksIterator.js';\nimport TransferFilesRegistrar, { type RegistrationResult } from './transferFilesRegistrar.js';\nimport mergeAbortAndPauseSignals, { type MergedAbortAndPauseController } from '../utils/mergeAbortAndPauseSignals.js';\nimport ApiError from '../utils/api/apiError.js';\nimport FsError from '../utils/fileSystem/fsError.js';\nimport ApiFilemail449Error from '../utils/api/apiFilemail449Error.js';\nimport { promiseAllSettled } from '../utils/promiseAll.js';\nimport { isTransferFailureAbortReason } from './transferFailureAbortReason.js';\nimport { concatUint8Arrays, hexToUint8Array, uint8ArrayToHex } from '../utils/uint8ArrayUtils.js';\n\nimport type ApiClient from \"../utils/api/apiClient.js\";\nimport type { InitializeTransferRequest } from \"../utils/api/dtos/initializeTransferRequest.js\";\nimport type SendFileChunkRequest from '../utils/api/dtos/sendFileChunkRequest.js';\nimport type FileServerClientFactory from '../utils/api/fileServerClientFactory.js';\nimport type FileDetails from \"../utils/fileSystem/fileDetails.js\";\nimport type TransferUploadMetadata from \"./export/transferUploadMetadata.js\";\nimport type TransferUploadInfo from \"./options/transferUploadInfo.js\";\nimport type { TransferUploadAppendInfo } from './options/transferUploadAppendInfo.js';\nimport type ResetTransferRequest from '../utils/api/dtos/resetTransferRequest.js';\nimport type EventsEngine from '../utils/events/eventsEngine.js';\nimport type FileChunkUploadEventArgs from './eventArgs/fileChunkUploadEventArgs.js';\nimport type FileChunkUploadFailedEventArgs from './eventArgs/fileChunkUploadFailedEventArgs.js';\nimport type ChunkProgressEvent from '../utils/events/chunkProgressEvent.js';\nimport type FinalizeTransferRequest from '../utils/api/dtos/finalizeTransferRequest.js';\nimport type FileUploadEventArgs from './eventArgs/fileUploadEventArgs.js';\nimport type TransferUploadCompletedEventArgs from './eventArgs/transferUploadCompletedEventArgs.js';\nimport type CancelTransferRequest from '../utils/api/dtos/cancelTransferRequest.js';\nimport type ConcurrencyReleaser from \"../utils/concurrencyController/concurrencyReleaser.js\";\nimport type FileUploadFailedEventArgs from './eventArgs/fileUploadFailedEventArgs.js';\nimport type FilesRegistrationBatchFailedEventArgs from './eventArgs/filesRegistrationBatchFailedEventArgs.js';\nimport type FileAckFailedEventArgs from './eventArgs/fileAckFailedEventArgs.js';\nimport type FilesBatchAckFailedEventArgs from './eventArgs/filesBatchAckFailedEventArgs.js';\nimport type TransferUploadAcker from './transferUploadAcker.js';\nimport type RegisteredTransferFile from './registeredTransferFile.js';\nimport type TransferUploadProgressedEventArgs from './eventArgs/transferUploadProgressedEventArgs.js';\nimport type FileChunkUploadProgressedEventArgs from './eventArgs/fileChunkUploadProgressedEventArgs.js';\nimport type UploaderChunkStreamProviderFactory from './chunkStreamProviderFactory/uploaderChunkStreamProviderFactory.js';\nimport type TransferUploadConfig from './options/transferUploadConfig.js';\nimport type { PauseSignal } from './pauseController.js';\nimport type ChunkStreamProvider from '../utils/fileSystem/chunkStreamProvider.js';\nimport type ConcurrencyController from '../utils/concurrencyController/concurrencyController.js';\nimport type FileChunkUploadCompletedPartiallyEventArgs from './eventArgs/fileChunkUploadCompletedPartiallyEventArgs.js';\nimport type FileChunkUploadCompletedEventArgs from './eventArgs/fileChunkUploadCompletedEventArgs.js';\nimport type TransferMetadataDeterminedEventArgs from './eventArgs/transferMetadataDeterminedEventArgs.js';\nimport type CryptographyProvider from '../utils/crypto/cryptographyProvider.js';\nimport type { TransferUploadExportData, TransferUploadExportDataAppendInfo, TransferUploadExportDataMetadata } from './export/transferUploadExportData.js';\n\nexport default class TransferUpload<T extends FileDetails> {\n #totalSizeInBytes: number;\n\n #chunkStreamProviderFactory: UploaderChunkStreamProviderFactory<T>;\n #apiClient: ApiClient;\n #fileServerClientFactory: FileServerClientFactory;\n #eventsEngine: EventsEngine;\n #info: TransferUploadInfo<T> | TransferUploadAppendInfo<T>;\n #isLegacyTransfer: boolean;\n #config: TransferUploadConfig;\n #concurrencyController: ConcurrencyController;\n #cryptography: CryptographyProvider;\n #acker: TransferUploadAcker;\n\n #transferState?: TransferUploadState;\n #transferMetadata?: TransferUploadMetadata;\n #transferDownloadUrl?: string;\n #transferConfirmationUrl?: string;\n #transferRecipientTrackingLinks?: TransferUploadCompletedEventArgs[`recipientTrackingLinks`];\n\n #pauseSignal: PauseSignal | undefined;\n #abortSignal: AbortSignal | undefined;\n #mergedPauseAndAbortController: MergedAbortAndPauseController | undefined;\n\n #filesRegistrar: TransferFilesRegistrar | undefined;\n\n pauseEventListener: (() => void) | undefined;\n abortEventListener: (() => void) | undefined;\n\n #isRunMethodRunning = false;\n\n get status(): TransferStatus {\n return this.#transferState?.status ?? TransferStatus.Initialized;\n }\n\n get completedFilesCount(): number {\n return this.#transferState?.completedFilesCount ?? 0;\n }\n\n get failedFilesCount(): number {\n return this.#transferState?.failedFilesCount ?? 0;\n }\n\n get uploadedBytesCount(): number {\n return this.#transferState?.uploadedBytesCount ?? 0;\n }\n\n get failedBytesCount(): number {\n return this.#transferState?.failedBytesCount ?? 0;\n }\n\n get progressInPercentage(): number {\n if (this.totalSizeInBytes === 0)\n return 0;\n\n return (this.uploadedBytesCount * 100) / this.totalSizeInBytes;\n }\n\n get files(): readonly Readonly<T>[] {\n return this.#info.files;\n }\n\n get totalSizeInBytes(): number {\n return this.#totalSizeInBytes;\n }\n\n get transferId(): string | undefined {\n return this.#transferMetadata?.transferId;\n }\n\n constructor(chunkStreamProviderFactory: UploaderChunkStreamProviderFactory<T>, apiClient: ApiClient, fileServerClientFactory: FileServerClientFactory, eventsEngine: EventsEngine, info: TransferUploadInfo<T> | TransferUploadAppendInfo<T>, config: TransferUploadConfig, concurrencyController: ConcurrencyController, cryptography: CryptographyProvider, acker: TransferUploadAcker) {\n if (info.files.length === 0)\n throw new TransferUploadError(`Files can't be empty`);\n\n this.#totalSizeInBytes = info.files.reduce((partialSum, file) => partialSum + file.fileSizeInBytes, 0);\n\n this.#chunkStreamProviderFactory = chunkStreamProviderFactory;\n this.#apiClient = apiClient;\n this.#fileServerClientFactory = fileServerClientFactory;\n this.#eventsEngine = eventsEngine;\n this.#info = info;\n this.#isLegacyTransfer = info.isLegacyTransfer ?? false;\n this.#config = config;\n this.#concurrencyController = concurrencyController;\n this.#cryptography = cryptography;\n this.#acker = acker;\n\n this.#filesRegistrar = this.#isLegacyTransfer\n ? undefined\n : new TransferFilesRegistrar(apiClient, eventsEngine, info.files);\n }\n\n private isUploadAppend(): boolean {\n return this.isUploadAppendInfo(this.#info);\n }\n\n private isUploadAppendInfo(info: TransferUploadInfo<T> | TransferUploadAppendInfo<T>): info is TransferUploadAppendInfo<T> {\n return (info as TransferUploadAppendInfo<T>).transferKey !== undefined;\n }\n\n private createTransferMetadataFromInfo() {\n if (!this.isUploadAppendInfo(this.#info))\n throw new TransferUploadError(`Options are not TransferUploadAppendOptions`);\n\n this.#transferDownloadUrl = this.#info.transferDownloadUrl;\n\n this.#transferMetadata = {\n transferId: this.#info.transferId,\n transferKey: this.#info.transferKey,\n transferFileServerUrl: this.#info.transferFileServerUrl,\n transferRegion: this.#info.transferRegion,\n encryptionData: this.#info.e2eeData,\n };\n }\n\n async run(transferPauseSignal: PauseSignal, transferAbortSignal: AbortSignal): Promise<void> {\n this.throwIfNotPossibleToRun(transferPauseSignal, transferAbortSignal);\n\n this.#isRunMethodRunning = true;\n\n try {\n this.#pauseSignal = transferPauseSignal;\n this.#abortSignal = transferAbortSignal;\n this.#mergedPauseAndAbortController = mergeAbortAndPauseSignals(transferPauseSignal, transferAbortSignal);\n\n if (!this.#transferState)\n this.#transferState = new TransferUploadState(this.files, this.#eventsEngine, this.#config.currentRatesTimespanInMs, this.#config.progressEventThrottlingInMs);\n else\n this.#transferState.recover();\n\n this.#transferState.transferRun();\n\n this.addPauseAndStopListeners();\n\n if (this.isUploadAppend() && !this.#transferMetadata)\n this.createTransferMetadataFromInfo();\n else if (!this.#transferMetadata)\n await this.startApiTransferAndCreateMetadata();\n\n this.notifyMetadataDetermined();\n\n this.startBackgroundWorkers(transferPauseSignal, transferAbortSignal);\n\n const ongoingChunkUploads = new Set<Promise<void>>();\n\n for (const file of this.files) {\n const fileStatus = this.#transferState.getFile(file.externalId);\n\n if (fileStatus.isCompleted)\n continue;\n\n const registrationResult = await this.waitUntilFileRegistered(file);\n\n if (!registrationResult.isRegisteredSuccessfully)\n continue;\n\n if (fileStatus.isUploadCompleted) {\n this.enqueueFileAck(file);\n continue;\n }\n\n const alreadySentChunks = this.#transferState.getChunksForFile(file.externalId);\n const chunksIterator = new ChunksIterator(alreadySentChunks, file.fileSizeInBytes, this.#config.chunkSizeInBytes);\n\n for (const chunk of chunksIterator.getChunksIterator()) {\n const releaseSemaphore = await this.#concurrencyController.acquire();\n\n if (this.shouldStopProcessing()) {\n releaseSemaphore();\n break;\n }\n\n const chunkUploadPromise = this.sendChunkAndKeepUpdatingState(file, chunk.startPosition, chunk.sizeInBytes, releaseSemaphore);\n\n const trackedChunkUploadPromise = chunkUploadPromise.finally(() => {\n ongoingChunkUploads.delete(trackedChunkUploadPromise);\n });\n\n ongoingChunkUploads.add(trackedChunkUploadPromise);\n\n if (this.shouldStopProcessing())\n break;\n }\n\n if (this.shouldStopProcessing())\n break;\n }\n\n await promiseAllSettled(Array.from(ongoingChunkUploads));\n\n await this.#acker.flush();\n\n if (this.#transferState.status === TransferStatus.Pausing)\n this.#transferState.transferPaused();\n else if (this.#transferState.status === TransferStatus.Aborting)\n this.#transferState.transferAborted();\n else if (this.uploadedBytesCount !== this.totalSizeInBytes || this.hasUnackedFiles())\n this.#transferState.transferFailed();\n else {\n await this.finalizeTransfer();\n this.#transferState.transferCompleted(this.#transferMetadata!, this.#transferDownloadUrl!, this.#transferConfirmationUrl, this.#transferRecipientTrackingLinks);\n }\n }\n catch (error) {\n // We can get here with pausing or aborting status if any API call fails (e.g., finalizeTransfer) so we need to check the status again\n if (!this.#transferState)\n this.#eventsEngine.emit(TransferUploadEvent.TransferFailed);\n else if (this.#transferState.status === TransferStatus.Pausing) {\n this.#transferState.transferPaused();\n return;\n }\n else if (this.#transferState.status === TransferStatus.Aborting) {\n this.#transferState.transferAborted();\n return;\n }\n else\n this.#transferState.transferFailed();\n\n if (error instanceof TransferUploadError)\n throw error;\n else\n throw new TransferUploadError(`Unhandled error occured. See 'cause' for more details`, { cause: error as Error });\n }\n finally {\n await this.stopBackgroundWorkers();\n\n this.removePauseAndStopListeners();\n this.#isRunMethodRunning = false;\n }\n }\n\n private startBackgroundWorkers(transferPauseSignal: PauseSignal, transferAbortSignal: AbortSignal) {\n const fileAckSuccessfullCallback = (externalFileId: string | number, uploadItemId: string) => this.#transferState!.fileCompleted(externalFileId, uploadItemId);\n const fileAckFailedCallback = (externalFileId: string | number, uploadItemId: string, reason: string, error: Error) => this.#transferState!.fileAckFailed(externalFileId, uploadItemId, reason, error);\n\n this.#acker.start(this.#transferMetadata!.transferId, this.#transferMetadata!.transferKey, fileAckSuccessfullCallback, fileAckFailedCallback, transferPauseSignal, transferAbortSignal);\n this.#filesRegistrar?.start(this.#transferMetadata!.transferId, this.#transferMetadata!.transferKey, this.#mergedPauseAndAbortController?.signal);\n }\n\n private async stopBackgroundWorkers() {\n await Promise.allSettled([\n this.#filesRegistrar?.stop(),\n this.#acker.stop(),\n ]);\n }\n\n private async waitUntilFileRegistered(file: Readonly<T>): Promise<RegistrationResult> {\n if (this.#isLegacyTransfer)\n return { isRegisteredSuccessfully: true };\n\n return await this.#filesRegistrar!.waitUntilFileRegistered(file.externalId);\n }\n\n private notifyMetadataDetermined() {\n const eventArgs: TransferMetadataDeterminedEventArgs = {\n transferId: this.#transferMetadata!.transferId,\n fileServerUrl: this.#transferMetadata!.transferFileServerUrl,\n region: this.#transferMetadata!.transferRegion,\n };\n\n this.#eventsEngine.emit(TransferUploadEvent.TransferMetadataDetermined, eventArgs);\n this.#eventsEngine.emit(TransferUploadEvent.RecreateDataUpdated);\n }\n\n private async sendChunkAndKeepUpdatingState(file: T, chunkStartPosition: number, chunkSizeInBytes: number, releaseSemaphore: ConcurrencyReleaser): Promise<void> {\n let uploadedBytesCount = 0;\n\n const registeredFile = this.getRegisteredFile(file.externalId);\n const uploadItemId = registeredFile?.uploadItemId;\n\n try {\n this.#transferState!.chunkUploadStarted(file.externalId, uploadItemId, chunkStartPosition, chunkSizeInBytes);\n\n const chunkStreamProvider = this.#chunkStreamProviderFactory.createChunkStreamProvider(file, chunkStartPosition, chunkSizeInBytes, this.#transferMetadata?.encryptionData);\n\n const progressEventHandler = (eventArgs: ChunkProgressEvent) => {\n uploadedBytesCount += eventArgs.transferredBytesSinceLastEvent;\n this.#transferState!.chunkUploadProgressed(file.externalId, uploadItemId, chunkStartPosition, chunkSizeInBytes, eventArgs);\n };\n\n await this.sendChunk(file, registeredFile?.fileId, chunkStreamProvider, progressEventHandler);\n\n if (uploadedBytesCount === chunkSizeInBytes)\n this.#transferState!.chunkUploadCompleted(file.externalId, uploadItemId, chunkStartPosition, chunkSizeInBytes);\n else\n this.#transferState!.chunkUploadCompletedPartially(file.externalId, uploadItemId, chunkStartPosition, chunkSizeInBytes, uploadedBytesCount, this.#pauseSignal!.paused);\n\n if (this.#transferState!.getFile(file.externalId).isUploadCompleted)\n this.enqueueFileAck(file);\n }\n catch (error) {\n const chunkError = error as Error;\n\n const isTcpPausingError = chunkError.cause !== undefined\n && chunkError.cause instanceof ApiFilemail449Error\n && chunkError.cause.message === `Wrong md5 hash`\n && this.#pauseSignal?.paused === true;\n\n if (isTcpPausingError)\n this.#transferState!.chunkUploadCompletedPartially(file.externalId, uploadItemId, chunkStartPosition, chunkSizeInBytes, uploadedBytesCount, this.#pauseSignal!.paused);\n else {\n const failedReason = this.getChunkFailedReason(error);\n this.#transferState!.chunkUploadFailed(file.externalId, uploadItemId, chunkStartPosition, chunkSizeInBytes, uploadedBytesCount, failedReason, error as Error);\n }\n }\n finally {\n releaseSemaphore();\n }\n }\n\n private async sendChunk(file: T, fileId: string | undefined, chunkStreamProvider: ChunkStreamProvider, progressEventHandler: (eventArgs: ChunkProgressEvent) => void): Promise<void> {\n const request: SendFileChunkRequest = {\n chunkLengthInBytes: chunkStreamProvider.chunkLengthInBytes,\n chunkStartPosition: chunkStreamProvider.chunkStartPosition,\n };\n\n const fileServerClient = this.#fileServerClientFactory.createFileServerUploadClient(this.#transferMetadata!.transferFileServerUrl, this.#transferMetadata!.transferId, this.#transferMetadata!.transferKey, file.fileName, file.fileDestinationPathInTransfer, file.fileSizeInBytes, fileId);\n\n const ongoingRequestPromise = fileServerClient.sendFileChunk(request, chunkStreamProvider, this.#pauseSignal!, this.#abortSignal!);\n\n fileServerClient.addEventListener(`progress`, progressEventHandler);\n\n await ongoingRequestPromise;\n }\n\n private getChunkFailedReason(error: unknown) {\n if (error instanceof FsError)\n return `Can't read file. ${error.message}`;\n\n if (error instanceof ApiError) {\n const baseMessage = error.cause?.message ? `${error.message}. ${error.cause.message}` : error.message;\n return error.requestUrl ? `${baseMessage}. Request URL: ${error.requestUrl}` : baseMessage;\n }\n\n return (error as Error)?.message;\n }\n\n private throwIfNotPossibleToRun(pauseSignal: PauseSignal, abortSignal: AbortSignal) {\n if (this.#isRunMethodRunning)\n throw new TransferUploadError(`This transfer is running and cannot be run`);\n\n if (this.#transferState\n && this.#transferState.status !== TransferStatus.Failed\n && this.#transferState.status !== TransferStatus.Aborted\n && this.#transferState.status !== TransferStatus.Initialized\n && this.#transferState.status !== TransferStatus.Paused)\n throw new TransferUploadError(`Transfer is in ${TransferStatus[this.#transferState!.status]} state and cannot be run`);\n\n if (this.files.length === 0)\n throw new TransferUploadError(`There are no files passed to the transfer`);\n\n if (pauseSignal.paused)\n throw new TransferUploadError(`Can't run transfer with already paused PauseController`);\n\n if (abortSignal.aborted)\n throw new TransferUploadError(`Can't run transfer with already aborted AbortController`);\n }\n\n private addPauseAndStopListeners() {\n this.pauseEventListener = () => {\n if (this.#transferState!.status !== TransferStatus.Running)\n throw new TransferUploadError(`Transfer is in ${TransferStatus[this.#transferState!.status]} state and cannot be paused`);\n\n this.#transferState!.transferPauseRequested();\n };\n\n this.abortEventListener = () => {\n if (this.isFailureAbortRequested())\n return;\n\n if (this.#transferState!.status !== TransferStatus.Running)\n throw new TransferUploadError(`Transfer is in ${TransferStatus[this.#transferState!.status]} state and cannot be stopped`);\n\n this.#transferState!.transferAbortRequested();\n };\n\n this.#pauseSignal!.addEventListener(`pause`, this.pauseEventListener);\n this.#abortSignal!.addEventListener(`abort`, this.abortEventListener);\n }\n\n private removePauseAndStopListeners() {\n this.#pauseSignal!.removeEventListener(`pause`, this.pauseEventListener!);\n this.#abortSignal!.removeEventListener(`abort`, this.abortEventListener!);\n\n this.#mergedPauseAndAbortController?.dispose();\n }\n\n private shouldStopProcessing() {\n return this.#transferState!.status !== TransferStatus.Running || this.#abortSignal?.aborted === true || this.#pauseSignal?.paused === true;\n }\n\n private isFailureAbortRequested() {\n return isTransferFailureAbortReason(this.#abortSignal?.reason);\n }\n\n private async startApiTransferAndCreateMetadata() {\n if (this.isUploadAppendInfo(this.#info))\n throw new TransferUploadError(`Options are not TransferUploadOptions`);\n\n try {\n const encryptionDataAndIvSaltHex = await this.generateEncryptionDataAndIvSaltHmacHex(this.#info.e2eeKey);\n\n const request: InitializeTransferRequest = {\n dataRegion: this.#info.dataRegion,\n e2ee: Boolean(encryptionDataAndIvSaltHex),\n e2ee_keyhash: encryptionDataAndIvSaltHex?.ivSaltHmacHex,\n transfersize: this.totalSizeInBytes,\n to: this.#info.to,\n from: this.#info.from,\n subject: this.#info.subject,\n message: this.#info.message,\n notify: this.#info.notify,\n confirmation: this.#info.confirmation,\n days: this.#info.days,\n password: this.#info.uploadPassword,\n companyid: this.#info.companyId,\n incominglogintoken: this.#info.incomingLoginToken,\n incomingpageid: this.#info.incomingPageId,\n filerequestid: this.#info.fileRequestId,\n filerequestshareid: this.#info.fileRequestShareId,\n customfields: this.#info.customFields,\n filesdb: !this.#isLegacyTransfer,\n };\n\n const response = await this.#apiClient.initializeTransfer(request, this.#mergedPauseAndAbortController?.signal);\n\n this.#transferMetadata = {\n transferId: response.transferId,\n transferKey: response.transferKey,\n transferFileServerUrl: response.transferUrl,\n transferRegion: response.transferRegion,\n encryptionData: encryptionDataAndIvSaltHex?.encryptionData,\n };\n }\n catch (error) {\n throw new TransferUploadError(`Error initializing transfer through the API`, { cause: error as Error });\n }\n }\n\n private getRegisteredFile(externalFileId: string | number): RegisteredTransferFile | undefined {\n return this.#filesRegistrar?.getRegisteredFile(externalFileId);\n }\n\n private enqueueFileAck(file: Readonly<T>): void {\n if (this.#isLegacyTransfer) {\n this.#transferState!.fileCompleted(file.externalId, undefined);\n return;\n }\n\n const registeredFile = this.getRegisteredFile(file.externalId);\n\n if (!registeredFile)\n throw new TransferUploadError(`Can't ack file with external id = ${file.externalId} - no registered file found. The transfer state is malformed.`);\n\n this.#acker.enqueue({ externalFileId: file.externalId, uploadItemId: registeredFile.uploadItemId, sizeInBytes: file.fileSizeInBytes });\n }\n\n private hasUnackedFiles(): boolean {\n if (this.#isLegacyTransfer)\n return false;\n\n return this.files.some(file => !this.#transferState!.getFile(file.externalId).isCompleted);\n }\n\n private async generateEncryptionDataAndIvSaltHmacHex(e2eeKey?: string): Promise<{ encryptionData: { iv: Uint8Array, key: Uint8Array }, ivSaltHmacHex: string, salt: Uint8Array, hmac: Uint8Array } | undefined> {\n if (!e2eeKey)\n return undefined;\n\n const salt = this.#cryptography.generateRandomBytes(16);\n const key = await this.#cryptography.deriveKey(e2eeKey, salt);\n const hmac = await this.#cryptography.generateHmac(key);\n const iv = this.#cryptography.generateRandomBytes(16);\n\n const ivSaltHmac = concatUint8Arrays([iv, salt, hmac]);\n const ivSaltHmacHex = uint8ArrayToHex(ivSaltHmac);\n\n return {\n encryptionData: { iv, key },\n hmac,\n salt,\n ivSaltHmacHex,\n };\n }\n\n private async finalizeTransfer(): Promise<void> {\n this.#eventsEngine.emit(TransferUploadEvent.TransferFinalizing);\n\n if (this.isUploadAppend())\n await this.resetApiTransfer();\n else\n await this.finalizeApiTransfer();\n }\n\n private async resetApiTransfer(): Promise<void> {\n try {\n const request: ResetTransferRequest = {\n transferid: this.#transferMetadata!.transferId,\n };\n\n await this.#apiClient.resetTransfer(request, this.#mergedPauseAndAbortController?.signal);\n }\n catch (error) {\n throw new TransferUploadError(`Error resetting transfer through the API`, { cause: error as Error });\n }\n }\n\n private async finalizeApiTransfer(): Promise<void> {\n try {\n const request: FinalizeTransferRequest = {\n transferid: this.#transferMetadata!.transferId,\n transferkey: this.#transferMetadata!.transferKey,\n protocol: `tcp`,\n };\n\n const response = await this.#apiClient.finalizeTransfer(request, this.#mergedPauseAndAbortController?.signal);\n\n this.#transferDownloadUrl = response.downloadUrl;\n this.#transferConfirmationUrl = response.confirmationUrl;\n this.#transferRecipientTrackingLinks = response.recipientTrackingLinks;\n }\n catch (error) {\n throw new TransferUploadError(`Error finalizing transfer through the API`, { cause: error as Error });\n }\n }\n\n async cancel(abortSignal?: AbortSignal): Promise<void> {\n try {\n const isTransferApiInitialized = Boolean(this.#transferState) && (Boolean(this.#transferMetadata) || this.isUploadAppend());\n\n if (!isTransferApiInitialized) {\n this.emitCancelEvents();\n return;\n }\n\n this.throwIfInWrongStateToCancel();\n\n this.#transferState!.transferCancelRequested();\n\n if (this.isUploadAppend()) {\n // There is no possibility to cancel transfer upload append on API for now\n }\n else {\n try {\n await this.cancelApiTransfer(abortSignal);\n }\n catch {\n // If API cancel fails we still finalize local transfer state as canceled to avoid hanging in Canceling.\n }\n }\n\n this.#transferState!.transferCanceled();\n }\n catch (error) {\n if (error instanceof TransferUploadError)\n throw error;\n else\n throw new TransferUploadError(`Unhandled error occured. See 'cause' for more details`, { cause: error as Error });\n }\n }\n\n private emitCancelEvents() {\n this.#eventsEngine.emit(TransferUploadEvent.TransferCancelRequested);\n this.#eventsEngine.emit(TransferUploadEvent.TransferCanceled);\n }\n\n private throwIfInWrongStateToCancel() {\n if (!this.#transferState)\n return;\n\n if (this.#transferState.status !== TransferStatus.Failed\n && this.#transferState.status !== TransferStatus.Aborted\n && this.#transferState.status !== TransferStatus.Initialized\n && this.#transferState.status !== TransferStatus.Paused)\n throw new TransferUploadError(`Transfer is in ${TransferStatus[this.#transferState!.status]} state and cannot be canceled`);\n }\n\n private async cancelApiTransfer(abortSignal?: AbortSignal): Promise<void> {\n try {\n const request: CancelTransferRequest = {\n transferid: this.#transferMetadata!.transferId,\n transferkey: this.#transferMetadata!.transferKey,\n };\n\n await this.#apiClient.cancelTransfer(request, abortSignal);\n }\n catch (error) {\n throw new TransferUploadError(`Error canceling transfer through the API`, { cause: error as Error });\n }\n }\n\n addEventListener(eventName: TransferUploadEvent.TransferRun | TransferUploadEvent.TransferPauseRequested | TransferUploadEvent.TransferPaused | TransferUploadEvent.TransferAbortRequested | TransferUploadEvent.TransferAborted | TransferUploadEvent.TransferCancelRequested | TransferUploadEvent.TransferCanceled | TransferUploadEvent.TransferFailed, handler: () => void): void\n addEventListener(eventName: TransferUploadEvent.FileUploadStarted | TransferUploadEvent.FileUploadCompleted | TransferUploadEvent.FileCompleted, handler: (event: FileUploadEventArgs) => void): void\n addEventListener(eventName: TransferUploadEvent.FileUploadFailed, handler: (event: FileUploadFailedEventArgs) => void): void\n addEventListener(eventName: TransferUploadEvent.FilesRegistrationBatchFailed, handler: (event: FilesRegistrationBatchFailedEventArgs) => void): void\n addEventListener(eventName: TransferUploadEvent.FileAckFailed, handler: (event: FileAckFailedEventArgs) => void): void\n addEventListener(eventName: TransferUploadEvent.FilesBatchAckFailed, handler: (event: FilesBatchAckFailedEventArgs) => void): void\n addEventListener(eventName: TransferUploadEvent.FileChunkUploadProgressed, handler: (event: FileChunkUploadProgressedEventArgs) => void): void\n addEventListener(eventName: TransferUploadEvent.FileChunkUploadStarted, handler: (event: FileChunkUploadEventArgs) => void): void\n addEventListener(eventName: TransferUploadEvent.FileChunkUploadCompleted, handler: (event: FileChunkUploadCompletedEventArgs) => void): void\n addEventListener(eventName: TransferUploadEvent.FileChunkUploadCompletedPartially, handler: (event: FileChunkUploadCompletedPartiallyEventArgs) => void): void\n addEventListener(eventName: TransferUploadEvent.FileChunkUploadFailed, handler: (event: FileChunkUploadFailedEventArgs) => void): void\n addEventListener(eventName: TransferUploadEvent.TransferProgressed, handler: (event: TransferUploadProgressedEventArgs) => void): void\n addEventListener(eventName: TransferUploadEvent.TransferCompleted, handler: (event: TransferUploadCompletedEventArgs) => void): void\n addEventListener(eventName: TransferUploadEvent.TransferMetadataDetermined, handler: (event: TransferMetadataDeterminedEventArgs) => 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 exportAsString(): string {\n const exportData = this.export();\n return JSON.stringify(exportData);\n }\n\n export(): TransferUploadExportData<T> {\n if (!this.#transferState?.files)\n throw new TransferUploadError(`Can't export not started Transfer`); // fileStatuses are not created yet and it really doesn't make any sens to export not started transfer\n\n return {\n transferMetadata: this.getTransferMetadataExportValue(),\n info: this.getInfoExportValue(),\n state: this.#transferState.export(),\n registeredFiles: this.#filesRegistrar ? Array.from(this.#filesRegistrar.export().entries()) : undefined,\n };\n }\n\n private getInfoExportValue(): Readonly<TransferUploadInfo<T> | TransferUploadExportDataAppendInfo<T>> {\n if (this.isUploadAppendInfo(this.#info)) {\n const { e2eeData, ...appendInfoWithoutE2eeData } = this.#info;\n\n return appendInfoWithoutE2eeData;\n }\n\n // Until the transfer is initialized the key is still needed - a resumed run re-initializes from the info.\n if (!this.#transferMetadata)\n return this.#info;\n\n const { e2eeKey, ...infoWithoutE2eeKey } = this.#info;\n\n return infoWithoutE2eeKey;\n }\n\n private getTransferMetadataExportValue(): TransferUploadExportDataMetadata | undefined {\n if (!this.#transferMetadata)\n return undefined;\n\n const { encryptionData, ...rest } = this.#transferMetadata;\n\n return {\n ...rest,\n encryptionData: !encryptionData ? undefined : {\n ivHex: uint8ArrayToHex(encryptionData.iv),\n keyHex: uint8ArrayToHex(encryptionData.key),\n },\n };\n }\n\n static recreate<T extends FileDetails>(transferExportData: TransferUploadExportData<T>, config: TransferUploadConfig, chunkStreamProviderFactory: UploaderChunkStreamProviderFactory<T>, apiClient: ApiClient, fileServerClientFactory: FileServerClientFactory, eventsEngine: EventsEngine, concurrencyController: ConcurrencyController, cryptography: CryptographyProvider, acker: TransferUploadAcker): TransferUpload<T> {\n try {\n TransferUpload.validateRecreateParams(transferExportData);\n\n const recreatedInfo = {\n ...transferExportData.info,\n isLegacyTransfer: transferExportData.registeredFiles === undefined,\n };\n\n const transfer = new TransferUpload<T>(chunkStreamProviderFactory, apiClient, fileServerClientFactory, eventsEngine, recreatedInfo, config, concurrencyController, cryptography, acker);\n\n transfer.#transferMetadata = this.recreateTransferMetadata(transferExportData.transferMetadata);\n transfer.#transferState = new TransferUploadState(transferExportData.info.files, eventsEngine, config.currentRatesTimespanInMs, config.progressEventThrottlingInMs, transferExportData.state);\n\n if (transfer.isUploadAppendInfo(transferExportData.info))\n transfer.#transferDownloadUrl = transferExportData.info.transferDownloadUrl;\n\n if (transferExportData.registeredFiles)\n transfer.#filesRegistrar!.recoverFromExportedState(transferExportData.registeredFiles);\n\n return transfer;\n }\n catch (error) {\n if (error instanceof TransferUploadError)\n throw error;\n else\n throw new TransferUploadError(`Unhandled error occured. See 'cause' for more details`, { cause: error as Error });\n }\n }\n\n private static recreateTransferMetadata(transferMetadata?: TransferUploadExportDataMetadata): TransferUploadMetadata | undefined {\n if (!transferMetadata)\n return undefined;\n\n const { encryptionData, ...rest } = transferMetadata;\n\n return {\n ...rest,\n encryptionData: !encryptionData ? undefined : {\n iv: hexToUint8Array(encryptionData.ivHex),\n key: hexToUint8Array(encryptionData.keyHex),\n },\n };\n }\n\n private static validateRecreateParams<T extends FileDetails>(transferExportData: TransferUploadExportData<T>) {\n if (!transferExportData.info)\n throw new TransferUploadError(`Info must be defined`);\n\n if (!transferExportData.state)\n throw new TransferUploadError(`State must be defined`);\n\n if (transferExportData.transferMetadata && (!transferExportData.transferMetadata.transferId || !transferExportData.transferMetadata.transferKey || !transferExportData.transferMetadata.transferFileServerUrl))\n throw new TransferUploadError(`Not all transfer metadata properties are defined`);\n\n if (transferExportData.transferMetadata?.encryptionData) {\n if (transferExportData.transferMetadata.encryptionData.ivHex.length !== 32)\n throw new TransferUploadError(`Encryption IV must be 16 bytes long`);\n if (transferExportData.transferMetadata.encryptionData.keyHex.length !== 64)\n throw new TransferUploadError(`Encryption key must be 32 bytes long`);\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"transferUpload.js","sourceRoot":"","sources":["../../../src/uploader/transferUpload.ts"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,MAAM,gCAAgC,CAAC;AACjE,OAAO,mBAAmB,MAAM,0BAA0B,CAAC;AAC3D,OAAO,cAAc,MAAM,kCAAkC,CAAC;AAC9D,OAAO,mBAAmB,MAAM,0BAA0B,CAAC;AAC3D,OAAO,cAAc,MAAM,oCAAoC,CAAC;AAChE,OAAO,sBAAmD,MAAM,6BAA6B,CAAC;AAC9F,OAAO,yBAAiE,MAAM,uCAAuC,CAAC;AACtH,OAAO,QAAQ,MAAM,0BAA0B,CAAC;AAChD,OAAO,OAAO,MAAM,gCAAgC,CAAC;AACrD,OAAO,mBAAmB,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAyClG,MAAM,CAAC,OAAO,OAAO,cAAc;IAC/B,iBAAiB,CAAS;IAE1B,2BAA2B,CAAwC;IACnE,UAAU,CAAY;IACtB,wBAAwB,CAA0B;IAClD,aAAa,CAAe;IAC5B,KAAK,CAAsD;IAC3D,iBAAiB,CAAU;IAC3B,OAAO,CAAuB;IAC9B,sBAAsB,CAAwB;IAC9C,aAAa,CAAuB;IACpC,MAAM,CAAsB;IAC5B,YAAY,CAAyB;IAErC,cAAc,CAAuB;IACrC,iBAAiB,CAA0B;IAC3C,oBAAoB,CAAU;IAC9B,wBAAwB,CAAU;IAClC,+BAA+B,CAA8D;IAE7F,YAAY,CAA0B;IACtC,YAAY,CAA0B;IACtC,8BAA8B,CAA4C;IAE1E,eAAe,CAAqC;IAEpD,kBAAkB,CAA2B;IAC7C,kBAAkB,CAA2B;IAE7C,mBAAmB,GAAG,KAAK,CAAC;IAE5B,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,cAAc,EAAE,MAAM,IAAI,cAAc,CAAC,WAAW,CAAC;IACrE,CAAC;IAED,IAAI,mBAAmB;QACnB,OAAO,IAAI,CAAC,cAAc,EAAE,mBAAmB,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,gBAAgB;QAChB,OAAO,IAAI,CAAC,cAAc,EAAE,gBAAgB,IAAI,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,kBAAkB;QAClB,OAAO,IAAI,CAAC,cAAc,EAAE,kBAAkB,IAAI,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,gBAAgB;QAChB,OAAO,IAAI,CAAC,cAAc,EAAE,gBAAgB,IAAI,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,oBAAoB;QACpB,IAAI,IAAI,CAAC,gBAAgB,KAAK,CAAC;YAC3B,OAAO,CAAC,CAAC;QAEb,OAAO,CAAC,IAAI,CAAC,kBAAkB,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC;IACnE,CAAC;IAED,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;IAC5B,CAAC;IAED,IAAI,gBAAgB;QAChB,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAClC,CAAC;IAED,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,iBAAiB,EAAE,UAAU,CAAC;IAC9C,CAAC;IAED,YAAY,0BAAiE,EAAE,SAAoB,EAAE,uBAAgD,EAAE,YAA0B,EAAE,IAAyD,EAAE,MAA4B,EAAE,qBAA4C,EAAE,YAAkC,EAAE,KAA0B,EAAE,WAAmC;QACzZ,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;YACvB,MAAM,IAAI,mBAAmB,CAAC,sBAAsB,CAAC,CAAC;QAE1D,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;QAEvG,IAAI,CAAC,2BAA2B,GAAG,0BAA0B,CAAC;QAC9D,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,wBAAwB,GAAG,uBAAuB,CAAC;QACxD,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAClC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,IAAI,KAAK,CAAC;QACxD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,sBAAsB,GAAG,qBAAqB,CAAC;QACpD,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAClC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAEhC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,iBAAiB;YACzC,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,IAAI,sBAAsB,CAAC,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1E,CAAC;IAEO,cAAc;QAClB,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC;IAEO,kBAAkB,CAAC,IAAyD;QAChF,OAAQ,IAAoC,CAAC,WAAW,KAAK,SAAS,CAAC;IAC3E,CAAC;IAEO,8BAA8B;QAClC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;YACpC,MAAM,IAAI,mBAAmB,CAAC,6CAA6C,CAAC,CAAC;QAEjF,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC;QAE3D,IAAI,CAAC,iBAAiB,GAAG;YACrB,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU;YACjC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW;YACnC,qBAAqB,EAAE,IAAI,CAAC,KAAK,CAAC,qBAAqB;YACvD,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc;YACzC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;SACtC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,mBAAgC,EAAE,mBAAgC;QACxE,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;QAEvE,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAEhC,IAAI,CAAC;YACD,IAAI,CAAC,YAAY,GAAG,mBAAmB,CAAC;YACxC,IAAI,CAAC,YAAY,GAAG,mBAAmB,CAAC;YACxC,IAAI,CAAC,8BAA8B,GAAG,yBAAyB,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;YAE1G,IAAI,CAAC,IAAI,CAAC,cAAc;gBACpB,IAAI,CAAC,cAAc,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,wBAAwB,EAAE,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;;gBAE/J,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;YAElC,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;YAElC,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAEhC,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB;gBAChD,IAAI,CAAC,8BAA8B,EAAE,CAAC;iBACrC,IAAI,CAAC,IAAI,CAAC,iBAAiB;gBAC5B,MAAM,IAAI,CAAC,iCAAiC,EAAE,CAAC;YAEnD,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAEhC,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAE3C,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;YAElF,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAiB,CAAC;YAErD,KAAK,MAAM,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,UAAU,EAAE,CAAC;gBACtD,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAEhE,IAAI,UAAU,CAAC,WAAW;oBACtB,SAAS;gBAEb,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;gBAEpE,IAAI,CAAC,kBAAkB,CAAC,wBAAwB;oBAC5C,SAAS;gBAEb,IAAI,UAAU,CAAC,iBAAiB,EAAE,CAAC;oBAC/B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;oBAC1B,SAAS;gBACb,CAAC;gBAED,KAAK,MAAM,KAAK,IAAI,oBAAoB,EAAE,EAAE,CAAC;oBACzC,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,CAAC;oBAErE,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE,CAAC;wBAC9B,gBAAgB,EAAE,CAAC;wBACnB,MAAM;oBACV,CAAC;oBAED,MAAM,kBAAkB,GAAG,IAAI,CAAC,6BAA6B,CAAC,IAAI,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;oBAE9H,MAAM,yBAAyB,GAAG,kBAAkB,CAAC,OAAO,CAAC,GAAG,EAAE;wBAC9D,mBAAmB,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;oBAC1D,CAAC,CAAC,CAAC;oBAEH,mBAAmB,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;oBAEnD,IAAI,IAAI,CAAC,oBAAoB,EAAE;wBAC3B,MAAM;gBACd,CAAC;gBAED,IAAI,IAAI,CAAC,oBAAoB,EAAE;oBAC3B,MAAM;YACd,CAAC;YAED,MAAM,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;YAEzD,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAE1B,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,cAAc,CAAC,OAAO;gBACrD,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;iBACpC,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,cAAc,CAAC,QAAQ;gBAC3D,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;iBACrC,IAAI,IAAI,CAAC,kBAAkB,KAAK,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,eAAe,EAAE;gBAChF,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;iBACpC,CAAC;gBACF,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC9B,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,IAAI,CAAC,iBAAkB,EAAE,IAAI,CAAC,oBAAqB,EAAE,IAAI,CAAC,wBAAwB,EAAE,IAAI,CAAC,+BAA+B,CAAC,CAAC;YACpK,CAAC;QACL,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YACX,sIAAsI;YACtI,IAAI,CAAC,IAAI,CAAC,cAAc;gBACpB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;iBAC3D,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,cAAc,CAAC,OAAO,EAAE,CAAC;gBAC7D,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;gBACrC,OAAO;YACX,CAAC;iBACI,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,cAAc,CAAC,QAAQ,EAAE,CAAC;gBAC9D,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;gBACtC,OAAO;YACX,CAAC;;gBAEG,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;YAEzC,IAAI,KAAK,YAAY,mBAAmB;gBACpC,MAAM,KAAK,CAAC;;gBAEZ,MAAM,IAAI,mBAAmB,CAAC,uDAAuD,EAAE,EAAE,KAAK,EAAE,KAAc,EAAE,CAAC,CAAC;QAC1H,CAAC;gBACO,CAAC;YACL,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAEnC,IAAI,CAAC,2BAA2B,EAAE,CAAC;YACnC,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;QACrC,CAAC;IACL,CAAC;IAEO,sBAAsB,CAAC,UAAwC,EAAE,mBAAgC,EAAE,mBAAgC;QACvI,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,oBAAoB,EAAE,EAAE,CAAC,CAAC,CAAC;QAC3H,MAAM,0BAA0B,GAAG,CAAC,cAA+B,EAAE,YAAoB,EAAE,EAAE,CAAC,IAAI,CAAC,cAAe,CAAC,aAAa,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;QAC/J,MAAM,qBAAqB,GAAG,CAAC,cAA+B,EAAE,YAAoB,EAAE,MAAc,EAAE,KAAY,EAAE,EAAE,CAAC,IAAI,CAAC,cAAe,CAAC,aAAa,CAAC,cAAc,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAEvM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,iBAAiB,EAAE,cAAc,EAAE,IAAI,CAAC,8BAA8B,EAAE,MAAM,CAAC,CAAC;QAC1H,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,iBAAkB,CAAC,WAAW,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;QACxL,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,IAAI,CAAC,iBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,iBAAkB,CAAC,WAAW,EAAE,IAAI,CAAC,8BAA8B,EAAE,MAAM,CAAC,CAAC;IACtJ,CAAC;IAEO,gBAAgB;QACpB,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;QAEvD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YACzB,+FAA+F;YAC/F,MAAM,iBAAiB,GAAG,IAAI,CAAC,cAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;YAC9G,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;YAE7C,OAAO;gBACH,IAAI;gBACJ,oBAAoB,EAAE,GAAG,EAAE,CAAC,IAAI,cAAc,CAAC,iBAAiB,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAC,iBAAiB,EAAE;aAC3H,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,KAAK,CAAC,qBAAqB;QAC/B,MAAM,OAAO,CAAC,UAAU,CAAC;YACrB,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE;YACzB,IAAI,CAAC,eAAe,EAAE,IAAI,EAAE;YAC5B,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;SACrB,CAAC,CAAC;IACP,CAAC;IAEO,KAAK,CAAC,uBAAuB,CAAC,IAAiB;QACnD,IAAI,IAAI,CAAC,iBAAiB;YACtB,OAAO,EAAE,wBAAwB,EAAE,IAAI,EAAE,CAAC;QAE9C,OAAO,MAAM,IAAI,CAAC,eAAgB,CAAC,uBAAuB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAChF,CAAC;IAEO,wBAAwB;QAC5B,MAAM,SAAS,GAAwC;YACnD,UAAU,EAAE,IAAI,CAAC,iBAAkB,CAAC,UAAU;YAC9C,aAAa,EAAE,IAAI,CAAC,iBAAkB,CAAC,qBAAqB;YAC5D,MAAM,EAAE,IAAI,CAAC,iBAAkB,CAAC,cAAc;SACjD,CAAC;QAEF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,0BAA0B,EAAE,SAAS,CAAC,CAAC;QACnF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;IACrE,CAAC;IAEO,KAAK,CAAC,6BAA6B,CAAC,IAAO,EAAE,kBAA0B,EAAE,gBAAwB,EAAE,gBAAqC;QAC5I,IAAI,kBAAkB,GAAG,CAAC,CAAC;QAE3B,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/D,MAAM,YAAY,GAAG,cAAc,EAAE,YAAY,CAAC;QAElD,IAAI,CAAC;YACD,IAAI,CAAC,cAAe,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,CAAC,CAAC;YAE7G,MAAM,mBAAmB,GAAG,IAAI,CAAC,2BAA2B,CAAC,yBAAyB,CAAC,IAAI,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,IAAI,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC;YAE3K,MAAM,oBAAoB,GAAG,CAAC,SAA6B,EAAE,EAAE;gBAC3D,kBAAkB,IAAI,SAAS,CAAC,8BAA8B,CAAC;gBAC/D,IAAI,CAAC,cAAe,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC;YAC/H,CAAC,CAAC;YAEF,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,mBAAmB,EAAE,oBAAoB,CAAC,CAAC;YAE9F,IAAI,kBAAkB,KAAK,gBAAgB;gBACvC,IAAI,CAAC,cAAe,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,CAAC,CAAC;;gBAE/G,IAAI,CAAC,cAAe,CAAC,6BAA6B,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,IAAI,CAAC,YAAa,CAAC,MAAM,CAAC,CAAC;YAE3K,IAAI,IAAI,CAAC,cAAe,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,iBAAiB;gBAC/D,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YACX,MAAM,UAAU,GAAG,KAAc,CAAC;YAElC,MAAM,iBAAiB,GAAG,UAAU,CAAC,KAAK,KAAK,SAAS;mBACjD,UAAU,CAAC,KAAK,YAAY,mBAAmB;mBAC/C,UAAU,CAAC,KAAK,CAAC,OAAO,KAAK,gBAAgB;mBAC7C,IAAI,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;YAE1C,IAAI,iBAAiB;gBACjB,IAAI,CAAC,cAAe,CAAC,6BAA6B,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,IAAI,CAAC,YAAa,CAAC,MAAM,CAAC,CAAC;iBACtK,CAAC;gBACF,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;gBACtD,IAAI,CAAC,cAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,EAAE,KAAc,CAAC,CAAC;YAClK,CAAC;QACL,CAAC;gBACO,CAAC;YACL,gBAAgB,EAAE,CAAC;QACvB,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,IAAO,EAAE,MAA0B,EAAE,mBAAwC,EAAE,oBAA6D;QAChK,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,EAAE,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;QAEjG,MAAM,OAAO,GAAyB;YAClC,GAAG;YACH,kBAAkB,EAAE,mBAAmB,CAAC,kBAAkB;YAC1D,kBAAkB,EAAE,mBAAmB,CAAC,kBAAkB;SAC7D,CAAC;QAEF,MAAM,gBAAgB,GAAG,IAAI,CAAC,wBAAwB,CAAC,4BAA4B,CAAC,IAAI,CAAC,iBAAkB,CAAC,qBAAqB,EAAE,IAAI,CAAC,iBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,iBAAkB,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,6BAA6B,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QAE7R,MAAM,qBAAqB,GAAG,gBAAgB,CAAC,aAAa,CAAC,OAAO,EAAE,mBAAmB,EAAE,IAAI,CAAC,YAAa,EAAE,IAAI,CAAC,YAAa,CAAC,CAAC;QAEnI,gBAAgB,CAAC,gBAAgB,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;QAEpE,MAAM,qBAAqB,CAAC;IAChC,CAAC;IAEO,oBAAoB,CAAC,KAAc;QACvC,IAAI,KAAK,YAAY,OAAO;YACxB,OAAO,oBAAoB,KAAK,CAAC,OAAO,EAAE,CAAC;QAE/C,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;YAC5B,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;YACtG,OAAO,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,WAAW,kBAAkB,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;QAC/F,CAAC;QAED,OAAQ,KAAe,EAAE,OAAO,CAAC;IACrC,CAAC;IAEO,uBAAuB,CAAC,WAAwB,EAAE,WAAwB;QAC9E,IAAI,IAAI,CAAC,mBAAmB;YACxB,MAAM,IAAI,mBAAmB,CAAC,4CAA4C,CAAC,CAAC;QAEhF,IAAI,IAAI,CAAC,cAAc;eAChB,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,cAAc,CAAC,MAAM;eACpD,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,cAAc,CAAC,OAAO;eACrD,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,cAAc,CAAC,WAAW;eACzD,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,cAAc,CAAC,MAAM;YACvD,MAAM,IAAI,mBAAmB,CAAC,kBAAkB,cAAc,CAAC,IAAI,CAAC,cAAe,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC;QAE3H,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;YACvB,MAAM,IAAI,mBAAmB,CAAC,2CAA2C,CAAC,CAAC;QAE/E,IAAI,WAAW,CAAC,MAAM;YAClB,MAAM,IAAI,mBAAmB,CAAC,wDAAwD,CAAC,CAAC;QAE5F,IAAI,WAAW,CAAC,OAAO;YACnB,MAAM,IAAI,mBAAmB,CAAC,yDAAyD,CAAC,CAAC;IACjG,CAAC;IAEO,wBAAwB;QAC5B,IAAI,CAAC,kBAAkB,GAAG,GAAG,EAAE;YAC3B,IAAI,IAAI,CAAC,cAAe,CAAC,MAAM,KAAK,cAAc,CAAC,OAAO;gBACtD,MAAM,IAAI,mBAAmB,CAAC,kBAAkB,cAAc,CAAC,IAAI,CAAC,cAAe,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAC;YAE9H,IAAI,CAAC,cAAe,CAAC,sBAAsB,EAAE,CAAC;QAClD,CAAC,CAAC;QAEF,IAAI,CAAC,kBAAkB,GAAG,GAAG,EAAE;YAC3B,IAAI,IAAI,CAAC,uBAAuB,EAAE;gBAC9B,OAAO;YAEX,IAAI,IAAI,CAAC,cAAe,CAAC,MAAM,KAAK,cAAc,CAAC,OAAO;gBACtD,MAAM,IAAI,mBAAmB,CAAC,kBAAkB,cAAc,CAAC,IAAI,CAAC,cAAe,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC;YAE/H,IAAI,CAAC,cAAe,CAAC,sBAAsB,EAAE,CAAC;QAClD,CAAC,CAAC;QAEF,IAAI,CAAC,YAAa,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACtE,IAAI,CAAC,YAAa,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC1E,CAAC;IAEO,2BAA2B;QAC/B,IAAI,CAAC,YAAa,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAmB,CAAC,CAAC;QAC1E,IAAI,CAAC,YAAa,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAmB,CAAC,CAAC;QAE1E,IAAI,CAAC,8BAA8B,EAAE,OAAO,EAAE,CAAC;IACnD,CAAC;IAEO,oBAAoB;QACxB,OAAO,IAAI,CAAC,cAAe,CAAC,MAAM,KAAK,cAAc,CAAC,OAAO,IAAI,IAAI,CAAC,YAAY,EAAE,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/I,CAAC;IAEO,uBAAuB;QAC3B,OAAO,4BAA4B,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IACnE,CAAC;IAEO,KAAK,CAAC,iCAAiC;QAC3C,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;YACnC,MAAM,IAAI,mBAAmB,CAAC,uCAAuC,CAAC,CAAC;QAE3E,IAAI,CAAC;YACD,MAAM,0BAA0B,GAAG,MAAM,IAAI,CAAC,sCAAsC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAEzG,MAAM,OAAO,GAA8B;gBACvC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU;gBACjC,IAAI,EAAE,OAAO,CAAC,0BAA0B,CAAC;gBACzC,YAAY,EAAE,0BAA0B,EAAE,aAAa;gBACvD,YAAY,EAAE,IAAI,CAAC,gBAAgB;gBACnC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;gBACjB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;gBACrB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;gBAC3B,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;gBAC3B,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;gBACzB,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY;gBACrC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;gBACrB,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc;gBACnC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;gBAC/B,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB;gBACjD,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc;gBACzC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa;gBACvC,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB;gBACjD,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY;gBACrC,OAAO,EAAE,CAAC,IAAI,CAAC,iBAAiB;aACnC,CAAC;YAEF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,8BAA8B,EAAE,MAAM,CAAC,CAAC;YAEhH,IAAI,CAAC,iBAAiB,GAAG;gBACrB,UAAU,EAAE,QAAQ,CAAC,UAAU;gBAC/B,WAAW,EAAE,QAAQ,CAAC,WAAW;gBACjC,qBAAqB,EAAE,QAAQ,CAAC,WAAW;gBAC3C,cAAc,EAAE,QAAQ,CAAC,cAAc;gBACvC,cAAc,EAAE,0BAA0B,EAAE,cAAc;aAC7D,CAAC;QACN,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,mBAAmB,CAAC,6CAA6C,EAAE,EAAE,KAAK,EAAE,KAAc,EAAE,CAAC,CAAC;QAC5G,CAAC;IACL,CAAC;IAEO,iBAAiB,CAAC,cAA+B;QACrD,OAAO,IAAI,CAAC,eAAe,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC;IACnE,CAAC;IAEO,cAAc,CAAC,IAAiB;QACpC,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,CAAC,cAAe,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YAC/D,OAAO;QACX,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE/D,IAAI,CAAC,cAAc;YACf,MAAM,IAAI,mBAAmB,CAAC,qCAAqC,IAAI,CAAC,UAAU,+DAA+D,CAAC,CAAC;QAEvJ,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,cAAc,CAAC,YAAY,EAAE,WAAW,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;IAC3I,CAAC;IAEO,eAAe;QACnB,IAAI,IAAI,CAAC,iBAAiB;YACtB,OAAO,KAAK,CAAC;QAEjB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,cAAe,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,CAAC;IAC/F,CAAC;IAEO,KAAK,CAAC,sCAAsC,CAAC,OAAgB;QACjE,IAAI,CAAC,OAAO;YACR,OAAO,SAAS,CAAC;QAErB,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;QACxD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC9D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACxD,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;QAEtD,MAAM,UAAU,GAAG,iBAAiB,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QACvD,MAAM,aAAa,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;QAElD,OAAO;YACH,cAAc,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE;YAC3B,IAAI;YACJ,IAAI;YACJ,aAAa;SAChB,CAAC;IACN,CAAC;IAEO,KAAK,CAAC,gBAAgB;QAC1B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;QAEhE,IAAI,IAAI,CAAC,cAAc,EAAE;YACrB,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;;YAE9B,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;IACzC,CAAC;IAEO,KAAK,CAAC,gBAAgB;QAC1B,IAAI,CAAC;YACD,MAAM,OAAO,GAAyB;gBAClC,UAAU,EAAE,IAAI,CAAC,iBAAkB,CAAC,UAAU;aACjD,CAAC;YAEF,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,8BAA8B,EAAE,MAAM,CAAC,CAAC;QAC9F,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,mBAAmB,CAAC,0CAA0C,EAAE,EAAE,KAAK,EAAE,KAAc,EAAE,CAAC,CAAC;QACzG,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,mBAAmB;QAC7B,IAAI,CAAC;YACD,MAAM,OAAO,GAA4B;gBACrC,UAAU,EAAE,IAAI,CAAC,iBAAkB,CAAC,UAAU;gBAC9C,WAAW,EAAE,IAAI,CAAC,iBAAkB,CAAC,WAAW;gBAChD,QAAQ,EAAE,KAAK;aAClB,CAAC;YAEF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,8BAA8B,EAAE,MAAM,CAAC,CAAC;YAE9G,IAAI,CAAC,oBAAoB,GAAG,QAAQ,CAAC,WAAW,CAAC;YACjD,IAAI,CAAC,wBAAwB,GAAG,QAAQ,CAAC,eAAe,CAAC;YACzD,IAAI,CAAC,+BAA+B,GAAG,QAAQ,CAAC,sBAAsB,CAAC;QAC3E,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,mBAAmB,CAAC,2CAA2C,EAAE,EAAE,KAAK,EAAE,KAAc,EAAE,CAAC,CAAC;QAC1G,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,WAAyB;QAClC,IAAI,CAAC;YACD,MAAM,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;YAE5H,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBAC5B,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,OAAO;YACX,CAAC;YAED,IAAI,CAAC,2BAA2B,EAAE,CAAC;YAEnC,IAAI,CAAC,cAAe,CAAC,uBAAuB,EAAE,CAAC;YAE/C,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;gBACxB,0EAA0E;YAC9E,CAAC;iBACI,CAAC;gBACF,IAAI,CAAC;oBACD,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;gBAC9C,CAAC;gBACD,MAAM,CAAC;oBACH,wGAAwG;gBAC5G,CAAC;YACL,CAAC;YAED,IAAI,CAAC,cAAe,CAAC,gBAAgB,EAAE,CAAC;QAC5C,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YACX,IAAI,KAAK,YAAY,mBAAmB;gBACpC,MAAM,KAAK,CAAC;;gBAEZ,MAAM,IAAI,mBAAmB,CAAC,uDAAuD,EAAE,EAAE,KAAK,EAAE,KAAc,EAAE,CAAC,CAAC;QAC1H,CAAC;IACL,CAAC;IAEO,gBAAgB;QACpB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,CAAC;QACrE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IAClE,CAAC;IAEO,2BAA2B;QAC/B,IAAI,CAAC,IAAI,CAAC,cAAc;YACpB,OAAO;QAEX,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,cAAc,CAAC,MAAM;eACjD,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,cAAc,CAAC,OAAO;eACrD,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,cAAc,CAAC,WAAW;eACzD,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,cAAc,CAAC,MAAM;YACvD,MAAM,IAAI,mBAAmB,CAAC,kBAAkB,cAAc,CAAC,IAAI,CAAC,cAAe,CAAC,MAAM,CAAC,+BAA+B,CAAC,CAAC;IACpI,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,WAAyB;QACrD,IAAI,CAAC;YACD,MAAM,OAAO,GAA0B;gBACnC,UAAU,EAAE,IAAI,CAAC,iBAAkB,CAAC,UAAU;gBAC9C,WAAW,EAAE,IAAI,CAAC,iBAAkB,CAAC,WAAW;aACnD,CAAC;YAEF,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,mBAAmB,CAAC,0CAA0C,EAAE,EAAE,KAAK,EAAE,KAAc,EAAE,CAAC,CAAC;QACzG,CAAC;IACL,CAAC;IAiBD,gBAAgB,CAAC,SAAiB,EAAE,OAA4B;QAC5D,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED,cAAc;QACV,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACtC,CAAC;IAED,MAAM;QACF,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK;YAC3B,MAAM,IAAI,mBAAmB,CAAC,mCAAmC,CAAC,CAAC,CAAC,sGAAsG;QAE9K,OAAO;YACH,gBAAgB,EAAE,IAAI,CAAC,8BAA8B,EAAE;YACvD,IAAI,EAAE,IAAI,CAAC,kBAAkB,EAAE;YAC/B,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;YACnC,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;SAC1G,CAAC;IACN,CAAC;IAEO,kBAAkB;QACtB,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACtC,MAAM,EAAE,QAAQ,EAAE,GAAG,yBAAyB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;YAE9D,OAAO,yBAAyB,CAAC;QACrC,CAAC;QAED,0GAA0G;QAC1G,IAAI,CAAC,IAAI,CAAC,iBAAiB;YACvB,OAAO,IAAI,CAAC,KAAK,CAAC;QAEtB,MAAM,EAAE,OAAO,EAAE,GAAG,kBAAkB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAEtD,OAAO,kBAAkB,CAAC;IAC9B,CAAC;IAEO,8BAA8B;QAClC,IAAI,CAAC,IAAI,CAAC,iBAAiB;YACvB,OAAO,SAAS,CAAC;QAErB,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAE3D,OAAO;YACH,GAAG,IAAI;YACP,cAAc,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC1C,KAAK,EAAE,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC;gBACzC,MAAM,EAAE,eAAe,CAAC,cAAc,CAAC,GAAG,CAAC;aAC9C;SACJ,CAAC;IACN,CAAC;IAED,MAAM,CAAC,QAAQ,CAAwB,kBAA+C,EAAE,MAA4B,EAAE,0BAAiE,EAAE,SAAoB,EAAE,uBAAgD,EAAE,YAA0B,EAAE,qBAA4C,EAAE,YAAkC,EAAE,KAA0B,EAAE,WAAmC;QAC1a,IAAI,CAAC;YACD,cAAc,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,CAAC;YAE1D,MAAM,aAAa,GAAG;gBAClB,GAAG,kBAAkB,CAAC,IAAI;gBAC1B,gBAAgB,EAAE,kBAAkB,CAAC,eAAe,KAAK,SAAS;aACrE,CAAC;YAEF,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAI,0BAA0B,EAAE,SAAS,EAAE,uBAAuB,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,qBAAqB,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;YAErM,QAAQ,CAAC,iBAAiB,GAAG,IAAI,CAAC,wBAAwB,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;YAChG,QAAQ,CAAC,cAAc,GAAG,IAAI,mBAAmB,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,wBAAwB,EAAE,MAAM,CAAC,2BAA2B,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAE9L,IAAI,QAAQ,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,IAAI,CAAC;gBACpD,QAAQ,CAAC,oBAAoB,GAAG,kBAAkB,CAAC,IAAI,CAAC,mBAAmB,CAAC;YAEhF,IAAI,kBAAkB,CAAC,eAAe;gBAClC,QAAQ,CAAC,eAAgB,CAAC,wBAAwB,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;YAE3F,OAAO,QAAQ,CAAC;QACpB,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YACX,IAAI,KAAK,YAAY,mBAAmB;gBACpC,MAAM,KAAK,CAAC;;gBAEZ,MAAM,IAAI,mBAAmB,CAAC,uDAAuD,EAAE,EAAE,KAAK,EAAE,KAAc,EAAE,CAAC,CAAC;QAC1H,CAAC;IACL,CAAC;IAEO,MAAM,CAAC,wBAAwB,CAAC,gBAAmD;QACvF,IAAI,CAAC,gBAAgB;YACjB,OAAO,SAAS,CAAC;QAErB,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,GAAG,gBAAgB,CAAC;QAErD,OAAO;YACH,GAAG,IAAI;YACP,cAAc,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC1C,EAAE,EAAE,eAAe,CAAC,cAAc,CAAC,KAAK,CAAC;gBACzC,GAAG,EAAE,eAAe,CAAC,cAAc,CAAC,MAAM,CAAC;aAC9C;SACJ,CAAC;IACN,CAAC;IAEO,MAAM,CAAC,sBAAsB,CAAwB,kBAA+C;QACxG,IAAI,CAAC,kBAAkB,CAAC,IAAI;YACxB,MAAM,IAAI,mBAAmB,CAAC,sBAAsB,CAAC,CAAC;QAE1D,IAAI,CAAC,kBAAkB,CAAC,KAAK;YACzB,MAAM,IAAI,mBAAmB,CAAC,uBAAuB,CAAC,CAAC;QAE3D,IAAI,kBAAkB,CAAC,gBAAgB,IAAI,CAAC,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,UAAU,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,WAAW,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,qBAAqB,CAAC;YAC1M,MAAM,IAAI,mBAAmB,CAAC,kDAAkD,CAAC,CAAC;QAEtF,IAAI,kBAAkB,CAAC,gBAAgB,EAAE,cAAc,EAAE,CAAC;YACtD,IAAI,kBAAkB,CAAC,gBAAgB,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,KAAK,EAAE;gBACtE,MAAM,IAAI,mBAAmB,CAAC,qCAAqC,CAAC,CAAC;YACzE,IAAI,kBAAkB,CAAC,gBAAgB,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,KAAK,EAAE;gBACvE,MAAM,IAAI,mBAAmB,CAAC,sCAAsC,CAAC,CAAC;QAC9E,CAAC;IACL,CAAC;CACJ","sourcesContent":["import TransferUploadState from \"./state/transferUploadState.js\";\r\nimport TransferUploadError from \"./transferUploadError.js\";\r\nimport TransferStatus from \"../utils/types/transferStatus.js\";\r\nimport TransferUploadEvent from './transferUploadEvent.js';\r\nimport ChunksIterator from './chunksIterator/chunksIterator.js';\r\nimport TransferFilesRegistrar, { type RegistrationResult } from './transferFilesRegistrar.js';\r\nimport mergeAbortAndPauseSignals, { type MergedAbortAndPauseController } from '../utils/mergeAbortAndPauseSignals.js';\r\nimport ApiError from '../utils/api/apiError.js';\r\nimport FsError from '../utils/fileSystem/fsError.js';\r\nimport ApiFilemail449Error from '../utils/api/apiFilemail449Error.js';\r\nimport { promiseAllSettled } from '../utils/promiseAll.js';\r\nimport { isTransferFailureAbortReason } from './transferFailureAbortReason.js';\r\nimport { concatUint8Arrays, hexToUint8Array, uint8ArrayToHex } from '../utils/uint8ArrayUtils.js';\r\n\r\nimport type ApiClient from \"../utils/api/apiClient.js\";\r\nimport type { InitializeTransferRequest } from \"../utils/api/dtos/initializeTransferRequest.js\";\r\nimport type SendFileChunkRequest from '../utils/api/dtos/sendFileChunkRequest.js';\r\nimport type FileServerClientFactory from '../utils/api/fileServerClientFactory.js';\r\nimport type FileDetails from \"../utils/fileSystem/fileDetails.js\";\r\nimport type TransferUploadMetadata from \"./export/transferUploadMetadata.js\";\r\nimport type TransferUploadInfo from \"./options/transferUploadInfo.js\";\r\nimport type { TransferUploadAppendInfo } from './options/transferUploadAppendInfo.js';\r\nimport type ResetTransferRequest from '../utils/api/dtos/resetTransferRequest.js';\r\nimport type EventsEngine from '../utils/events/eventsEngine.js';\r\nimport type FileChunkUploadEventArgs from './eventArgs/fileChunkUploadEventArgs.js';\r\nimport type FileChunkUploadFailedEventArgs from './eventArgs/fileChunkUploadFailedEventArgs.js';\r\nimport type ChunkProgressEvent from '../utils/events/chunkProgressEvent.js';\r\nimport type FinalizeTransferRequest from '../utils/api/dtos/finalizeTransferRequest.js';\r\nimport type FileUploadEventArgs from './eventArgs/fileUploadEventArgs.js';\r\nimport type TransferUploadCompletedEventArgs from './eventArgs/transferUploadCompletedEventArgs.js';\r\nimport type CancelTransferRequest from '../utils/api/dtos/cancelTransferRequest.js';\r\nimport type ConcurrencyReleaser from \"../utils/concurrencyController/concurrencyReleaser.js\";\r\nimport type FileUploadFailedEventArgs from './eventArgs/fileUploadFailedEventArgs.js';\r\nimport type FilesRegistrationBatchFailedEventArgs from './eventArgs/filesRegistrationBatchFailedEventArgs.js';\r\nimport type FileAckFailedEventArgs from './eventArgs/fileAckFailedEventArgs.js';\r\nimport type FilesBatchAckFailedEventArgs from './eventArgs/filesBatchAckFailedEventArgs.js';\r\nimport type TransferUploadAcker from './transferUploadAcker.js';\r\nimport type RegisteredTransferFile from './registeredTransferFile.js';\r\nimport type TransferUploadProgressedEventArgs from './eventArgs/transferUploadProgressedEventArgs.js';\r\nimport type FileChunkUploadProgressedEventArgs from './eventArgs/fileChunkUploadProgressedEventArgs.js';\r\nimport type UploaderChunkStreamProviderFactory from './chunkStreamProviderFactory/uploaderChunkStreamProviderFactory.js';\r\nimport type TransferUploadConfig from './options/transferUploadConfig.js';\r\nimport type { PauseSignal } from './pauseController.js';\r\nimport type ChunkStreamProvider from '../utils/fileSystem/chunkStreamProvider.js';\r\nimport type ConcurrencyController from '../utils/concurrencyController/concurrencyController.js';\r\nimport type FileChunkUploadCompletedPartiallyEventArgs from './eventArgs/fileChunkUploadCompletedPartiallyEventArgs.js';\r\nimport type FileChunkUploadCompletedEventArgs from './eventArgs/fileChunkUploadCompletedEventArgs.js';\r\nimport type TransferMetadataDeterminedEventArgs from './eventArgs/transferMetadataDeterminedEventArgs.js';\r\nimport type CryptographyProvider from '../utils/crypto/cryptographyProvider.js';\r\nimport type { TransferUploadExportData, TransferUploadExportDataAppendInfo, TransferUploadExportDataMetadata } from './export/transferUploadExportData.js';\r\nimport type UploaderMD5Provider from \"./md5Provider/uploaderMD5Provider.js\";\r\nimport type FileChunksPlan from \"./fileChunksPlan.js\";\r\n\r\nexport default class TransferUpload<T extends FileDetails> {\r\n #totalSizeInBytes: number;\r\n\r\n #chunkStreamProviderFactory: UploaderChunkStreamProviderFactory<T>;\r\n #apiClient: ApiClient;\r\n #fileServerClientFactory: FileServerClientFactory;\r\n #eventsEngine: EventsEngine;\r\n #info: TransferUploadInfo<T> | TransferUploadAppendInfo<T>;\r\n #isLegacyTransfer: boolean;\r\n #config: TransferUploadConfig;\r\n #concurrencyController: ConcurrencyController;\r\n #cryptography: CryptographyProvider;\r\n #acker: TransferUploadAcker;\r\n #md5Provider: UploaderMD5Provider<T>;\r\n\r\n #transferState?: TransferUploadState;\r\n #transferMetadata?: TransferUploadMetadata;\r\n #transferDownloadUrl?: string;\r\n #transferConfirmationUrl?: string;\r\n #transferRecipientTrackingLinks?: TransferUploadCompletedEventArgs[`recipientTrackingLinks`];\r\n\r\n #pauseSignal: PauseSignal | undefined;\r\n #abortSignal: AbortSignal | undefined;\r\n #mergedPauseAndAbortController: MergedAbortAndPauseController | undefined;\r\n\r\n #filesRegistrar: TransferFilesRegistrar | undefined;\r\n\r\n pauseEventListener: (() => void) | undefined;\r\n abortEventListener: (() => void) | undefined;\r\n\r\n #isRunMethodRunning = false;\r\n\r\n get status(): TransferStatus {\r\n return this.#transferState?.status ?? TransferStatus.Initialized;\r\n }\r\n\r\n get completedFilesCount(): number {\r\n return this.#transferState?.completedFilesCount ?? 0;\r\n }\r\n\r\n get failedFilesCount(): number {\r\n return this.#transferState?.failedFilesCount ?? 0;\r\n }\r\n\r\n get uploadedBytesCount(): number {\r\n return this.#transferState?.uploadedBytesCount ?? 0;\r\n }\r\n\r\n get failedBytesCount(): number {\r\n return this.#transferState?.failedBytesCount ?? 0;\r\n }\r\n\r\n get progressInPercentage(): number {\r\n if (this.totalSizeInBytes === 0)\r\n return 0;\r\n\r\n return (this.uploadedBytesCount * 100) / this.totalSizeInBytes;\r\n }\r\n\r\n get files(): readonly Readonly<T>[] {\r\n return this.#info.files;\r\n }\r\n\r\n get totalSizeInBytes(): number {\r\n return this.#totalSizeInBytes;\r\n }\r\n\r\n get transferId(): string | undefined {\r\n return this.#transferMetadata?.transferId;\r\n }\r\n\r\n constructor(chunkStreamProviderFactory: UploaderChunkStreamProviderFactory<T>, apiClient: ApiClient, fileServerClientFactory: FileServerClientFactory, eventsEngine: EventsEngine, info: TransferUploadInfo<T> | TransferUploadAppendInfo<T>, config: TransferUploadConfig, concurrencyController: ConcurrencyController, cryptography: CryptographyProvider, acker: TransferUploadAcker, md5Provider: UploaderMD5Provider<T>) {\r\n if (info.files.length === 0)\r\n throw new TransferUploadError(`Files can't be empty`);\r\n\r\n this.#totalSizeInBytes = info.files.reduce((partialSum, file) => partialSum + file.fileSizeInBytes, 0);\r\n\r\n this.#chunkStreamProviderFactory = chunkStreamProviderFactory;\r\n this.#apiClient = apiClient;\r\n this.#fileServerClientFactory = fileServerClientFactory;\r\n this.#eventsEngine = eventsEngine;\r\n this.#info = info;\r\n this.#isLegacyTransfer = info.isLegacyTransfer ?? false;\r\n this.#config = config;\r\n this.#concurrencyController = concurrencyController;\r\n this.#cryptography = cryptography;\r\n this.#acker = acker;\r\n this.#md5Provider = md5Provider;\r\n\r\n this.#filesRegistrar = this.#isLegacyTransfer\r\n ? undefined\r\n : new TransferFilesRegistrar(apiClient, eventsEngine, info.files);\r\n }\r\n\r\n private isUploadAppend(): boolean {\r\n return this.isUploadAppendInfo(this.#info);\r\n }\r\n\r\n private isUploadAppendInfo(info: TransferUploadInfo<T> | TransferUploadAppendInfo<T>): info is TransferUploadAppendInfo<T> {\r\n return (info as TransferUploadAppendInfo<T>).transferKey !== undefined;\r\n }\r\n\r\n private createTransferMetadataFromInfo() {\r\n if (!this.isUploadAppendInfo(this.#info))\r\n throw new TransferUploadError(`Options are not TransferUploadAppendOptions`);\r\n\r\n this.#transferDownloadUrl = this.#info.transferDownloadUrl;\r\n\r\n this.#transferMetadata = {\r\n transferId: this.#info.transferId,\r\n transferKey: this.#info.transferKey,\r\n transferFileServerUrl: this.#info.transferFileServerUrl,\r\n transferRegion: this.#info.transferRegion,\r\n encryptionData: this.#info.e2eeData,\r\n };\r\n }\r\n\r\n async run(transferPauseSignal: PauseSignal, transferAbortSignal: AbortSignal): Promise<void> {\r\n this.throwIfNotPossibleToRun(transferPauseSignal, transferAbortSignal);\r\n\r\n this.#isRunMethodRunning = true;\r\n\r\n try {\r\n this.#pauseSignal = transferPauseSignal;\r\n this.#abortSignal = transferAbortSignal;\r\n this.#mergedPauseAndAbortController = mergeAbortAndPauseSignals(transferPauseSignal, transferAbortSignal);\r\n\r\n if (!this.#transferState)\r\n this.#transferState = new TransferUploadState(this.files, this.#eventsEngine, this.#config.currentRatesTimespanInMs, this.#config.progressEventThrottlingInMs);\r\n else\r\n this.#transferState.recover();\r\n\r\n this.#transferState.transferRun();\r\n\r\n this.addPauseAndStopListeners();\r\n\r\n if (this.isUploadAppend() && !this.#transferMetadata)\r\n this.createTransferMetadataFromInfo();\r\n else if (!this.#transferMetadata)\r\n await this.startApiTransferAndCreateMetadata();\r\n\r\n this.notifyMetadataDetermined();\r\n\r\n const chunksPlan = this.createChunksPlan();\r\n\r\n this.startBackgroundWorkers(chunksPlan, transferPauseSignal, transferAbortSignal);\r\n\r\n const ongoingChunkUploads = new Set<Promise<void>>();\r\n\r\n for (const { file, createChunksIterator } of chunksPlan) {\r\n const fileStatus = this.#transferState.getFile(file.externalId);\r\n\r\n if (fileStatus.isCompleted)\r\n continue;\r\n\r\n const registrationResult = await this.waitUntilFileRegistered(file);\r\n\r\n if (!registrationResult.isRegisteredSuccessfully)\r\n continue;\r\n\r\n if (fileStatus.isUploadCompleted) {\r\n this.enqueueFileAck(file);\r\n continue;\r\n }\r\n\r\n for (const chunk of createChunksIterator()) {\r\n const releaseSemaphore = await this.#concurrencyController.acquire();\r\n\r\n if (this.shouldStopProcessing()) {\r\n releaseSemaphore();\r\n break;\r\n }\r\n\r\n const chunkUploadPromise = this.sendChunkAndKeepUpdatingState(file, chunk.startPosition, chunk.sizeInBytes, releaseSemaphore);\r\n\r\n const trackedChunkUploadPromise = chunkUploadPromise.finally(() => {\r\n ongoingChunkUploads.delete(trackedChunkUploadPromise);\r\n });\r\n\r\n ongoingChunkUploads.add(trackedChunkUploadPromise);\r\n\r\n if (this.shouldStopProcessing())\r\n break;\r\n }\r\n\r\n if (this.shouldStopProcessing())\r\n break;\r\n }\r\n\r\n await promiseAllSettled(Array.from(ongoingChunkUploads));\r\n\r\n await this.#acker.flush();\r\n\r\n if (this.#transferState.status === TransferStatus.Pausing)\r\n this.#transferState.transferPaused();\r\n else if (this.#transferState.status === TransferStatus.Aborting)\r\n this.#transferState.transferAborted();\r\n else if (this.uploadedBytesCount !== this.totalSizeInBytes || this.hasUnackedFiles())\r\n this.#transferState.transferFailed();\r\n else {\r\n await this.finalizeTransfer();\r\n this.#transferState.transferCompleted(this.#transferMetadata!, this.#transferDownloadUrl!, this.#transferConfirmationUrl, this.#transferRecipientTrackingLinks);\r\n }\r\n }\r\n catch (error) {\r\n // We can get here with pausing or aborting status if any API call fails (e.g., finalizeTransfer) so we need to check the status again\r\n if (!this.#transferState)\r\n this.#eventsEngine.emit(TransferUploadEvent.TransferFailed);\r\n else if (this.#transferState.status === TransferStatus.Pausing) {\r\n this.#transferState.transferPaused();\r\n return;\r\n }\r\n else if (this.#transferState.status === TransferStatus.Aborting) {\r\n this.#transferState.transferAborted();\r\n return;\r\n }\r\n else\r\n this.#transferState.transferFailed();\r\n\r\n if (error instanceof TransferUploadError)\r\n throw error;\r\n else\r\n throw new TransferUploadError(`Unhandled error occured. See 'cause' for more details`, { cause: error as Error });\r\n }\r\n finally {\r\n await this.stopBackgroundWorkers();\r\n\r\n this.removePauseAndStopListeners();\r\n this.#isRunMethodRunning = false;\r\n }\r\n }\r\n\r\n private startBackgroundWorkers(chunksPlan: readonly FileChunksPlan<T>[], transferPauseSignal: PauseSignal, transferAbortSignal: AbortSignal) {\r\n const filesToHash = chunksPlan.map(({ file, createChunksIterator }) => ({ file, chunksIterator: createChunksIterator() }));\r\n const fileAckSuccessfullCallback = (externalFileId: string | number, uploadItemId: string) => this.#transferState!.fileCompleted(externalFileId, uploadItemId);\r\n const fileAckFailedCallback = (externalFileId: string | number, uploadItemId: string, reason: string, error: Error) => this.#transferState!.fileAckFailed(externalFileId, uploadItemId, reason, error);\r\n\r\n this.#md5Provider.start(filesToHash, this.#transferMetadata?.encryptionData, this.#mergedPauseAndAbortController?.signal);\r\n this.#acker.start(this.#transferMetadata!.transferId, this.#transferMetadata!.transferKey, fileAckSuccessfullCallback, fileAckFailedCallback, transferPauseSignal, transferAbortSignal);\r\n this.#filesRegistrar?.start(this.#transferMetadata!.transferId, this.#transferMetadata!.transferKey, this.#mergedPauseAndAbortController?.signal);\r\n }\r\n\r\n private createChunksPlan(): FileChunksPlan<T>[] {\r\n const chunkSizeInBytes = this.#config.chunkSizeInBytes;\r\n\r\n return this.files.map(file => {\r\n // Upload progress mutates these ranges, so both iterators need the same snapshot for this run.\r\n const alreadySentChunks = this.#transferState!.getChunksForFile(file.externalId).map(chunk => ({ ...chunk }));\r\n const fileSizeInBytes = file.fileSizeInBytes;\r\n\r\n return {\r\n file,\r\n createChunksIterator: () => new ChunksIterator(alreadySentChunks, fileSizeInBytes, chunkSizeInBytes).getChunksIterator(),\r\n };\r\n });\r\n }\r\n\r\n private async stopBackgroundWorkers() {\r\n await Promise.allSettled([\r\n this.#md5Provider?.stop(),\r\n this.#filesRegistrar?.stop(),\r\n this.#acker.stop(),\r\n ]);\r\n }\r\n\r\n private async waitUntilFileRegistered(file: Readonly<T>): Promise<RegistrationResult> {\r\n if (this.#isLegacyTransfer)\r\n return { isRegisteredSuccessfully: true };\r\n\r\n return await this.#filesRegistrar!.waitUntilFileRegistered(file.externalId);\r\n }\r\n\r\n private notifyMetadataDetermined() {\r\n const eventArgs: TransferMetadataDeterminedEventArgs = {\r\n transferId: this.#transferMetadata!.transferId,\r\n fileServerUrl: this.#transferMetadata!.transferFileServerUrl,\r\n region: this.#transferMetadata!.transferRegion,\r\n };\r\n\r\n this.#eventsEngine.emit(TransferUploadEvent.TransferMetadataDetermined, eventArgs);\r\n this.#eventsEngine.emit(TransferUploadEvent.RecreateDataUpdated);\r\n }\r\n\r\n private async sendChunkAndKeepUpdatingState(file: T, chunkStartPosition: number, chunkSizeInBytes: number, releaseSemaphore: ConcurrencyReleaser): Promise<void> {\r\n let uploadedBytesCount = 0;\r\n\r\n const registeredFile = this.getRegisteredFile(file.externalId);\r\n const uploadItemId = registeredFile?.uploadItemId;\r\n\r\n try {\r\n this.#transferState!.chunkUploadStarted(file.externalId, uploadItemId, chunkStartPosition, chunkSizeInBytes);\r\n\r\n const chunkStreamProvider = this.#chunkStreamProviderFactory.createChunkStreamProvider(file, chunkStartPosition, chunkSizeInBytes, this.#transferMetadata?.encryptionData);\r\n\r\n const progressEventHandler = (eventArgs: ChunkProgressEvent) => {\r\n uploadedBytesCount += eventArgs.transferredBytesSinceLastEvent;\r\n this.#transferState!.chunkUploadProgressed(file.externalId, uploadItemId, chunkStartPosition, chunkSizeInBytes, eventArgs);\r\n };\r\n\r\n await this.sendChunk(file, registeredFile?.fileId, chunkStreamProvider, progressEventHandler);\r\n\r\n if (uploadedBytesCount === chunkSizeInBytes)\r\n this.#transferState!.chunkUploadCompleted(file.externalId, uploadItemId, chunkStartPosition, chunkSizeInBytes);\r\n else\r\n this.#transferState!.chunkUploadCompletedPartially(file.externalId, uploadItemId, chunkStartPosition, chunkSizeInBytes, uploadedBytesCount, this.#pauseSignal!.paused);\r\n\r\n if (this.#transferState!.getFile(file.externalId).isUploadCompleted)\r\n this.enqueueFileAck(file);\r\n }\r\n catch (error) {\r\n const chunkError = error as Error;\r\n\r\n const isTcpPausingError = chunkError.cause !== undefined\r\n && chunkError.cause instanceof ApiFilemail449Error\r\n && chunkError.cause.message === `Wrong md5 hash`\r\n && this.#pauseSignal?.paused === true;\r\n\r\n if (isTcpPausingError)\r\n this.#transferState!.chunkUploadCompletedPartially(file.externalId, uploadItemId, chunkStartPosition, chunkSizeInBytes, uploadedBytesCount, this.#pauseSignal!.paused);\r\n else {\r\n const failedReason = this.getChunkFailedReason(error);\r\n this.#transferState!.chunkUploadFailed(file.externalId, uploadItemId, chunkStartPosition, chunkSizeInBytes, uploadedBytesCount, failedReason, error as Error);\r\n }\r\n }\r\n finally {\r\n releaseSemaphore();\r\n }\r\n }\r\n\r\n private async sendChunk(file: T, fileId: string | undefined, chunkStreamProvider: ChunkStreamProvider, progressEventHandler: (eventArgs: ChunkProgressEvent) => void): Promise<void> {\r\n const md5 = await this.#md5Provider.getMd5Checksum(file, chunkStreamProvider.chunkStartPosition);\r\n\r\n const request: SendFileChunkRequest = {\r\n md5,\r\n chunkLengthInBytes: chunkStreamProvider.chunkLengthInBytes,\r\n chunkStartPosition: chunkStreamProvider.chunkStartPosition,\r\n };\r\n\r\n const fileServerClient = this.#fileServerClientFactory.createFileServerUploadClient(this.#transferMetadata!.transferFileServerUrl, this.#transferMetadata!.transferId, this.#transferMetadata!.transferKey, file.fileName, file.fileDestinationPathInTransfer, file.fileSizeInBytes, fileId);\r\n\r\n const ongoingRequestPromise = fileServerClient.sendFileChunk(request, chunkStreamProvider, this.#pauseSignal!, this.#abortSignal!);\r\n\r\n fileServerClient.addEventListener(`progress`, progressEventHandler);\r\n\r\n await ongoingRequestPromise;\r\n }\r\n\r\n private getChunkFailedReason(error: unknown) {\r\n if (error instanceof FsError)\r\n return `Can't read file. ${error.message}`;\r\n\r\n if (error instanceof ApiError) {\r\n const baseMessage = error.cause?.message ? `${error.message}. ${error.cause.message}` : error.message;\r\n return error.requestUrl ? `${baseMessage}. Request URL: ${error.requestUrl}` : baseMessage;\r\n }\r\n\r\n return (error as Error)?.message;\r\n }\r\n\r\n private throwIfNotPossibleToRun(pauseSignal: PauseSignal, abortSignal: AbortSignal) {\r\n if (this.#isRunMethodRunning)\r\n throw new TransferUploadError(`This transfer is running and cannot be run`);\r\n\r\n if (this.#transferState\r\n && this.#transferState.status !== TransferStatus.Failed\r\n && this.#transferState.status !== TransferStatus.Aborted\r\n && this.#transferState.status !== TransferStatus.Initialized\r\n && this.#transferState.status !== TransferStatus.Paused)\r\n throw new TransferUploadError(`Transfer is in ${TransferStatus[this.#transferState!.status]} state and cannot be run`);\r\n\r\n if (this.files.length === 0)\r\n throw new TransferUploadError(`There are no files passed to the transfer`);\r\n\r\n if (pauseSignal.paused)\r\n throw new TransferUploadError(`Can't run transfer with already paused PauseController`);\r\n\r\n if (abortSignal.aborted)\r\n throw new TransferUploadError(`Can't run transfer with already aborted AbortController`);\r\n }\r\n\r\n private addPauseAndStopListeners() {\r\n this.pauseEventListener = () => {\r\n if (this.#transferState!.status !== TransferStatus.Running)\r\n throw new TransferUploadError(`Transfer is in ${TransferStatus[this.#transferState!.status]} state and cannot be paused`);\r\n\r\n this.#transferState!.transferPauseRequested();\r\n };\r\n\r\n this.abortEventListener = () => {\r\n if (this.isFailureAbortRequested())\r\n return;\r\n\r\n if (this.#transferState!.status !== TransferStatus.Running)\r\n throw new TransferUploadError(`Transfer is in ${TransferStatus[this.#transferState!.status]} state and cannot be stopped`);\r\n\r\n this.#transferState!.transferAbortRequested();\r\n };\r\n\r\n this.#pauseSignal!.addEventListener(`pause`, this.pauseEventListener);\r\n this.#abortSignal!.addEventListener(`abort`, this.abortEventListener);\r\n }\r\n\r\n private removePauseAndStopListeners() {\r\n this.#pauseSignal!.removeEventListener(`pause`, this.pauseEventListener!);\r\n this.#abortSignal!.removeEventListener(`abort`, this.abortEventListener!);\r\n\r\n this.#mergedPauseAndAbortController?.dispose();\r\n }\r\n\r\n private shouldStopProcessing() {\r\n return this.#transferState!.status !== TransferStatus.Running || this.#abortSignal?.aborted === true || this.#pauseSignal?.paused === true;\r\n }\r\n\r\n private isFailureAbortRequested() {\r\n return isTransferFailureAbortReason(this.#abortSignal?.reason);\r\n }\r\n\r\n private async startApiTransferAndCreateMetadata() {\r\n if (this.isUploadAppendInfo(this.#info))\r\n throw new TransferUploadError(`Options are not TransferUploadOptions`);\r\n\r\n try {\r\n const encryptionDataAndIvSaltHex = await this.generateEncryptionDataAndIvSaltHmacHex(this.#info.e2eeKey);\r\n\r\n const request: InitializeTransferRequest = {\r\n dataRegion: this.#info.dataRegion,\r\n e2ee: Boolean(encryptionDataAndIvSaltHex),\r\n e2ee_keyhash: encryptionDataAndIvSaltHex?.ivSaltHmacHex,\r\n transfersize: this.totalSizeInBytes,\r\n to: this.#info.to,\r\n from: this.#info.from,\r\n subject: this.#info.subject,\r\n message: this.#info.message,\r\n notify: this.#info.notify,\r\n confirmation: this.#info.confirmation,\r\n days: this.#info.days,\r\n password: this.#info.uploadPassword,\r\n companyid: this.#info.companyId,\r\n incominglogintoken: this.#info.incomingLoginToken,\r\n incomingpageid: this.#info.incomingPageId,\r\n filerequestid: this.#info.fileRequestId,\r\n filerequestshareid: this.#info.fileRequestShareId,\r\n customfields: this.#info.customFields,\r\n filesdb: !this.#isLegacyTransfer,\r\n };\r\n\r\n const response = await this.#apiClient.initializeTransfer(request, this.#mergedPauseAndAbortController?.signal);\r\n\r\n this.#transferMetadata = {\r\n transferId: response.transferId,\r\n transferKey: response.transferKey,\r\n transferFileServerUrl: response.transferUrl,\r\n transferRegion: response.transferRegion,\r\n encryptionData: encryptionDataAndIvSaltHex?.encryptionData,\r\n };\r\n }\r\n catch (error) {\r\n throw new TransferUploadError(`Error initializing transfer through the API`, { cause: error as Error });\r\n }\r\n }\r\n\r\n private getRegisteredFile(externalFileId: string | number): RegisteredTransferFile | undefined {\r\n return this.#filesRegistrar?.getRegisteredFile(externalFileId);\r\n }\r\n\r\n private enqueueFileAck(file: Readonly<T>): void {\r\n if (this.#isLegacyTransfer) {\r\n this.#transferState!.fileCompleted(file.externalId, undefined);\r\n return;\r\n }\r\n\r\n const registeredFile = this.getRegisteredFile(file.externalId);\r\n\r\n if (!registeredFile)\r\n throw new TransferUploadError(`Can't ack file with external id = ${file.externalId} - no registered file found. The transfer state is malformed.`);\r\n\r\n this.#acker.enqueue({ externalFileId: file.externalId, uploadItemId: registeredFile.uploadItemId, sizeInBytes: file.fileSizeInBytes });\r\n }\r\n\r\n private hasUnackedFiles(): boolean {\r\n if (this.#isLegacyTransfer)\r\n return false;\r\n\r\n return this.files.some(file => !this.#transferState!.getFile(file.externalId).isCompleted);\r\n }\r\n\r\n private async generateEncryptionDataAndIvSaltHmacHex(e2eeKey?: string): Promise<{ encryptionData: { iv: Uint8Array, key: Uint8Array }, ivSaltHmacHex: string, salt: Uint8Array, hmac: Uint8Array } | undefined> {\r\n if (!e2eeKey)\r\n return undefined;\r\n\r\n const salt = this.#cryptography.generateRandomBytes(16);\r\n const key = await this.#cryptography.deriveKey(e2eeKey, salt);\r\n const hmac = await this.#cryptography.generateHmac(key);\r\n const iv = this.#cryptography.generateRandomBytes(16);\r\n\r\n const ivSaltHmac = concatUint8Arrays([iv, salt, hmac]);\r\n const ivSaltHmacHex = uint8ArrayToHex(ivSaltHmac);\r\n\r\n return {\r\n encryptionData: { iv, key },\r\n hmac,\r\n salt,\r\n ivSaltHmacHex,\r\n };\r\n }\r\n\r\n private async finalizeTransfer(): Promise<void> {\r\n this.#eventsEngine.emit(TransferUploadEvent.TransferFinalizing);\r\n\r\n if (this.isUploadAppend())\r\n await this.resetApiTransfer();\r\n else\r\n await this.finalizeApiTransfer();\r\n }\r\n\r\n private async resetApiTransfer(): Promise<void> {\r\n try {\r\n const request: ResetTransferRequest = {\r\n transferid: this.#transferMetadata!.transferId,\r\n };\r\n\r\n await this.#apiClient.resetTransfer(request, this.#mergedPauseAndAbortController?.signal);\r\n }\r\n catch (error) {\r\n throw new TransferUploadError(`Error resetting transfer through the API`, { cause: error as Error });\r\n }\r\n }\r\n\r\n private async finalizeApiTransfer(): Promise<void> {\r\n try {\r\n const request: FinalizeTransferRequest = {\r\n transferid: this.#transferMetadata!.transferId,\r\n transferkey: this.#transferMetadata!.transferKey,\r\n protocol: `tcp`,\r\n };\r\n\r\n const response = await this.#apiClient.finalizeTransfer(request, this.#mergedPauseAndAbortController?.signal);\r\n\r\n this.#transferDownloadUrl = response.downloadUrl;\r\n this.#transferConfirmationUrl = response.confirmationUrl;\r\n this.#transferRecipientTrackingLinks = response.recipientTrackingLinks;\r\n }\r\n catch (error) {\r\n throw new TransferUploadError(`Error finalizing transfer through the API`, { cause: error as Error });\r\n }\r\n }\r\n\r\n async cancel(abortSignal?: AbortSignal): Promise<void> {\r\n try {\r\n const isTransferApiInitialized = Boolean(this.#transferState) && (Boolean(this.#transferMetadata) || this.isUploadAppend());\r\n\r\n if (!isTransferApiInitialized) {\r\n this.emitCancelEvents();\r\n return;\r\n }\r\n\r\n this.throwIfInWrongStateToCancel();\r\n\r\n this.#transferState!.transferCancelRequested();\r\n\r\n if (this.isUploadAppend()) {\r\n // There is no possibility to cancel transfer upload append on API for now\r\n }\r\n else {\r\n try {\r\n await this.cancelApiTransfer(abortSignal);\r\n }\r\n catch {\r\n // If API cancel fails we still finalize local transfer state as canceled to avoid hanging in Canceling.\r\n }\r\n }\r\n\r\n this.#transferState!.transferCanceled();\r\n }\r\n catch (error) {\r\n if (error instanceof TransferUploadError)\r\n throw error;\r\n else\r\n throw new TransferUploadError(`Unhandled error occured. See 'cause' for more details`, { cause: error as Error });\r\n }\r\n }\r\n\r\n private emitCancelEvents() {\r\n this.#eventsEngine.emit(TransferUploadEvent.TransferCancelRequested);\r\n this.#eventsEngine.emit(TransferUploadEvent.TransferCanceled);\r\n }\r\n\r\n private throwIfInWrongStateToCancel() {\r\n if (!this.#transferState)\r\n return;\r\n\r\n if (this.#transferState.status !== TransferStatus.Failed\r\n && this.#transferState.status !== TransferStatus.Aborted\r\n && this.#transferState.status !== TransferStatus.Initialized\r\n && this.#transferState.status !== TransferStatus.Paused)\r\n throw new TransferUploadError(`Transfer is in ${TransferStatus[this.#transferState!.status]} state and cannot be canceled`);\r\n }\r\n\r\n private async cancelApiTransfer(abortSignal?: AbortSignal): Promise<void> {\r\n try {\r\n const request: CancelTransferRequest = {\r\n transferid: this.#transferMetadata!.transferId,\r\n transferkey: this.#transferMetadata!.transferKey,\r\n };\r\n\r\n await this.#apiClient.cancelTransfer(request, abortSignal);\r\n }\r\n catch (error) {\r\n throw new TransferUploadError(`Error canceling transfer through the API`, { cause: error as Error });\r\n }\r\n }\r\n\r\n addEventListener(eventName: TransferUploadEvent.TransferRun | TransferUploadEvent.TransferPauseRequested | TransferUploadEvent.TransferPaused | TransferUploadEvent.TransferAbortRequested | TransferUploadEvent.TransferAborted | TransferUploadEvent.TransferCancelRequested | TransferUploadEvent.TransferCanceled | TransferUploadEvent.TransferFailed, handler: () => void): void\r\n addEventListener(eventName: TransferUploadEvent.FileUploadStarted | TransferUploadEvent.FileUploadCompleted | TransferUploadEvent.FileCompleted, handler: (event: FileUploadEventArgs) => void): void\r\n addEventListener(eventName: TransferUploadEvent.FileUploadFailed, handler: (event: FileUploadFailedEventArgs) => void): void\r\n addEventListener(eventName: TransferUploadEvent.FilesRegistrationBatchFailed, handler: (event: FilesRegistrationBatchFailedEventArgs) => void): void\r\n addEventListener(eventName: TransferUploadEvent.FileAckFailed, handler: (event: FileAckFailedEventArgs) => void): void\r\n addEventListener(eventName: TransferUploadEvent.FilesBatchAckFailed, handler: (event: FilesBatchAckFailedEventArgs) => void): void\r\n addEventListener(eventName: TransferUploadEvent.FileChunkUploadProgressed, handler: (event: FileChunkUploadProgressedEventArgs) => void): void\r\n addEventListener(eventName: TransferUploadEvent.FileChunkUploadStarted, handler: (event: FileChunkUploadEventArgs) => void): void\r\n addEventListener(eventName: TransferUploadEvent.FileChunkUploadCompleted, handler: (event: FileChunkUploadCompletedEventArgs) => void): void\r\n addEventListener(eventName: TransferUploadEvent.FileChunkUploadCompletedPartially, handler: (event: FileChunkUploadCompletedPartiallyEventArgs) => void): void\r\n addEventListener(eventName: TransferUploadEvent.FileChunkUploadFailed, handler: (event: FileChunkUploadFailedEventArgs) => void): void\r\n addEventListener(eventName: TransferUploadEvent.TransferProgressed, handler: (event: TransferUploadProgressedEventArgs) => void): void\r\n addEventListener(eventName: TransferUploadEvent.TransferCompleted, handler: (event: TransferUploadCompletedEventArgs) => void): void\r\n addEventListener(eventName: TransferUploadEvent.TransferMetadataDetermined, handler: (event: TransferMetadataDeterminedEventArgs) => 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 exportAsString(): string {\r\n const exportData = this.export();\r\n return JSON.stringify(exportData);\r\n }\r\n\r\n export(): TransferUploadExportData<T> {\r\n if (!this.#transferState?.files)\r\n throw new TransferUploadError(`Can't export not started Transfer`); // fileStatuses are not created yet and it really doesn't make any sens to export not started transfer\r\n\r\n return {\r\n transferMetadata: this.getTransferMetadataExportValue(),\r\n info: this.getInfoExportValue(),\r\n state: this.#transferState.export(),\r\n registeredFiles: this.#filesRegistrar ? Array.from(this.#filesRegistrar.export().entries()) : undefined,\r\n };\r\n }\r\n\r\n private getInfoExportValue(): Readonly<TransferUploadInfo<T> | TransferUploadExportDataAppendInfo<T>> {\r\n if (this.isUploadAppendInfo(this.#info)) {\r\n const { e2eeData, ...appendInfoWithoutE2eeData } = this.#info;\r\n\r\n return appendInfoWithoutE2eeData;\r\n }\r\n\r\n // Until the transfer is initialized the key is still needed - a resumed run re-initializes from the info.\r\n if (!this.#transferMetadata)\r\n return this.#info;\r\n\r\n const { e2eeKey, ...infoWithoutE2eeKey } = this.#info;\r\n\r\n return infoWithoutE2eeKey;\r\n }\r\n\r\n private getTransferMetadataExportValue(): TransferUploadExportDataMetadata | undefined {\r\n if (!this.#transferMetadata)\r\n return undefined;\r\n\r\n const { encryptionData, ...rest } = this.#transferMetadata;\r\n\r\n return {\r\n ...rest,\r\n encryptionData: !encryptionData ? undefined : {\r\n ivHex: uint8ArrayToHex(encryptionData.iv),\r\n keyHex: uint8ArrayToHex(encryptionData.key),\r\n },\r\n };\r\n }\r\n\r\n static recreate<T extends FileDetails>(transferExportData: TransferUploadExportData<T>, config: TransferUploadConfig, chunkStreamProviderFactory: UploaderChunkStreamProviderFactory<T>, apiClient: ApiClient, fileServerClientFactory: FileServerClientFactory, eventsEngine: EventsEngine, concurrencyController: ConcurrencyController, cryptography: CryptographyProvider, acker: TransferUploadAcker, md5Provider: UploaderMD5Provider<T>): TransferUpload<T> {\r\n try {\r\n TransferUpload.validateRecreateParams(transferExportData);\r\n\r\n const recreatedInfo = {\r\n ...transferExportData.info,\r\n isLegacyTransfer: transferExportData.registeredFiles === undefined,\r\n };\r\n\r\n const transfer = new TransferUpload<T>(chunkStreamProviderFactory, apiClient, fileServerClientFactory, eventsEngine, recreatedInfo, config, concurrencyController, cryptography, acker, md5Provider);\r\n\r\n transfer.#transferMetadata = this.recreateTransferMetadata(transferExportData.transferMetadata);\r\n transfer.#transferState = new TransferUploadState(transferExportData.info.files, eventsEngine, config.currentRatesTimespanInMs, config.progressEventThrottlingInMs, transferExportData.state);\r\n\r\n if (transfer.isUploadAppendInfo(transferExportData.info))\r\n transfer.#transferDownloadUrl = transferExportData.info.transferDownloadUrl;\r\n\r\n if (transferExportData.registeredFiles)\r\n transfer.#filesRegistrar!.recoverFromExportedState(transferExportData.registeredFiles);\r\n\r\n return transfer;\r\n }\r\n catch (error) {\r\n if (error instanceof TransferUploadError)\r\n throw error;\r\n else\r\n throw new TransferUploadError(`Unhandled error occured. See 'cause' for more details`, { cause: error as Error });\r\n }\r\n }\r\n\r\n private static recreateTransferMetadata(transferMetadata?: TransferUploadExportDataMetadata): TransferUploadMetadata | undefined {\r\n if (!transferMetadata)\r\n return undefined;\r\n\r\n const { encryptionData, ...rest } = transferMetadata;\r\n\r\n return {\r\n ...rest,\r\n encryptionData: !encryptionData ? undefined : {\r\n iv: hexToUint8Array(encryptionData.ivHex),\r\n key: hexToUint8Array(encryptionData.keyHex),\r\n },\r\n };\r\n }\r\n\r\n private static validateRecreateParams<T extends FileDetails>(transferExportData: TransferUploadExportData<T>) {\r\n if (!transferExportData.info)\r\n throw new TransferUploadError(`Info must be defined`);\r\n\r\n if (!transferExportData.state)\r\n throw new TransferUploadError(`State must be defined`);\r\n\r\n if (transferExportData.transferMetadata && (!transferExportData.transferMetadata.transferId || !transferExportData.transferMetadata.transferKey || !transferExportData.transferMetadata.transferFileServerUrl))\r\n throw new TransferUploadError(`Not all transfer metadata properties are defined`);\r\n\r\n if (transferExportData.transferMetadata?.encryptionData) {\r\n if (transferExportData.transferMetadata.encryptionData.ivHex.length !== 32)\r\n throw new TransferUploadError(`Encryption IV must be 16 bytes long`);\r\n if (transferExportData.transferMetadata.encryptionData.keyHex.length !== 64)\r\n throw new TransferUploadError(`Encryption key must be 32 bytes long`);\r\n }\r\n }\r\n}"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transferUploadAcker.js","sourceRoot":"","sources":["../../../src/uploader/transferUploadAcker.ts"],"names":[],"mappings":"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","sourcesContent":["import TransferUploadError from \"./transferUploadError.js\";\nimport TransferUploadEvent from \"./transferUploadEvent.js\";\nimport ApiError from \"../utils/api/apiError.js\";\nimport mergeAbortAndPauseSignals, { type MergedAbortAndPauseController } from \"../utils/mergeAbortAndPauseSignals.js\";\n\nimport type ApiClient from \"../utils/api/apiClient.js\";\nimport type EventsEngine from \"../utils/events/eventsEngine.js\";\nimport type PendingFileAck from \"./pendingFileAck.js\";\nimport type { PauseSignal } from \"./pauseController.js\";\nimport type { AckTransferFilesResponse } from \"../utils/api/dtos/ackTransferFilesResponse.js\";\nimport type FilesBatchAckFailedEventArgs from \"./eventArgs/filesBatchAckFailedEventArgs.js\";\n\nconst ACK_ITEMS_BATCH_SIZE = 500;\n\nexport default class TransferUploadAcker {\n #apiClient: ApiClient;\n #eventsEngine: EventsEngine;\n #fileAckIntervalInMs: number;\n\n #pendingFileAcks: PendingFileAck[] = [];\n #ongoingFlush: Promise<void> | undefined;\n #flushTimer: ReturnType<typeof setInterval> | undefined;\n\n #ackCompletedCallback: ((externalFileId: string | number, uploadItemId: string) => void) | undefined;\n #ackFailedCallback: ((externalFileId: string | number, uploadItemId: string, reason: string, error: Error) => void) | undefined;\n\n #transferId: string | undefined;\n #transferKey: string | undefined;\n #pauseSignal: PauseSignal | undefined;\n #abortSignal: AbortSignal | undefined;\n #stopController: AbortController | undefined;\n #mergedPauseAndAbortController: MergedAbortAndPauseController | undefined;\n\n constructor(apiClient: ApiClient, eventsEngine: EventsEngine, fileAckIntervalInMs: number) {\n this.#apiClient = apiClient;\n this.#eventsEngine = eventsEngine;\n this.#fileAckIntervalInMs = fileAckIntervalInMs;\n }\n\n start(transferId: string, transferKey: string, ackCompletedCallback: (externalFileId: string | number, uploadItemId: string) => void, ackFailedCallback: (externalFileId: string | number, uploadItemId: string, reason: string, error: Error) => void, transferPauseSignal: PauseSignal, transferAbortSignal: AbortSignal): void {\n this.#transferId = transferId;\n this.#transferKey = transferKey;\n this.#ackCompletedCallback = ackCompletedCallback;\n this.#ackFailedCallback = ackFailedCallback;\n this.#pauseSignal = transferPauseSignal;\n this.#abortSignal = transferAbortSignal;\n\n const stopController = new AbortController();\n const mergedPauseAndAbortSignal = mergeAbortAndPauseSignals(transferPauseSignal, transferAbortSignal);\n\n this.#mergedPauseAndAbortController = mergedPauseAndAbortSignal;\n\n if (mergedPauseAndAbortSignal.signal.aborted)\n stopController.abort();\n else\n mergedPauseAndAbortSignal.signal.addEventListener(`abort`, () => stopController.abort(), { once: true });\n\n this.#stopController = stopController;\n\n this.#pendingFileAcks = [];\n\n this.#flushTimer = setInterval(() => {\n if (this.#pendingFileAcks.length > 0)\n this.flush();\n }, this.#fileAckIntervalInMs);\n }\n\n async stop(): Promise<void> {\n if (this.#flushTimer !== undefined) {\n clearInterval(this.#flushTimer);\n this.#flushTimer = undefined;\n }\n\n this.#stopController?.abort();\n this.#mergedPauseAndAbortController?.dispose();\n\n if (this.#ongoingFlush)\n await this.#ongoingFlush;\n }\n\n enqueue(pendingFileAck: PendingFileAck): void {\n this.#pendingFileAcks.push(pendingFileAck);\n\n if (this.#pendingFileAcks.length >= ACK_ITEMS_BATCH_SIZE)\n this.flush();\n }\n\n flush(): Promise<void> {\n this.#ongoingFlush ??= this.ackPendingFiles().finally(() => {\n this.#ongoingFlush = undefined;\n });\n\n return this.#ongoingFlush;\n }\n\n private async ackPendingFiles(): Promise<void> {\n try {\n while (this.#pendingFileAcks.length > 0 && !this.shouldStopAcking()) {\n const ackItemsBatch = this.#pendingFileAcks.splice(0, ACK_ITEMS_BATCH_SIZE);\n\n try {\n const response = await this.#apiClient.ackTransferFiles(this.#transferId!, {\n transferkey: this.#transferKey!,\n files: ackItemsBatch.map(item => ({ uploadItemId: item.uploadItemId, size: item.sizeInBytes })),\n }, this.#stopController?.signal);\n\n this.validateAckTransferFilesResponse(ackItemsBatch, response);\n }\n catch (error) {\n // The failed batch is not retried within the run - its files stay uncompleted and the next run acks them again.\n this.handleAckBatchError(ackItemsBatch, error as Error);\n\n continue;\n }\n\n for (const item of ackItemsBatch)\n this.#ackCompletedCallback!(item.externalFileId, item.uploadItemId);\n }\n }\n catch (error) {\n // The flush is fire-and-forget on the full-batch and timer triggers, so it must never reject.\n const eventArgs: FilesBatchAckFailedEventArgs = { reason: this.getAckFailedReason(error), error: error as Error };\n this.#eventsEngine.emit(TransferUploadEvent.FilesBatchAckFailed, eventArgs);\n }\n }\n\n private shouldStopAcking(): boolean {\n return this.#stopController?.signal.aborted === true;\n }\n\n private handleAckBatchError(ackItemsBatch: PendingFileAck[], error: Error): void {\n const reason = this.getAckFailedReason(error);\n\n for (const item of ackItemsBatch)\n this.#ackFailedCallback!(item.externalFileId, item.uploadItemId, reason, error);\n }\n\n private getAckFailedReason(error: unknown): string {\n if (this.#pauseSignal?.paused === true)\n return `Pause requested`;\n\n if (this.#abortSignal?.aborted === true)\n return `Aborted`;\n\n if (this.#stopController?.signal.aborted === true)\n return `Stopped`;\n\n if (error instanceof ApiError) {\n const baseMessage = error.cause?.message ? `${error.message}. ${error.cause.message}` : error.message;\n return error.requestUrl ? `${baseMessage}. Request URL: ${error.requestUrl}` : baseMessage;\n }\n\n return (error as Error)?.message;\n }\n\n private validateAckTransferFilesResponse(ackItemsBatch: PendingFileAck[], response: AckTransferFilesResponse): void {\n if (response.files.length !== ackItemsBatch.length)\n throw new TransferUploadError(`Invalid ack transfer files response`);\n\n const completedUploadItemIds = new Set(response.files.filter(file => file.status === `complete`).map(file => file.uploadItemId));\n\n if (ackItemsBatch.some(item => !completedUploadItemIds.has(item.uploadItemId)))\n throw new TransferUploadError(`Invalid ack transfer files response`);\n }\n}"]}
|
|
1
|
+
{"version":3,"file":"transferUploadAcker.js","sourceRoot":"","sources":["../../../src/uploader/transferUploadAcker.ts"],"names":[],"mappings":"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","sourcesContent":["import TransferUploadError from \"./transferUploadError.js\";\r\nimport TransferUploadEvent from \"./transferUploadEvent.js\";\r\nimport ApiError from \"../utils/api/apiError.js\";\r\nimport mergeAbortAndPauseSignals, { type MergedAbortAndPauseController } from \"../utils/mergeAbortAndPauseSignals.js\";\r\n\r\nimport type ApiClient from \"../utils/api/apiClient.js\";\r\nimport type EventsEngine from \"../utils/events/eventsEngine.js\";\r\nimport type PendingFileAck from \"./pendingFileAck.js\";\r\nimport type { PauseSignal } from \"./pauseController.js\";\r\nimport type { AckTransferFilesResponse } from \"../utils/api/dtos/ackTransferFilesResponse.js\";\r\nimport type FilesBatchAckFailedEventArgs from \"./eventArgs/filesBatchAckFailedEventArgs.js\";\r\n\r\nconst ACK_ITEMS_BATCH_SIZE = 500;\r\n\r\nexport default class TransferUploadAcker {\r\n #apiClient: ApiClient;\r\n #eventsEngine: EventsEngine;\r\n #fileAckIntervalInMs: number;\r\n\r\n #pendingFileAcks: PendingFileAck[] = [];\r\n #ongoingFlush: Promise<void> | undefined;\r\n #flushTimer: ReturnType<typeof setInterval> | undefined;\r\n\r\n #ackCompletedCallback: ((externalFileId: string | number, uploadItemId: string) => void) | undefined;\r\n #ackFailedCallback: ((externalFileId: string | number, uploadItemId: string, reason: string, error: Error) => void) | undefined;\r\n\r\n #transferId: string | undefined;\r\n #transferKey: string | undefined;\r\n #pauseSignal: PauseSignal | undefined;\r\n #abortSignal: AbortSignal | undefined;\r\n #stopController: AbortController | undefined;\r\n #mergedPauseAndAbortController: MergedAbortAndPauseController | undefined;\r\n\r\n constructor(apiClient: ApiClient, eventsEngine: EventsEngine, fileAckIntervalInMs: number) {\r\n this.#apiClient = apiClient;\r\n this.#eventsEngine = eventsEngine;\r\n this.#fileAckIntervalInMs = fileAckIntervalInMs;\r\n }\r\n\r\n start(transferId: string, transferKey: string, ackCompletedCallback: (externalFileId: string | number, uploadItemId: string) => void, ackFailedCallback: (externalFileId: string | number, uploadItemId: string, reason: string, error: Error) => void, transferPauseSignal: PauseSignal, transferAbortSignal: AbortSignal): void {\r\n this.#transferId = transferId;\r\n this.#transferKey = transferKey;\r\n this.#ackCompletedCallback = ackCompletedCallback;\r\n this.#ackFailedCallback = ackFailedCallback;\r\n this.#pauseSignal = transferPauseSignal;\r\n this.#abortSignal = transferAbortSignal;\r\n\r\n const stopController = new AbortController();\r\n const mergedPauseAndAbortSignal = mergeAbortAndPauseSignals(transferPauseSignal, transferAbortSignal);\r\n\r\n this.#mergedPauseAndAbortController = mergedPauseAndAbortSignal;\r\n\r\n if (mergedPauseAndAbortSignal.signal.aborted)\r\n stopController.abort();\r\n else\r\n mergedPauseAndAbortSignal.signal.addEventListener(`abort`, () => stopController.abort(), { once: true });\r\n\r\n this.#stopController = stopController;\r\n\r\n this.#pendingFileAcks = [];\r\n\r\n this.#flushTimer = setInterval(() => {\r\n if (this.#pendingFileAcks.length > 0)\r\n this.flush();\r\n }, this.#fileAckIntervalInMs);\r\n }\r\n\r\n async stop(): Promise<void> {\r\n if (this.#flushTimer !== undefined) {\r\n clearInterval(this.#flushTimer);\r\n this.#flushTimer = undefined;\r\n }\r\n\r\n this.#stopController?.abort();\r\n this.#mergedPauseAndAbortController?.dispose();\r\n\r\n if (this.#ongoingFlush)\r\n await this.#ongoingFlush;\r\n }\r\n\r\n enqueue(pendingFileAck: PendingFileAck): void {\r\n this.#pendingFileAcks.push(pendingFileAck);\r\n\r\n if (this.#pendingFileAcks.length >= ACK_ITEMS_BATCH_SIZE)\r\n this.flush();\r\n }\r\n\r\n flush(): Promise<void> {\r\n this.#ongoingFlush ??= this.ackPendingFiles().finally(() => {\r\n this.#ongoingFlush = undefined;\r\n });\r\n\r\n return this.#ongoingFlush;\r\n }\r\n\r\n private async ackPendingFiles(): Promise<void> {\r\n try {\r\n while (this.#pendingFileAcks.length > 0 && !this.shouldStopAcking()) {\r\n const ackItemsBatch = this.#pendingFileAcks.splice(0, ACK_ITEMS_BATCH_SIZE);\r\n\r\n try {\r\n const response = await this.#apiClient.ackTransferFiles(this.#transferId!, {\r\n transferkey: this.#transferKey!,\r\n files: ackItemsBatch.map(item => ({ uploadItemId: item.uploadItemId, size: item.sizeInBytes })),\r\n }, this.#stopController?.signal);\r\n\r\n this.validateAckTransferFilesResponse(ackItemsBatch, response);\r\n }\r\n catch (error) {\r\n // The failed batch is not retried within the run - its files stay uncompleted and the next run acks them again.\r\n this.handleAckBatchError(ackItemsBatch, error as Error);\r\n\r\n continue;\r\n }\r\n\r\n for (const item of ackItemsBatch)\r\n this.#ackCompletedCallback!(item.externalFileId, item.uploadItemId);\r\n }\r\n }\r\n catch (error) {\r\n // The flush is fire-and-forget on the full-batch and timer triggers, so it must never reject.\r\n const eventArgs: FilesBatchAckFailedEventArgs = { reason: this.getAckFailedReason(error), error: error as Error };\r\n this.#eventsEngine.emit(TransferUploadEvent.FilesBatchAckFailed, eventArgs);\r\n }\r\n }\r\n\r\n private shouldStopAcking(): boolean {\r\n return this.#stopController?.signal.aborted === true;\r\n }\r\n\r\n private handleAckBatchError(ackItemsBatch: PendingFileAck[], error: Error): void {\r\n const reason = this.getAckFailedReason(error);\r\n\r\n for (const item of ackItemsBatch)\r\n this.#ackFailedCallback!(item.externalFileId, item.uploadItemId, reason, error);\r\n }\r\n\r\n private getAckFailedReason(error: unknown): string {\r\n if (this.#pauseSignal?.paused === true)\r\n return `Pause requested`;\r\n\r\n if (this.#abortSignal?.aborted === true)\r\n return `Aborted`;\r\n\r\n if (this.#stopController?.signal.aborted === true)\r\n return `Stopped`;\r\n\r\n if (error instanceof ApiError) {\r\n const baseMessage = error.cause?.message ? `${error.message}. ${error.cause.message}` : error.message;\r\n return error.requestUrl ? `${baseMessage}. Request URL: ${error.requestUrl}` : baseMessage;\r\n }\r\n\r\n return (error as Error)?.message;\r\n }\r\n\r\n private validateAckTransferFilesResponse(ackItemsBatch: PendingFileAck[], response: AckTransferFilesResponse): void {\r\n if (response.files.length !== ackItemsBatch.length)\r\n throw new TransferUploadError(`Invalid ack transfer files response`);\r\n\r\n const completedUploadItemIds = new Set(response.files.filter(file => file.status === `complete`).map(file => file.uploadItemId));\r\n\r\n if (ackItemsBatch.some(item => !completedUploadItemIds.has(item.uploadItemId)))\r\n throw new TransferUploadError(`Invalid ack transfer files response`);\r\n }\r\n}"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transferUploadError.js","sourceRoot":"","sources":["../../../src/uploader/transferUploadError.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 TransferUploadError extends Error {\n constructor(message?: string, options?: ErrorOptions) {\n super(message, options);\n this.name = `TransferUploadError`;\n }\n}"]}
|
|
1
|
+
{"version":3,"file":"transferUploadError.js","sourceRoot":"","sources":["../../../src/uploader/transferUploadError.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 TransferUploadError extends Error {\r\n constructor(message?: string, options?: ErrorOptions) {\r\n super(message, options);\r\n this.name = `TransferUploadError`;\r\n }\r\n}"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transferUploadEvent.js","sourceRoot":"","sources":["../../../src/uploader/transferUploadEvent.ts"],"names":[],"mappings":"AAAA,IAAK,mBA0BJ;AA1BD,WAAK,mBAAmB;IACpB,kDAA2B,CAAA;IAC3B,wEAAiD,CAAA;IACjD,wDAAiC,CAAA;IACjC,wEAAiD,CAAA;IACjD,0DAAmC,CAAA;IACnC,0EAAmD,CAAA;IACnD,4DAAqC,CAAA;IACrC,gEAAyC,CAAA;IACzC,8DAAuC,CAAA;IACvC,wDAAiC,CAAA;IACjC,gEAAyC,CAAA;IACzC,8EAAuD,CAAA;IACvD,8DAAuC,CAAA;IACvC,kEAA2C,CAAA;IAC3C,sDAA+B,CAAA;IAC/B,4DAAqC,CAAA;IACrC,oFAA6D,CAAA;IAC7D,sDAA+B,CAAA;IAC/B,kEAA2C,CAAA;IAC3C,wEAAiD,CAAA;IACjD,8EAAuD,CAAA;IACvD,4EAAqD,CAAA;IACrD,8FAAuE,CAAA;IACvE,sEAA+C,CAAA;IAC/C,kEAA2C,CAAA;AAC/C,CAAC,EA1BI,mBAAmB,KAAnB,mBAAmB,QA0BvB;AAED,eAAe,mBAAmB,CAAC","sourcesContent":["enum TransferUploadEvent {\n TransferRun = `TransferRun`,\n TransferPauseRequested = `TransferPauseRequested`,\n TransferPaused = `TransferPaused`,\n TransferAbortRequested = `TransferAbortRequested`,\n TransferAborted = `TransferAborted`,\n TransferCancelRequested = `TransferCancelRequested`,\n TransferCanceled = `TransferCanceled`,\n TransferProgressed = `TransferProgressed`,\n TransferCompleted = `TransferCompleted`,\n TransferFailed = `TransferFailed`,\n TransferFinalizing = `TransferFinalizing`,\n TransferMetadataDetermined = `TransferRegionDetermined`,\n FileUploadStarted = `FileUploadStarted`,\n FileUploadCompleted = `FileUploadCompleted`,\n FileCompleted = `FileCompleted`,\n FileUploadFailed = `FileUploadFailed`,\n FilesRegistrationBatchFailed = `FilesRegistrationBatchFailed`,\n FileAckFailed = `FileAckFailed`,\n FilesBatchAckFailed = `FilesBatchAckFailed`,\n FileChunkUploadStarted = `FileChunkUploadStarted`,\n FileChunkUploadProgressed = `FileChunkUploadProgressed`,\n FileChunkUploadCompleted = `FileChunkUploadCompleted`,\n FileChunkUploadCompletedPartially = `FileChunkUploadCompletedPartially`,\n FileChunkUploadFailed = `FileChunkUploadFailed`,\n RecreateDataUpdated = `RecreateDataUpdated`,\n}\n\nexport default TransferUploadEvent;"]}
|
|
1
|
+
{"version":3,"file":"transferUploadEvent.js","sourceRoot":"","sources":["../../../src/uploader/transferUploadEvent.ts"],"names":[],"mappings":"AAAA,IAAK,mBA0BJ;AA1BD,WAAK,mBAAmB;IACpB,kDAA2B,CAAA;IAC3B,wEAAiD,CAAA;IACjD,wDAAiC,CAAA;IACjC,wEAAiD,CAAA;IACjD,0DAAmC,CAAA;IACnC,0EAAmD,CAAA;IACnD,4DAAqC,CAAA;IACrC,gEAAyC,CAAA;IACzC,8DAAuC,CAAA;IACvC,wDAAiC,CAAA;IACjC,gEAAyC,CAAA;IACzC,8EAAuD,CAAA;IACvD,8DAAuC,CAAA;IACvC,kEAA2C,CAAA;IAC3C,sDAA+B,CAAA;IAC/B,4DAAqC,CAAA;IACrC,oFAA6D,CAAA;IAC7D,sDAA+B,CAAA;IAC/B,kEAA2C,CAAA;IAC3C,wEAAiD,CAAA;IACjD,8EAAuD,CAAA;IACvD,4EAAqD,CAAA;IACrD,8FAAuE,CAAA;IACvE,sEAA+C,CAAA;IAC/C,kEAA2C,CAAA;AAC/C,CAAC,EA1BI,mBAAmB,KAAnB,mBAAmB,QA0BvB;AAED,eAAe,mBAAmB,CAAC","sourcesContent":["enum TransferUploadEvent {\r\n TransferRun = `TransferRun`,\r\n TransferPauseRequested = `TransferPauseRequested`,\r\n TransferPaused = `TransferPaused`,\r\n TransferAbortRequested = `TransferAbortRequested`,\r\n TransferAborted = `TransferAborted`,\r\n TransferCancelRequested = `TransferCancelRequested`,\r\n TransferCanceled = `TransferCanceled`,\r\n TransferProgressed = `TransferProgressed`,\r\n TransferCompleted = `TransferCompleted`,\r\n TransferFailed = `TransferFailed`,\r\n TransferFinalizing = `TransferFinalizing`,\r\n TransferMetadataDetermined = `TransferRegionDetermined`,\r\n FileUploadStarted = `FileUploadStarted`,\r\n FileUploadCompleted = `FileUploadCompleted`,\r\n FileCompleted = `FileCompleted`,\r\n FileUploadFailed = `FileUploadFailed`,\r\n FilesRegistrationBatchFailed = `FilesRegistrationBatchFailed`,\r\n FileAckFailed = `FileAckFailed`,\r\n FilesBatchAckFailed = `FilesBatchAckFailed`,\r\n FileChunkUploadStarted = `FileChunkUploadStarted`,\r\n FileChunkUploadProgressed = `FileChunkUploadProgressed`,\r\n FileChunkUploadCompleted = `FileChunkUploadCompleted`,\r\n FileChunkUploadCompletedPartially = `FileChunkUploadCompletedPartially`,\r\n FileChunkUploadFailed = `FileChunkUploadFailed`,\r\n RecreateDataUpdated = `RecreateDataUpdated`,\r\n}\r\n\r\nexport default TransferUploadEvent;"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiClient.js","sourceRoot":"","sources":["../../../../src/utils/api/apiClient.ts"],"names":[],"mappings":"","sourcesContent":["import type CancelTransferRequest from \"./dtos/cancelTransferRequest.js\";\nimport type FinalizeTransferRequest from \"./dtos/finalizeTransferRequest.js\";\nimport type FinalizeTransferResponse from \"./dtos/finalizeTransferResponse.js\";\nimport type GetInboxTransfersRequest from \"./dtos/getInboxTransfersRequest.js\";\nimport type GetInboxTransfersResponse from \"./dtos/getInboxTransfersResponse.js\";\nimport type GetTransferRequest from \"./dtos/getTransferRequest.js\";\nimport type GetTransferResponse from \"./dtos/getTransferResponse.js\";\nimport type { InitializeTransferRequest } from \"./dtos/initializeTransferRequest.js\";\nimport type InitializeTransferResponse from \"./dtos/initializeTransferResponse.js\";\nimport type LoginRequest from \"./dtos/loginRequest.js\";\nimport type LoginResponse from \"./dtos/loginResponse.js\";\nimport type RegisterFileDownloadRequest from \"./dtos/registerFileDownloadRequest.js\";\nimport type RegisterTransferDownloadRequest from \"./dtos/registerTransferDownloadRequest.js\";\nimport type ResetTransferRequest from \"./dtos/resetTransferRequest.js\";\nimport type { RegisterTransferFilesRequest } from \"./dtos/registerTransferFilesRequest.js\";\nimport type { RegisterTransferFilesResponse } from \"./dtos/registerTransferFilesResponse.js\";\nimport type { AckTransferFilesRequest } from \"./dtos/ackTransferFilesRequest.js\";\nimport type { AckTransferFilesResponse } from \"./dtos/ackTransferFilesResponse.js\";\n\ninterface ApiClient {\n login(request: LoginRequest, abortSignal?: AbortSignal): Promise<LoginResponse>,\n logout(abortSignal?: AbortSignal): Promise<void>,\n initializeTransfer(request: InitializeTransferRequest, abortSignal?: AbortSignal): Promise<InitializeTransferResponse>,\n registerTransferFiles(transferId: string, request: RegisterTransferFilesRequest, abortSignal?: AbortSignal): Promise<RegisterTransferFilesResponse>,\n ackTransferFiles(transferId: string, request: AckTransferFilesRequest, abortSignal?: AbortSignal): Promise<AckTransferFilesResponse>,\n finalizeTransfer(request: FinalizeTransferRequest, abortSignal?: AbortSignal): Promise<FinalizeTransferResponse>,\n resetTransfer(request: ResetTransferRequest, abortSignal?: AbortSignal): Promise<void>,\n cancelTransfer(request: CancelTransferRequest, abortSignal?: AbortSignal): Promise<void>,\n getTransfer(request: GetTransferRequest, abortSignal?: AbortSignal): Promise<GetTransferResponse>,\n getInboxTransfers(request: GetInboxTransfersRequest, abortSignal?: AbortSignal): Promise<GetInboxTransfersResponse>,\n setLoginToken(loginToken: string): void,\n clearLoginToken(): void,\n registerFileDownload(request: RegisterFileDownloadRequest, abortSignal?: AbortSignal): Promise<void>,\n registerTransferDownload(request: RegisterTransferDownloadRequest, abortSignal?: AbortSignal): Promise<void>,\n}\n\nexport default ApiClient;"]}
|
|
1
|
+
{"version":3,"file":"apiClient.js","sourceRoot":"","sources":["../../../../src/utils/api/apiClient.ts"],"names":[],"mappings":"","sourcesContent":["import type CancelTransferRequest from \"./dtos/cancelTransferRequest.js\";\r\nimport type FinalizeTransferRequest from \"./dtos/finalizeTransferRequest.js\";\r\nimport type FinalizeTransferResponse from \"./dtos/finalizeTransferResponse.js\";\r\nimport type GetInboxTransfersRequest from \"./dtos/getInboxTransfersRequest.js\";\r\nimport type GetInboxTransfersResponse from \"./dtos/getInboxTransfersResponse.js\";\r\nimport type GetTransferRequest from \"./dtos/getTransferRequest.js\";\r\nimport type GetTransferResponse from \"./dtos/getTransferResponse.js\";\r\nimport type { InitializeTransferRequest } from \"./dtos/initializeTransferRequest.js\";\r\nimport type InitializeTransferResponse from \"./dtos/initializeTransferResponse.js\";\r\nimport type LoginRequest from \"./dtos/loginRequest.js\";\r\nimport type LoginResponse from \"./dtos/loginResponse.js\";\r\nimport type RegisterFileDownloadRequest from \"./dtos/registerFileDownloadRequest.js\";\r\nimport type RegisterTransferDownloadRequest from \"./dtos/registerTransferDownloadRequest.js\";\r\nimport type ResetTransferRequest from \"./dtos/resetTransferRequest.js\";\r\nimport type { RegisterTransferFilesRequest } from \"./dtos/registerTransferFilesRequest.js\";\r\nimport type { RegisterTransferFilesResponse } from \"./dtos/registerTransferFilesResponse.js\";\r\nimport type { AckTransferFilesRequest } from \"./dtos/ackTransferFilesRequest.js\";\r\nimport type { AckTransferFilesResponse } from \"./dtos/ackTransferFilesResponse.js\";\r\n\r\ninterface ApiClient {\r\n login(request: LoginRequest, abortSignal?: AbortSignal): Promise<LoginResponse>,\r\n logout(abortSignal?: AbortSignal): Promise<void>,\r\n initializeTransfer(request: InitializeTransferRequest, abortSignal?: AbortSignal): Promise<InitializeTransferResponse>,\r\n registerTransferFiles(transferId: string, request: RegisterTransferFilesRequest, abortSignal?: AbortSignal): Promise<RegisterTransferFilesResponse>,\r\n ackTransferFiles(transferId: string, request: AckTransferFilesRequest, abortSignal?: AbortSignal): Promise<AckTransferFilesResponse>,\r\n finalizeTransfer(request: FinalizeTransferRequest, abortSignal?: AbortSignal): Promise<FinalizeTransferResponse>,\r\n resetTransfer(request: ResetTransferRequest, abortSignal?: AbortSignal): Promise<void>,\r\n cancelTransfer(request: CancelTransferRequest, abortSignal?: AbortSignal): Promise<void>,\r\n getTransfer(request: GetTransferRequest, abortSignal?: AbortSignal): Promise<GetTransferResponse>,\r\n getInboxTransfers(request: GetInboxTransfersRequest, abortSignal?: AbortSignal): Promise<GetInboxTransfersResponse>,\r\n setLoginToken(loginToken: string): void,\r\n clearLoginToken(): void,\r\n registerFileDownload(request: RegisterFileDownloadRequest, abortSignal?: AbortSignal): Promise<void>,\r\n registerTransferDownload(request: RegisterTransferDownloadRequest, abortSignal?: AbortSignal): Promise<void>,\r\n}\r\n\r\nexport default ApiClient;"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiClientBase.js","sourceRoot":"","sources":["../../../../src/utils/api/apiClientBase.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAgB,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAItE,MAAM,CAAC,OAAO,OAAO,aAAa;IACpB,6BAA6B,CAAC,OAAe,EAAE,MAAc,EAAE,aAAqB,EAAE,uBAA+B,EAAE,UAAkB;QAC/I,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC7C,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACrD,IAAI,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,IAAI,uBAAuB,GAAG,CAAC;YACpE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACxD,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAClD,CAAC;IAES,mBAAmB,CAAC,QAA+B,EAAE,eAAwB;QACnF,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QAExE,IAAI,QAAQ,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;YACnC,MAAM,MAAM,GAAG,QAAQ,CAAC,YAAY,IAAI,QAAQ,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,cAAc,CAAC;YACxH,MAAM,IAAI,gBAAgB,CAAC,GAAG,QAAQ,CAAC,cAAc,KAAK,MAAM,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;QACzG,CAAC;QAED,IAAI,eAAe,IAAI,CAAC,QAAQ,CAAC,IAAI;YACjC,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IACjE,CAAC;IAES,gCAAgC,CAAC,OAAkC;QACzE,MAAM,EAAE,YAAY,EAAE,GAAG,6BAA6B,EAAE,GAAG,OAAO,CAAC;QAEnE,MAAM,sBAAsB,GAAG,IAAI,CAAC,uCAAuC,CAAC,YAAY,CAAC,CAAC;QAE1F,OAAO,EAAE,GAAG,6BAA6B,EAAE,YAAY,EAAE,sBAAsB,EAAE,CAAC;IACtF,CAAC;IAEO,uCAAuC,CAAC,YAAqD;QACjG,IAAI,CAAC,YAAY;YACb,OAAO,SAAS,CAAC;QAErB,MAAM,sBAAsB,GAA8C,EAAE,CAAC;QAE7E,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;YACtB,IAAI,CAAC,EAAE,CAAC,KAAK;gBACT,OAAO;YAEX,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC;gBACxB,sBAAsB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;iBAC3D,CAAC;gBACF,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBACrB,sBAAsB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBACtD,CAAC,CAAC,CAAC;YACP,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,sBAAsB,CAAC;IAClC,CAAC;CACJ","sourcesContent":["import ApiFilemailError from \"./apiFilemailError.js\";\nimport { BaseResponse, isBaseResponse } from \"./dtos/baseResponse.js\";\n\nimport type { InitializeTransferRequest, InitializeTransferRequestCustomField, InitializeTransferRequestCustomFieldRaw, InitializeTransferRequestRaw } from \"./dtos/initializeTransferRequest.js\";\n\nexport default class ApiClientBase {\n protected validateConstructorParameters(baseUrl: string, source: string, sourceDetails: string, totalRequestTimeoutInMs: number, retryLimit: number) {\n if (!baseUrl || baseUrl.length === 0)\n throw new Error(`Base url can't be empty`);\n if (!source || source.length === 0)\n throw new Error(`Source can't be empty`);\n if (!sourceDetails || sourceDetails.length === 0)\n throw new Error(`Source details can't be empty`);\n if (Number.isNaN(totalRequestTimeoutInMs) || totalRequestTimeoutInMs < 0)\n throw new Error(`Total request timeout is invalid`);\n if (Number.isNaN(retryLimit) || retryLimit < 0)\n throw new Error(`Retry limit is invalid`);\n }\n\n protected throwIfPayloadNotOk(response: BaseResponse<unknown>, shouldDataExist: boolean) {\n if (!isBaseResponse(response))\n throw new Error(`API response is not a valid base response object`);\n\n if (response.responsestatus !== `OK`) {\n const reason = response.errormessage || response.errorcode?.toString() || response.exception || response.responsestatus;\n throw new ApiFilemailError(`${response.responsestatus}: ${reason}`, reason, response.responsestatus);\n }\n\n if (shouldDataExist && !response.data)\n throw new Error(`Data object in response doesn't exist`);\n }\n\n protected mapInitializeRequestToApiRequest(request: InitializeTransferRequest): InitializeTransferRequestRaw {\n const { customfields, ...apiRequestWithoutCustomFields } = request;\n\n const apiRequestCustomFields = this.mapCustomFieldsToApiRequestCustomFields(customfields);\n\n return { ...apiRequestWithoutCustomFields, customfields: apiRequestCustomFields };\n }\n\n private mapCustomFieldsToApiRequestCustomFields(customfields?: InitializeTransferRequestCustomField[]): InitializeTransferRequestCustomFieldRaw[] | undefined {\n if (!customfields)\n return undefined;\n\n const apiRequestCustomFields: InitializeTransferRequestCustomFieldRaw[] = [];\n\n customfields.forEach(cf => {\n if (!cf.value)\n return;\n\n if (!Array.isArray(cf.value))\n apiRequestCustomFields.push({ id: cf.id, value: cf.value });\n else {\n cf.value.forEach(value => {\n apiRequestCustomFields.push({ id: cf.id, value });\n });\n }\n });\n\n return apiRequestCustomFields;\n }\n}"]}
|
|
1
|
+
{"version":3,"file":"apiClientBase.js","sourceRoot":"","sources":["../../../../src/utils/api/apiClientBase.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAgB,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAItE,MAAM,CAAC,OAAO,OAAO,aAAa;IACpB,6BAA6B,CAAC,OAAe,EAAE,MAAc,EAAE,aAAqB,EAAE,uBAA+B,EAAE,UAAkB;QAC/I,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC7C,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACrD,IAAI,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,IAAI,uBAAuB,GAAG,CAAC;YACpE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACxD,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAClD,CAAC;IAES,mBAAmB,CAAC,QAA+B,EAAE,eAAwB;QACnF,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QAExE,IAAI,QAAQ,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;YACnC,MAAM,MAAM,GAAG,QAAQ,CAAC,YAAY,IAAI,QAAQ,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,cAAc,CAAC;YACxH,MAAM,IAAI,gBAAgB,CAAC,GAAG,QAAQ,CAAC,cAAc,KAAK,MAAM,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;QACzG,CAAC;QAED,IAAI,eAAe,IAAI,CAAC,QAAQ,CAAC,IAAI;YACjC,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IACjE,CAAC;IAES,gCAAgC,CAAC,OAAkC;QACzE,MAAM,EAAE,YAAY,EAAE,GAAG,6BAA6B,EAAE,GAAG,OAAO,CAAC;QAEnE,MAAM,sBAAsB,GAAG,IAAI,CAAC,uCAAuC,CAAC,YAAY,CAAC,CAAC;QAE1F,OAAO,EAAE,GAAG,6BAA6B,EAAE,YAAY,EAAE,sBAAsB,EAAE,CAAC;IACtF,CAAC;IAEO,uCAAuC,CAAC,YAAqD;QACjG,IAAI,CAAC,YAAY;YACb,OAAO,SAAS,CAAC;QAErB,MAAM,sBAAsB,GAA8C,EAAE,CAAC;QAE7E,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;YACtB,IAAI,CAAC,EAAE,CAAC,KAAK;gBACT,OAAO;YAEX,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC;gBACxB,sBAAsB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;iBAC3D,CAAC;gBACF,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBACrB,sBAAsB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBACtD,CAAC,CAAC,CAAC;YACP,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,sBAAsB,CAAC;IAClC,CAAC;CACJ","sourcesContent":["import ApiFilemailError from \"./apiFilemailError.js\";\r\nimport { BaseResponse, isBaseResponse } from \"./dtos/baseResponse.js\";\r\n\r\nimport type { InitializeTransferRequest, InitializeTransferRequestCustomField, InitializeTransferRequestCustomFieldRaw, InitializeTransferRequestRaw } from \"./dtos/initializeTransferRequest.js\";\r\n\r\nexport default class ApiClientBase {\r\n protected validateConstructorParameters(baseUrl: string, source: string, sourceDetails: string, totalRequestTimeoutInMs: number, retryLimit: number) {\r\n if (!baseUrl || baseUrl.length === 0)\r\n throw new Error(`Base url can't be empty`);\r\n if (!source || source.length === 0)\r\n throw new Error(`Source can't be empty`);\r\n if (!sourceDetails || sourceDetails.length === 0)\r\n throw new Error(`Source details can't be empty`);\r\n if (Number.isNaN(totalRequestTimeoutInMs) || totalRequestTimeoutInMs < 0)\r\n throw new Error(`Total request timeout is invalid`);\r\n if (Number.isNaN(retryLimit) || retryLimit < 0)\r\n throw new Error(`Retry limit is invalid`);\r\n }\r\n\r\n protected throwIfPayloadNotOk(response: BaseResponse<unknown>, shouldDataExist: boolean) {\r\n if (!isBaseResponse(response))\r\n throw new Error(`API response is not a valid base response object`);\r\n\r\n if (response.responsestatus !== `OK`) {\r\n const reason = response.errormessage || response.errorcode?.toString() || response.exception || response.responsestatus;\r\n throw new ApiFilemailError(`${response.responsestatus}: ${reason}`, reason, response.responsestatus);\r\n }\r\n\r\n if (shouldDataExist && !response.data)\r\n throw new Error(`Data object in response doesn't exist`);\r\n }\r\n\r\n protected mapInitializeRequestToApiRequest(request: InitializeTransferRequest): InitializeTransferRequestRaw {\r\n const { customfields, ...apiRequestWithoutCustomFields } = request;\r\n\r\n const apiRequestCustomFields = this.mapCustomFieldsToApiRequestCustomFields(customfields);\r\n\r\n return { ...apiRequestWithoutCustomFields, customfields: apiRequestCustomFields };\r\n }\r\n\r\n private mapCustomFieldsToApiRequestCustomFields(customfields?: InitializeTransferRequestCustomField[]): InitializeTransferRequestCustomFieldRaw[] | undefined {\r\n if (!customfields)\r\n return undefined;\r\n\r\n const apiRequestCustomFields: InitializeTransferRequestCustomFieldRaw[] = [];\r\n\r\n customfields.forEach(cf => {\r\n if (!cf.value)\r\n return;\r\n\r\n if (!Array.isArray(cf.value))\r\n apiRequestCustomFields.push({ id: cf.id, value: cf.value });\r\n else {\r\n cf.value.forEach(value => {\r\n apiRequestCustomFields.push({ id: cf.id, value });\r\n });\r\n }\r\n });\r\n\r\n return apiRequestCustomFields;\r\n }\r\n}"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiError.js","sourceRoot":"","sources":["../../../../src/utils/api/apiError.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,KAAK;IAC9B,UAAU,CAAqB;IAC/B,UAAU,CAAqB;IAExC,YAAY,OAAgB,EAAE,UAAmB,EAAE,OAAgD;QAC/F,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,OAAO,EAAE,UAAU,CAAC;IAC1C,CAAC;CACJ","sourcesContent":["export default class ApiError extends Error {\n readonly httpStatus: number | undefined;\n readonly requestUrl: string | undefined;\n\n constructor(message?: string, httpStatus?: number, options?: ErrorOptions & { requestUrl?: string }) {\n super(message, options);\n this.name = `ApiError`;\n this.httpStatus = httpStatus;\n this.requestUrl = options?.requestUrl;\n }\n}"]}
|
|
1
|
+
{"version":3,"file":"apiError.js","sourceRoot":"","sources":["../../../../src/utils/api/apiError.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,KAAK;IAC9B,UAAU,CAAqB;IAC/B,UAAU,CAAqB;IAExC,YAAY,OAAgB,EAAE,UAAmB,EAAE,OAAgD;QAC/F,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,OAAO,EAAE,UAAU,CAAC;IAC1C,CAAC;CACJ","sourcesContent":["export default class ApiError extends Error {\r\n readonly httpStatus: number | undefined;\r\n readonly requestUrl: string | undefined;\r\n\r\n constructor(message?: string, httpStatus?: number, options?: ErrorOptions & { requestUrl?: string }) {\r\n super(message, options);\r\n this.name = `ApiError`;\r\n this.httpStatus = httpStatus;\r\n this.requestUrl = options?.requestUrl;\r\n }\r\n}"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiFilemail449Error.js","sourceRoot":"","sources":["../../../../src/utils/api/apiFilemail449Error.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,KAAK;IAClD,YAAY,OAAe,EAAE,OAAsB;QAC/C,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAExB,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACtC,CAAC;CACJ","sourcesContent":["export default class ApiFilemail449Error extends Error {\n constructor(message: string, options?: ErrorOptions) {\n super(message, options);\n\n this.name = `ApiFilemail449Error`;\n }\n}"]}
|
|
1
|
+
{"version":3,"file":"apiFilemail449Error.js","sourceRoot":"","sources":["../../../../src/utils/api/apiFilemail449Error.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,KAAK;IAClD,YAAY,OAAe,EAAE,OAAsB;QAC/C,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAExB,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACtC,CAAC;CACJ","sourcesContent":["export default class ApiFilemail449Error extends Error {\r\n constructor(message: string, options?: ErrorOptions) {\r\n super(message, options);\r\n\r\n this.name = `ApiFilemail449Error`;\r\n }\r\n}"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiFilemailError.js","sourceRoot":"","sources":["../../../../src/utils/api/apiFilemailError.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,KAAK;IACtC,MAAM,CAAS;IACf,MAAM,CAAS;IAExB,YAAY,OAAe,EAAE,MAAc,EAAE,MAAc,EAAE,OAAsB;QAC/E,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAExB,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAE/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;CACJ","sourcesContent":["export default class ApiFilemailError extends Error {\n readonly reason: string;\n readonly status: string;\n\n constructor(message: string, reason: string, status: string, options?: ErrorOptions) {\n super(message, options);\n\n this.name = `ApiFilemailError`;\n\n this.reason = reason;\n this.status = status;\n }\n}"]}
|
|
1
|
+
{"version":3,"file":"apiFilemailError.js","sourceRoot":"","sources":["../../../../src/utils/api/apiFilemailError.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,KAAK;IACtC,MAAM,CAAS;IACf,MAAM,CAAS;IAExB,YAAY,OAAe,EAAE,MAAc,EAAE,MAAc,EAAE,OAAsB;QAC/E,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAExB,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAE/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;CACJ","sourcesContent":["export default class ApiFilemailError extends Error {\r\n readonly reason: string;\r\n readonly status: string;\r\n\r\n constructor(message: string, reason: string, status: string, options?: ErrorOptions) {\r\n super(message, options);\r\n\r\n this.name = `ApiFilemailError`;\r\n\r\n this.reason = reason;\r\n this.status = status;\r\n }\r\n}"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ackTransferFilesRequest.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/ackTransferFilesRequest.ts"],"names":[],"mappings":"","sourcesContent":["export type AckTransferFilesRequest = {\n transferkey: string,\n files: {\n uploadItemId: string,\n size: number,\n md5?: string,\n }[],\n}"]}
|
|
1
|
+
{"version":3,"file":"ackTransferFilesRequest.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/ackTransferFilesRequest.ts"],"names":[],"mappings":"","sourcesContent":["export type AckTransferFilesRequest = {\r\n transferkey: string,\r\n files: {\r\n uploadItemId: string,\r\n size: number,\r\n md5?: string,\r\n }[],\r\n}"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ackTransferFilesResponse.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/ackTransferFilesResponse.ts"],"names":[],"mappings":"","sourcesContent":["export type AckTransferFilesResponse = {\n files: {\n uploadItemId: string,\n status: string,\n }[],\n}"]}
|
|
1
|
+
{"version":3,"file":"ackTransferFilesResponse.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/ackTransferFilesResponse.ts"],"names":[],"mappings":"","sourcesContent":["export type AckTransferFilesResponse = {\r\n files: {\r\n uploadItemId: string,\r\n status: string,\r\n }[],\r\n}"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baseResponse.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/baseResponse.ts"],"names":[],"mappings":"AAWA,MAAM,UAAU,cAAc,CAAC,GAAQ;IACnC,OAAO,GAAG,IAAI,gBAAgB,IAAI,GAAG,CAAC;AAC1C,CAAC","sourcesContent":["export interface BaseResponse<T> {\n responsestatus: string,\n errorcode?: number,\n errormessage?: string,\n errorlink?: string,\n url?: string,\n method?: string,\n exception?: string,\n data?: T\n}\n\nexport function isBaseResponse(obj: any): obj is BaseResponse<unknown> {\n return obj && `responsestatus` in obj;\n}"]}
|
|
1
|
+
{"version":3,"file":"baseResponse.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/baseResponse.ts"],"names":[],"mappings":"AAWA,MAAM,UAAU,cAAc,CAAC,GAAQ;IACnC,OAAO,GAAG,IAAI,gBAAgB,IAAI,GAAG,CAAC;AAC1C,CAAC","sourcesContent":["export interface BaseResponse<T> {\r\n responsestatus: string,\r\n errorcode?: number,\r\n errormessage?: string,\r\n errorlink?: string,\r\n url?: string,\r\n method?: string,\r\n exception?: string,\r\n data?: T\r\n}\r\n\r\nexport function isBaseResponse(obj: any): obj is BaseResponse<unknown> {\r\n return obj && `responsestatus` in obj;\r\n}"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cancelTransferRequest.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/cancelTransferRequest.ts"],"names":[],"mappings":"","sourcesContent":["interface CancelTransferRequest {\n transferid: string,\n transferkey: string\n}\n\nexport default CancelTransferRequest;"]}
|
|
1
|
+
{"version":3,"file":"cancelTransferRequest.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/cancelTransferRequest.ts"],"names":[],"mappings":"","sourcesContent":["interface CancelTransferRequest {\r\n transferid: string,\r\n transferkey: string\r\n}\r\n\r\nexport default CancelTransferRequest;"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"finalizeTransferRequest.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/finalizeTransferRequest.ts"],"names":[],"mappings":"","sourcesContent":["interface FinalizeTransferRequest {\n transferid: string,\n transferkey: string\n protocol: `tcp`,\n}\n\nexport default FinalizeTransferRequest;"]}
|
|
1
|
+
{"version":3,"file":"finalizeTransferRequest.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/finalizeTransferRequest.ts"],"names":[],"mappings":"","sourcesContent":["interface FinalizeTransferRequest {\r\n transferid: string,\r\n transferkey: string\r\n protocol: `tcp`,\r\n}\r\n\r\nexport default FinalizeTransferRequest;"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"finalizeTransferResponse.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/finalizeTransferResponse.ts"],"names":[],"mappings":"","sourcesContent":["export interface FinalizeTransferResponseRecipientTrackingLink {\n email: string,\n downloadLink: string,\n}\n\nexport interface FinalizeTransferResponseRecipientTrackingLinkRaw {\n email: string,\n downloadlink: string,\n}\n\nexport interface FinalizeTransferResponseRaw {\n downloadurl: string,\n confirmationUrl?: string,\n recipients?: FinalizeTransferResponseRecipientTrackingLinkRaw[],\n}\n\ninterface FinalizeTransferResponse {\n downloadUrl: string,\n confirmationUrl?: string,\n recipientTrackingLinks?: FinalizeTransferResponseRecipientTrackingLink[],\n}\n\nexport default FinalizeTransferResponse;"]}
|
|
1
|
+
{"version":3,"file":"finalizeTransferResponse.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/finalizeTransferResponse.ts"],"names":[],"mappings":"","sourcesContent":["export interface FinalizeTransferResponseRecipientTrackingLink {\r\n email: string,\r\n downloadLink: string,\r\n}\r\n\r\nexport interface FinalizeTransferResponseRecipientTrackingLinkRaw {\r\n email: string,\r\n downloadlink: string,\r\n}\r\n\r\nexport interface FinalizeTransferResponseRaw {\r\n downloadurl: string,\r\n confirmationUrl?: string,\r\n recipients?: FinalizeTransferResponseRecipientTrackingLinkRaw[],\r\n}\r\n\r\ninterface FinalizeTransferResponse {\r\n downloadUrl: string,\r\n confirmationUrl?: string,\r\n recipientTrackingLinks?: FinalizeTransferResponseRecipientTrackingLink[],\r\n}\r\n\r\nexport default FinalizeTransferResponse;"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getCompanyResponse.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/getCompanyResponse.ts"],"names":[],"mappings":"","sourcesContent":["import type TransferCustomFieldDto from \"./transferCustomFieldDto.js\";\n\ninterface GetCompanyResponse {\n id: string;\n customfields: TransferCustomFieldDto[]\n}\n\nexport default GetCompanyResponse;"]}
|
|
1
|
+
{"version":3,"file":"getCompanyResponse.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/getCompanyResponse.ts"],"names":[],"mappings":"","sourcesContent":["import type TransferCustomFieldDto from \"./transferCustomFieldDto.js\";\r\n\r\ninterface GetCompanyResponse {\r\n id: string;\r\n customfields: TransferCustomFieldDto[]\r\n}\r\n\r\nexport default GetCompanyResponse;"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getCompressedFileMetadataResponse.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/getCompressedFileMetadataResponse.ts"],"names":[],"mappings":"","sourcesContent":["interface GetCompressedFileMetadataResponse {\n fileSize: number,\n fileName: string,\n}\n\nexport default GetCompressedFileMetadataResponse;"]}
|
|
1
|
+
{"version":3,"file":"getCompressedFileMetadataResponse.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/getCompressedFileMetadataResponse.ts"],"names":[],"mappings":"","sourcesContent":["interface GetCompressedFileMetadataResponse {\r\n fileSize: number,\r\n fileName: string,\r\n}\r\n\r\nexport default GetCompressedFileMetadataResponse;"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getInboxTransfersRequest.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/getInboxTransfersRequest.ts"],"names":[],"mappings":"","sourcesContent":["interface GetInboxTransfersRequest {\n getForAllUsers: boolean,\n sinceUnixTime: number,\n portals: string[],\n}\n\nexport default GetInboxTransfersRequest;"]}
|
|
1
|
+
{"version":3,"file":"getInboxTransfersRequest.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/getInboxTransfersRequest.ts"],"names":[],"mappings":"","sourcesContent":["interface GetInboxTransfersRequest {\r\n getForAllUsers: boolean,\r\n sinceUnixTime: number,\r\n portals: string[],\r\n}\r\n\r\nexport default GetInboxTransfersRequest;"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getInboxTransfersResponse.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/getInboxTransfersResponse.ts"],"names":[],"mappings":"","sourcesContent":["import type GetTransferResponse from \"./getTransferResponse.js\";\n\ninterface GetInboxTransfersResponse {\n transfers: GetTransferResponse[];\n}\n\nexport default GetInboxTransfersResponse;"]}
|
|
1
|
+
{"version":3,"file":"getInboxTransfersResponse.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/getInboxTransfersResponse.ts"],"names":[],"mappings":"","sourcesContent":["import type GetTransferResponse from \"./getTransferResponse.js\";\r\n\r\ninterface GetInboxTransfersResponse {\r\n transfers: GetTransferResponse[];\r\n}\r\n\r\nexport default GetInboxTransfersResponse;"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getRangehashResponse.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/getRangehashResponse.ts"],"names":[],"mappings":"","sourcesContent":["import type { BaseResponse } from \"./baseResponse.js\";\n\ninterface GetRangehashResponse extends BaseResponse<unknown> {\n hash: string | null;\n}\n\nexport default GetRangehashResponse;"]}
|
|
1
|
+
{"version":3,"file":"getRangehashResponse.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/getRangehashResponse.ts"],"names":[],"mappings":"","sourcesContent":["import type { BaseResponse } from \"./baseResponse.js\";\r\n\r\ninterface GetRangehashResponse extends BaseResponse<unknown> {\r\n hash: string | null;\r\n}\r\n\r\nexport default GetRangehashResponse;"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getTransferRequest.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/getTransferRequest.ts"],"names":[],"mappings":"","sourcesContent":["interface GetTransferRequest {\n transferid?: string,\n trackid?: string,\n password?: string,\n fileslimit?: number,\n fprops?: string[],\n checkLogintoken?: boolean,\n}\n\nexport default GetTransferRequest;"]}
|
|
1
|
+
{"version":3,"file":"getTransferRequest.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/getTransferRequest.ts"],"names":[],"mappings":"","sourcesContent":["interface GetTransferRequest {\r\n transferid?: string,\r\n trackid?: string,\r\n password?: string,\r\n fileslimit?: number,\r\n fprops?: string[],\r\n checkLogintoken?: boolean,\r\n}\r\n\r\nexport default GetTransferRequest;"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getTransferResponse.d.ts","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/getTransferResponse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,sBAAsB,MAAM,6BAA6B,CAAC;AACtE,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAC;AAExD,UAAU,mBAAmB;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;IACd,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,YAAY,EAAE,sBAAsB,EAAE,CAAC;IACvC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"getTransferResponse.d.ts","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/getTransferResponse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,sBAAsB,MAAM,6BAA6B,CAAC;AACtE,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAC;AAExD,UAAU,mBAAmB;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;IACd,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,YAAY,EAAE,sBAAsB,EAAE,CAAC;IACvC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,eAAe,mBAAmB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getTransferResponse.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/getTransferResponse.ts"],"names":[],"mappings":"","sourcesContent":["import type TransferCustomFieldDto from \"./transferCustomFieldDto.js\";\nimport type TransferFileDto from \"./transferFileDto.js\";\n\ninterface GetTransferResponse {\n id: string;\n trackid?: string;\n url: string;\n numberoffiles?: number;\n size?: number;\n sentdate: number;\n compressedfileurl?: string;\n torrenturl?: string;\n from?: string;\n message?: string;\n subject?: string;\n to?: string[];\n files: TransferFileDto[];\n customfields: TransferCustomFieldDto[];\n isexpired?: boolean;\n blockdownloads?: boolean;\n passwordprotected: boolean;\n region?: string;\n e2ee?: boolean;\n e2ee_keyhash?: string;\n}\n\nexport default GetTransferResponse;"]}
|
|
1
|
+
{"version":3,"file":"getTransferResponse.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/getTransferResponse.ts"],"names":[],"mappings":"","sourcesContent":["import type TransferCustomFieldDto from \"./transferCustomFieldDto.js\";\r\nimport type TransferFileDto from \"./transferFileDto.js\";\r\n\r\ninterface GetTransferResponse {\r\n id: string;\r\n trackid?: string;\r\n url: string;\r\n numberoffiles?: number;\r\n size?: number;\r\n sentdate: number;\r\n compressedfileurl?: string;\r\n torrenturl?: string;\r\n from?: string;\r\n message?: string;\r\n subject?: string;\r\n to?: string[];\r\n files: TransferFileDto[];\r\n customfields: TransferCustomFieldDto[];\r\n isexpired?: boolean;\r\n blockdownloads?: boolean;\r\n passwordprotected: boolean;\r\n region?: string;\r\n e2ee?: boolean;\r\n e2ee_keyhash?: string;\r\n filesdb?: boolean;\r\n}\r\n\r\nexport default GetTransferResponse;"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initializeTransferRequest.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/initializeTransferRequest.ts"],"names":[],"mappings":"","sourcesContent":["export type InitializeTransferRequest = {\n dataRegion?: `auto` | `eu` | `us` | `no`,\n e2ee: boolean,\n e2ee_keyhash?: string,\n transfersize?: number\n to?: string[],\n from?: string,\n subject?: string,\n message?: string,\n notify?: boolean,\n confirmation?: boolean,\n days?: number,\n password?: string,\n companyid?: string,\n incominglogintoken?: string,\n incomingpageid?: string,\n filerequestid?: string,\n filerequestshareid?: string,\n customfields?: InitializeTransferRequestCustomField[],\n filesdb: boolean,\n}\n\nexport type InitializeTransferRequestCustomField = {\n id: string,\n value: string | string[],\n}\n\nexport type InitializeTransferRequestRaw = Omit<InitializeTransferRequest, `customfields`> & {\n filesdb: boolean,\n customfields?: InitializeTransferRequestCustomFieldRaw[],\n}\n\nexport type InitializeTransferRequestCustomFieldRaw = {\n id: string,\n value: string,\n}\n"]}
|
|
1
|
+
{"version":3,"file":"initializeTransferRequest.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/initializeTransferRequest.ts"],"names":[],"mappings":"","sourcesContent":["export type InitializeTransferRequest = {\r\n dataRegion?: `auto` | `eu` | `us` | `no`,\r\n e2ee: boolean,\r\n e2ee_keyhash?: string,\r\n transfersize?: number\r\n to?: string[],\r\n from?: string,\r\n subject?: string,\r\n message?: string,\r\n notify?: boolean,\r\n confirmation?: boolean,\r\n days?: number,\r\n password?: string,\r\n companyid?: string,\r\n incominglogintoken?: string,\r\n incomingpageid?: string,\r\n filerequestid?: string,\r\n filerequestshareid?: string,\r\n customfields?: InitializeTransferRequestCustomField[],\r\n filesdb: boolean,\r\n}\r\n\r\nexport type InitializeTransferRequestCustomField = {\r\n id: string,\r\n value: string | string[],\r\n}\r\n\r\nexport type InitializeTransferRequestRaw = Omit<InitializeTransferRequest, `customfields`> & {\r\n filesdb: boolean,\r\n customfields?: InitializeTransferRequestCustomFieldRaw[],\r\n}\r\n\r\nexport type InitializeTransferRequestCustomFieldRaw = {\r\n id: string,\r\n value: string,\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initializeTransferResponse.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/initializeTransferResponse.ts"],"names":[],"mappings":"","sourcesContent":["interface InitializeTransferResponse {\n transferId: string,\n transferKey: string,\n transferUrl: string,\n transferRegion?: string,\n}\n\nexport interface InitializeTransferResponseRaw {\n transferid: string,\n transferkey: string,\n transferurl: string,\n region?: string,\n}\n\nexport default InitializeTransferResponse;\n"]}
|
|
1
|
+
{"version":3,"file":"initializeTransferResponse.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/initializeTransferResponse.ts"],"names":[],"mappings":"","sourcesContent":["interface InitializeTransferResponse {\r\n transferId: string,\r\n transferKey: string,\r\n transferUrl: string,\r\n transferRegion?: string,\r\n}\r\n\r\nexport interface InitializeTransferResponseRaw {\r\n transferid: string,\r\n transferkey: string,\r\n transferurl: string,\r\n region?: string,\r\n}\r\n\r\nexport default InitializeTransferResponse;\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loginRequest.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/loginRequest.ts"],"names":[],"mappings":"","sourcesContent":["interface LoginRequest {\n email: string,\n password: string\n}\n\nexport default LoginRequest;"]}
|
|
1
|
+
{"version":3,"file":"loginRequest.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/loginRequest.ts"],"names":[],"mappings":"","sourcesContent":["interface LoginRequest {\r\n email: string,\r\n password: string\r\n}\r\n\r\nexport default LoginRequest;"]}
|