filemail-sdk 9.4.7 → 9.4.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +10 -10
- package/dist/src/autoDownloader/autoDownloader.js.map +1 -1
- package/dist/src/autoDownloader/autoDownloaderDestroyer.js.map +1 -1
- package/dist/src/autoDownloader/autoDownloaderError.js.map +1 -1
- package/dist/src/autoDownloader/autoDownloaderEvent.js.map +1 -1
- package/dist/src/autoDownloader/autoDownloaderOptions.js.map +1 -1
- package/dist/src/autoDownloader/autoDownloaderStateSerializer.js.map +1 -1
- package/dist/src/autoDownloader/eventArgs/autoDownloadEventArgs.js.map +1 -1
- package/dist/src/autoDownloader/eventArgs/autoDownloadFailedEventArgs.js.map +1 -1
- package/dist/src/autoDownloader/eventArgs/autoDownloadProgressedEventArgs.js.map +1 -1
- package/dist/src/autoDownloader/eventArgs/autoDownloadStartedEventArgs.js.map +1 -1
- package/dist/src/autoDownloader/eventArgs/autoDownloadStartingFailedEventArgs.js.map +1 -1
- package/dist/src/autoDownloader/eventArgs/autoDownloadUnhealthyEventArgs.js.map +1 -1
- package/dist/src/autoDownloader/eventArgs/checkingForNewTransfersStartedEventArgs.js.map +1 -1
- package/dist/src/autoDownloader/eventArgs/newTransfersCheckCompletedEventArgs.js.map +1 -1
- package/dist/src/autoDownloader/factory/nodeAutoDownloaderFactory.js.map +1 -1
- package/dist/src/autoDownloader/factory/nodeAutoDownloaderFactoryOptions.js.map +1 -1
- package/dist/src/autoDownloader/newInboxTransfersRetriever/newInboxTransfer.js.map +1 -1
- package/dist/src/autoDownloader/newInboxTransfersRetriever/newInboxTransfersRetriever.js.map +1 -1
- package/dist/src/autoDownloader/node/nodeAutoDownloaderStateSerializer.js.map +1 -1
- package/dist/src/autoDownloader/node/nodeTransferDownloaderFactory.js.map +1 -1
- package/dist/src/autoDownloader/state/autoDownloaderRecoverableState.js.map +1 -1
- package/dist/src/autoDownloader/state/autoDownloaderState.js.map +1 -1
- package/dist/src/autoDownloader/state/autoDownloaderStateRecoverableTransfer.js.map +1 -1
- package/dist/src/autoDownloader/state/autoDownloaderStateRunningTransfer.js.map +1 -1
- package/dist/src/autoDownloader/state/autoDownloaderStateSnapshot.js.map +1 -1
- package/dist/src/autoDownloader/transferDownloaderFactory.js.map +1 -1
- package/dist/src/autoDownloader/transferHandler/autoDownloaderNewTransferHandler.js.map +1 -1
- package/dist/src/autoDownloader/transferHandler/autoDownloaderRecoverableTransferHandler.js.map +1 -1
- package/dist/src/autoDownloader/transferHandler/autoDownloaderTransferHandlerBase.js.map +1 -1
- package/dist/src/client/downloader/downloaderCore.js.map +1 -1
- package/dist/src/client/downloader/node/nodeTransferDownloader.js.map +1 -1
- package/dist/src/client/downloader/transferDownloader.js.map +1 -1
- package/dist/src/client/environmentVariables.js.map +1 -1
- package/dist/src/client/healthMonitor/events/eventArgs/healthMonitorHealthyEventArgs.js.map +1 -1
- package/dist/src/client/healthMonitor/events/eventArgs/healthMonitorUnhealthyEventArgs.js.map +1 -1
- package/dist/src/client/healthMonitor/events/transferHealthMonitorEvent.js.map +1 -1
- package/dist/src/client/healthMonitor/onlineChecker/nodeOnlineChecker.js.map +1 -1
- package/dist/src/client/healthMonitor/onlineChecker/onlineChecker.js.map +1 -1
- package/dist/src/client/healthMonitor/onlineChecker/webOnlineChecker.js.map +1 -1
- package/dist/src/client/healthMonitor/transferDownloaderHealthMonitor.js.map +1 -1
- package/dist/src/client/healthMonitor/transferHealthMonitorBase.js.map +1 -1
- package/dist/src/client/healthMonitor/transferUploaderHealthMonitor.js.map +1 -1
- package/dist/src/client/loggers/dummyLogger.js.map +1 -1
- package/dist/src/client/loggers/logger.js.map +1 -1
- package/dist/src/client/loggers/utils/logHealthyStatus.js.map +1 -1
- package/dist/src/client/node/nodeFileDetailsProvider.js.map +1 -1
- package/dist/src/client/uploader/node/nodeTransferUploader.js.map +1 -1
- package/dist/src/client/uploader/transferUploader.js.map +1 -1
- package/dist/src/client/uploader/transferUploaderBase.js.map +1 -1
- package/dist/src/client/uploader/transferUploaderConfig.js.map +1 -1
- package/dist/src/client/uploader/utils/uploaderUtils.js.map +1 -1
- package/dist/src/client/uploader/web/webTransferUploader.js.map +1 -1
- package/dist/src/downloader/api/fileServerDownloadClient.js.map +1 -1
- package/dist/src/downloader/api/node/nodeFileServerDownloadClient.js.map +1 -1
- package/dist/src/downloader/chunkDownloader.js.map +1 -1
- package/dist/src/downloader/downloadFolderResolver.js.map +1 -1
- package/dist/src/downloader/downloadLogger.js.map +1 -1
- package/dist/src/downloader/downloadOptions.js.map +1 -1
- package/dist/src/downloader/downloadStatus/downloadFileChunkProgress.js.map +1 -1
- package/dist/src/downloader/downloadStatus/downloadFileProgress.js.map +1 -1
- package/dist/src/downloader/downloadStatus/downloadFilePromise.js.map +1 -1
- package/dist/src/downloader/downloadStatus/downloadState.js.map +1 -1
- package/dist/src/downloader/downloadTracker.js.map +1 -1
- package/dist/src/downloader/dtos/downloadCommand.js.map +1 -1
- package/dist/src/downloader/dtos/downloadError.js.map +1 -1
- package/dist/src/downloader/dtos/downloadErrorCode.js.map +1 -1
- package/dist/src/downloader/dtos/downloadEvent.js.map +1 -1
- package/dist/src/downloader/dtos/downloadFileChunkInfo.js.map +1 -1
- package/dist/src/downloader/dtos/downloadFileInfo.js.map +1 -1
- package/dist/src/downloader/dtos/downloadFilesCommand.js.map +1 -1
- package/dist/src/downloader/dtos/downloadInfo.js.map +1 -1
- package/dist/src/downloader/dtos/downloadRegistrationMode.js.map +1 -1
- package/dist/src/downloader/dtos/downloadTrackerFileInfo.js.map +1 -1
- package/dist/src/downloader/dtos/downloadTrackerFileProgressInfo.js.map +1 -1
- package/dist/src/downloader/dtos/downloadTrackerProgressInfo.js.map +1 -1
- package/dist/src/downloader/dtos/downloadTrackingMetadata.js.map +1 -1
- package/dist/src/downloader/dtos/downloaderRestoredState.js.map +1 -1
- package/dist/src/downloader/eventArgs/chunkDownloadEventArgs.js.map +1 -1
- package/dist/src/downloader/eventArgs/chunkDownloadFailedEventArgs.js.map +1 -1
- package/dist/src/downloader/eventArgs/downloadCompletedEventArgs.js.map +1 -1
- package/dist/src/downloader/eventArgs/downloadEventArgs.js.map +1 -1
- package/dist/src/downloader/eventArgs/downloadMetadataDeterminedEventArgs.js.map +1 -1
- package/dist/src/downloader/eventArgs/downloadPauseEventArgs.js.map +1 -1
- package/dist/src/downloader/eventArgs/downloadTrackingFailedEventArgs.js.map +1 -1
- package/dist/src/downloader/eventArgs/fileDownloadEventArgs.js.map +1 -1
- package/dist/src/downloader/eventArgs/fileDownloadFailedEventArgs.js.map +1 -1
- package/dist/src/downloader/filesDownloader.js.map +1 -1
- package/dist/src/downloader/filesPreparer.js.map +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/index.node.js.map +1 -1
- package/dist/src/index.web.js.map +1 -1
- package/dist/src/uploader/api/dtos/handshakeRequest.js.map +1 -1
- package/dist/src/uploader/api/dtos/handshakeResponse.js.map +1 -1
- package/dist/src/uploader/api/dtos/pingResponse.js.map +1 -1
- package/dist/src/uploader/api/dtos/sendChunkRequest.js.map +1 -1
- package/dist/src/uploader/api/fileServerUdpClient.js.map +1 -1
- package/dist/src/uploader/api/fileServerUploadClient.js.map +1 -1
- package/dist/src/uploader/api/node/nodeFileServerUdpClient.js +8 -8
- package/dist/src/uploader/api/node/nodeFileServerUdpClient.js.map +1 -1
- package/dist/src/uploader/api/node/nodeFileServerUploadClient.js.map +1 -1
- package/dist/src/uploader/api/web/utils/axiosIdleTimeoutManager.js.map +1 -1
- package/dist/src/uploader/api/web/webFileServerUploadClient.js.map +1 -1
- package/dist/src/uploader/chunkStreamProviderFactory/nodeFileDetailsUploaderChunkStreamProviderFactory.js.map +1 -1
- package/dist/src/uploader/chunkStreamProviderFactory/uploaderChunkStreamProviderFactory.js.map +1 -1
- package/dist/src/uploader/chunkStreamProviderFactory/webFileDetailsUploaderChunkStreamProviderFactory.js.map +1 -1
- package/dist/src/uploader/chunksIterator/chunksIterator.js.map +1 -1
- package/dist/src/uploader/eventArgs/fileChunkUploadCompletedEventArgs.js.map +1 -1
- package/dist/src/uploader/eventArgs/fileChunkUploadCompletedPartiallyEventArgs.js.map +1 -1
- package/dist/src/uploader/eventArgs/fileChunkUploadEventArgs.js.map +1 -1
- package/dist/src/uploader/eventArgs/fileChunkUploadFailedEventArgs.js.map +1 -1
- package/dist/src/uploader/eventArgs/fileChunkUploadProgressedEventArgs.js.map +1 -1
- package/dist/src/uploader/eventArgs/fileUploadEventArgs.js.map +1 -1
- package/dist/src/uploader/eventArgs/fileUploadFailedEventArgs.js.map +1 -1
- package/dist/src/uploader/eventArgs/transferMetadataDeterminedEventArgs.js.map +1 -1
- package/dist/src/uploader/eventArgs/transferUploadCompletedEventArgs.d.ts +7 -0
- package/dist/src/uploader/eventArgs/transferUploadCompletedEventArgs.d.ts.map +1 -1
- package/dist/src/uploader/eventArgs/transferUploadCompletedEventArgs.js.map +1 -1
- package/dist/src/uploader/eventArgs/transferUploadModeChosenEventArgs.js.map +1 -1
- package/dist/src/uploader/eventArgs/transferUploadProgressedEventArgs.js.map +1 -1
- package/dist/src/uploader/export/transferUploadExportData.js.map +1 -1
- package/dist/src/uploader/export/transferUploadExportState.js.map +1 -1
- package/dist/src/uploader/export/transferUploadMetadata.js.map +1 -1
- package/dist/src/uploader/optimizer/optimizationValues.js.map +1 -1
- package/dist/src/uploader/optimizer/strategies/udpConcurrencyBasedOptimizationStrategy.js.map +1 -1
- package/dist/src/uploader/optimizer/strategies/udpSleepBasedOptimizationStrategy.js.map +1 -1
- package/dist/src/uploader/optimizer/transferUploadOptimizationStrategy.js.map +1 -1
- package/dist/src/uploader/optimizer/transferUploadOptimizer.js.map +1 -1
- package/dist/src/uploader/optimizer/uploadOptimizer.js.map +1 -1
- package/dist/src/uploader/options/transferUploadAppendInfo.js.map +1 -1
- package/dist/src/uploader/options/transferUploadConfig.js.map +1 -1
- package/dist/src/uploader/options/transferUploadInfo.js.map +1 -1
- package/dist/src/uploader/options/transferUploadInfoBase.js.map +1 -1
- package/dist/src/uploader/pauseController.js.map +1 -1
- package/dist/src/uploader/state/continuousChunksCalculator.js.map +1 -1
- package/dist/src/uploader/state/readonlyTransferUploadStateFile.js.map +1 -1
- package/dist/src/uploader/state/readonlyTransferUploadStateFiles.js.map +1 -1
- package/dist/src/uploader/state/transferUploadProgressCalculator.js.map +1 -1
- package/dist/src/uploader/state/transferUploadState.d.ts +2 -1
- package/dist/src/uploader/state/transferUploadState.d.ts.map +1 -1
- package/dist/src/uploader/state/transferUploadState.js +9 -2
- 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/transferUpload.d.ts.map +1 -1
- package/dist/src/uploader/transferUpload.js +3 -1
- package/dist/src/uploader/transferUpload.js.map +1 -1
- package/dist/src/uploader/transferUploadError.js.map +1 -1
- package/dist/src/uploader/transferUploadEvent.js.map +1 -1
- package/dist/src/utils/api/apiClient.js.map +1 -1
- package/dist/src/utils/api/apiClientBase.js.map +1 -1
- package/dist/src/utils/api/apiError.js.map +1 -1
- package/dist/src/utils/api/apiFilemail449Error.js.map +1 -1
- package/dist/src/utils/api/apiFilemailError.js.map +1 -1
- package/dist/src/utils/api/dtos/baseResponse.js.map +1 -1
- package/dist/src/utils/api/dtos/cancelTransferRequest.js.map +1 -1
- package/dist/src/utils/api/dtos/finalizeTransferRequest.js.map +1 -1
- package/dist/src/utils/api/dtos/finalizeTransferResponse.d.ts +13 -0
- package/dist/src/utils/api/dtos/finalizeTransferResponse.d.ts.map +1 -1
- package/dist/src/utils/api/dtos/finalizeTransferResponse.js.map +1 -1
- package/dist/src/utils/api/dtos/getCompanyResponse.js.map +1 -1
- package/dist/src/utils/api/dtos/getCompressedFileMetadataResponse.js.map +1 -1
- package/dist/src/utils/api/dtos/getInboxTransfersRequest.js.map +1 -1
- package/dist/src/utils/api/dtos/getInboxTransfersResponse.js.map +1 -1
- package/dist/src/utils/api/dtos/getRangehashResponse.js.map +1 -1
- package/dist/src/utils/api/dtos/getTransferRequest.js.map +1 -1
- package/dist/src/utils/api/dtos/getTransferResponse.js.map +1 -1
- package/dist/src/utils/api/dtos/initializeTransferRequest.js.map +1 -1
- package/dist/src/utils/api/dtos/initializeTransferResponse.js.map +1 -1
- package/dist/src/utils/api/dtos/loginRequest.js.map +1 -1
- package/dist/src/utils/api/dtos/loginResponse.js.map +1 -1
- package/dist/src/utils/api/dtos/registerFileDownloadRequest.js.map +1 -1
- package/dist/src/utils/api/dtos/registerTransferDownloadRequest.js.map +1 -1
- package/dist/src/utils/api/dtos/resetTransferRequest.js.map +1 -1
- package/dist/src/utils/api/dtos/sendFileChunkRequest.js.map +1 -1
- package/dist/src/utils/api/dtos/transferCustomFieldDto.js.map +1 -1
- package/dist/src/utils/api/dtos/transferFileDto.js.map +1 -1
- package/dist/src/utils/api/fileServerClientFactory.js.map +1 -1
- package/dist/src/utils/api/node/gotWorkarounds.js.map +1 -1
- package/dist/src/utils/api/node/nodeApiClient.d.ts.map +1 -1
- package/dist/src/utils/api/node/nodeApiClient.js +4 -0
- package/dist/src/utils/api/node/nodeApiClient.js.map +1 -1
- package/dist/src/utils/api/node/nodeClientBase.js.map +1 -1
- package/dist/src/utils/api/node/nodeFileServerClientFactory.js.map +1 -1
- package/dist/src/utils/api/node/nodeFileserverClientBase.js.map +1 -1
- package/dist/src/utils/api/urlUtil.js.map +1 -1
- package/dist/src/utils/api/web/webApiClient.d.ts.map +1 -1
- package/dist/src/utils/api/web/webApiClient.js +4 -0
- package/dist/src/utils/api/web/webApiClient.js.map +1 -1
- package/dist/src/utils/api/web/webClientBase.js.map +1 -1
- package/dist/src/utils/api/web/webFileServerClientFactory.js.map +1 -1
- package/dist/src/utils/api/web/webFileserverClientBase.js.map +1 -1
- package/dist/src/utils/concurrencyController/concurrencyController.js.map +1 -1
- package/dist/src/utils/concurrencyController/concurrencyReleaser.js.map +1 -1
- package/dist/src/utils/concurrencyController/transferConcurrencyController.js.map +1 -1
- package/dist/src/utils/crypto/cryptographyProvider.js.map +1 -1
- package/dist/src/utils/crypto/node/nodeCryptographyProvider.js.map +1 -1
- package/dist/src/utils/crypto/web/webCryptographyProvider.js.map +1 -1
- package/dist/src/utils/dateAndTime/simpleDateFormatter.js.map +1 -1
- package/dist/src/utils/events/chunkProgressEvent.js.map +1 -1
- package/dist/src/utils/events/eventsEngine.js.map +1 -1
- package/dist/src/utils/events/node/nodeEventsEngine.js.map +1 -1
- package/dist/src/utils/events/web/webEventsEngine.js.map +1 -1
- package/dist/src/utils/fileSystem/chunkStreamProvider.js.map +1 -1
- package/dist/src/utils/fileSystem/chunkStreamProviderFactory.js.map +1 -1
- package/dist/src/utils/fileSystem/fileDetails.js.map +1 -1
- package/dist/src/utils/fileSystem/fileSystemService.js.map +1 -1
- package/dist/src/utils/fileSystem/fsError.js.map +1 -1
- package/dist/src/utils/fileSystem/node/nodeChunkStreamProvider.js.map +1 -1
- package/dist/src/utils/fileSystem/node/nodeChunkStreamProviderFactory.js.map +1 -1
- package/dist/src/utils/fileSystem/node/nodeFileDetails.js.map +1 -1
- package/dist/src/utils/fileSystem/node/nodeFileSystemService.js.map +1 -1
- package/dist/src/utils/fileSystem/parsedPath.js.map +1 -1
- package/dist/src/utils/fileSystem/web/chunkStreamProvider/webChunkStreamEncrypter.js.map +1 -1
- package/dist/src/utils/fileSystem/web/chunkStreamProvider/webChunkStreamProvider.js.map +1 -1
- package/dist/src/utils/fileSystem/web/webChunkStreamProviderFactory.js.map +1 -1
- package/dist/src/utils/fileSystem/web/webFileDetails.js.map +1 -1
- package/dist/src/utils/jsonParsing.js.map +1 -1
- package/dist/src/utils/logging/logEventPropertyNames.js.map +1 -1
- package/dist/src/utils/mergeAbortAndPauseSignals.js.map +1 -1
- package/dist/src/utils/networking/throttlingOptions.js.map +1 -1
- package/dist/src/utils/promiseAll.js.map +1 -1
- package/dist/src/utils/types/transferStatus.js.map +1 -1
- package/dist/src/utils/uint8ArrayUtils.js.map +1 -1
- package/package.json +79 -79
- package/readme.md +18 -18
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transferUpload.js","sourceRoot":"","sources":["../../../src/uploader/transferUpload.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,iBAAiB,CAAC;AAEpC,OAAO,QAAQ,MAAM,0BAA0B,CAAC;AAChD,OAAO,OAAO,MAAM,gCAAgC,CAAC;AACrD,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,yBAAyB,MAAM,uCAAuC,CAAC;AAC9E,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;AAuClG,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,OAAO,CAAuB;IAC9B,UAAU,CAAkB;IAC5B,aAAa,CAAuB;IAEpC,cAAc,CAAuB;IACrC,iBAAiB,CAA0B;IAC3C,oBAAoB,CAAU;IAE9B,YAAY,CAA0B;IACtC,YAAY,CAA0B;IACtC,0BAA0B,CAA0B;IAEpD,kBAAkB,CAA2B;IAC7C,kBAAkB,CAA2B;IAE7C,gBAAgB,CAAU;IAC1B,kBAAkB,CAAqB;IAEvC,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,SAA0B,EAAE,YAAkC;QACtU,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;QACvG,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAE9B,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,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAElC,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;YACnC,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxD,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,CAAC,IAAiC;QACpE,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;YAC9B,MAAM,IAAI,mBAAmB,CAAC,6CAA6C,CAAC,CAAC;QAEjF,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,mBAAmB,CAAC;QAErD,IAAI,CAAC,iBAAiB,GAAG;YACrB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;YACjD,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,cAAc,EAAE,IAAI,CAAC,QAAQ;SAChC,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,0BAA0B,GAAG,yBAAyB,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;YAEtG,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,CAAC,IAAI,CAAC,iBAAiB;gBACvB,MAAM,IAAI,CAAC,iCAAiC,EAAE,CAAC;YAEnD,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAEhC,MAAM,IAAI,CAAC,6BAA6B,EAAE,CAAC;YAE3C,IAAI,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,iBAAkB,CAAC,OAAQ,CAAC,aAAa;gBACxE,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAEpC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,kBAAmB,CAAC,CAAC;YAEvE,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAiB,CAAC;YAErD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAEhE,IAAI,UAAU,CAAC,WAAW;oBACtB,SAAS;gBAEb,MAAM,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAChF,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,iBAAiB,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;gBAEpG,KAAK,MAAM,KAAK,IAAI,cAAc,CAAC,iBAAiB,EAAE,EAAE,CAAC;oBACrD,4CAA4C;oBAC5C,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC;oBAElE,IAAI,IAAI,CAAC,UAAU,CAAC,oBAAoB,IAAI,CAAC;wBACzC,4CAA4C;wBAC5C,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE,IAAI,CAAC,0BAA0B,CAAC,CAAC;oBAEvF,IAAI,IAAI,CAAC,0BAA0B,EAAE,EAAE,CAAC;wBACpC,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,0BAA0B,EAAE;wBACjC,MAAM;gBACd,CAAC;gBAED,IAAI,IAAI,CAAC,0BAA0B,EAAE;oBACjC,MAAM;YACd,CAAC;YAED,MAAM,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;YAEzD,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YAEvB,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;YACtC,2CAA2C;YAC3C,4CAA4C;iBAC3C,IAAI,IAAI,CAAC,kBAAkB,KAAK,IAAI,CAAC,gBAAgB;gBACtD,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,CAAC,CAAC;YAC/F,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;YAC5D,6CAA6C;YAC7C,4CAA4C;YAC5C,cAAc;YACd,IAAI;iBACH,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,IAAI,CAAC,2BAA2B,EAAE,CAAC;YACnC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;QACrC,CAAC;IACL,CAAC;IAEO,wBAAwB;QAC5B,IAAI,CAAC,IAAI,CAAC,iBAAiB;YACvB,OAAO;QAEX,MAAM,SAAS,GAAwC;YACnD,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC,UAAU;YAC7C,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC,qBAAqB;YAC3D,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,cAAc;SAChD,CAAC;QAEF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,0BAA0B,EAAE,SAAS,CAAC,CAAC;IACvF,CAAC;IAEO,KAAK,CAAC,6BAA6B;QACvC,IAAI,CAAC;YACD,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU;gBACvB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;YAEzC,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC;YAEhD,IAAI,CAAC,OAAO;gBACR,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAEhD,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACjG,MAAM,UAAU,GAAG,IAAI,CAAC;YAExB,MAAM,SAAS,GAAG,IAAI,CAAC,wBAAwB,CAAC,+BAA+B,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,0BAA0B,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;YAElL,MAAM,SAAS,CAAC,OAAO,EAAE,CAAC;YAE1B,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;YAE1C,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAiB,CAAC,CAAC,CAAC;YAEjD,IAAI,CAAC,kBAAkB,GAAG,UAAU,CAAC,WAAW,CAAC;YACjD,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC,WAAW,IAAI,OAAO,CAAC,SAAS,CAAC;YAEpE,MAAM,SAAS,GAAsC,EAAE,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAAE,OAAO,EAAE,UAAU,CAAC,WAAW,EAAE,CAAC;YAC3H,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,wBAAwB,EAAE,SAAS,CAAC,CAAC;QACrF,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAE9B,MAAM,SAAS,GAAsC,EAAE,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAAE,KAAK,EAAE,KAAc,EAAE,CAAC;YACjH,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,wBAAwB,EAAE,SAAS,CAAC,CAAC;QACrF,CAAC;IACL,CAAC;IAEO,cAAc,CAAC,gBAAwB;QAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,gBAAgB,GAAG,EAAE,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IACtC,CAAC;IAEO,KAAK,CAAC,kBAAkB;QAC5B,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAkB,CAAC;QACjD,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAQ,CAAC;QAE1C,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAClD,MAAM,UAAU,GAAG,IAAI,CAAC;QAExB,MAAM,SAAS,GAAG,IAAI,CAAC,wBAAwB,CAAC,+BAA+B,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,0BAA0B,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QAElL,MAAM,SAAS,CAAC,OAAO,EAAE,CAAC;QAE1B,MAAM,gBAAgB,GAAqB,EAAE,UAAU,EAAE,gBAAgB,CAAC,UAAU,EAAE,WAAW,EAAE,gBAAgB,CAAC,WAAW,EAAE,CAAC;QAClI,MAAM,iBAAiB,GAAG,MAAM,SAAS,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAEtE,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAiB,CAAC,CAAC,CAAC;QAEjD,IAAI,CAAC,iBAAkB,CAAC,OAAQ,CAAC,aAAa,GAAG,iBAAiB,CAAC;IACvE,CAAC;IAEO,mBAAmB;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAmB,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACnC,CAAC;IAEO,KAAK,CAAC,6BAA6B,CAAC,IAAO,EAAE,kBAA0B,EAAE,gBAAwB,EAAE,gBAAqC;QAC5I,IAAI,kBAAkB,GAAG,CAAC,CAAC;QAE3B,IAAI,CAAC;YACD,IAAI,CAAC,cAAe,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,EAAE,kBAAkB,EAAE,gBAAgB,CAAC,CAAC;YAE/F,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,kBAAkB,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC;YACjH,CAAC,CAAC;YAEF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,mBAAmB,EAAE,oBAAoB,CAAC,CAAC;YAEvF,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAE,QAAoC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;YAE/G,IAAI,kBAAkB,KAAK,gBAAgB;gBACvC,IAAI,CAAC,cAAe,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;;gBAEnH,IAAI,CAAC,cAAe,CAAC,6BAA6B,CAAC,IAAI,CAAC,UAAU,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,IAAI,CAAC,YAAa,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;QACnL,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,kBAAkB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,IAAI,CAAC,YAAa,CAAC,MAAM,CAAC,CAAC;iBACxJ,CAAC;gBACF,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;gBACtD,IAAI,CAAC,cAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,EAAE,KAAc,CAAC,CAAC;YACpJ,CAAC;QACL,CAAC;gBACO,CAAC;YACL,gBAAgB,EAAE,CAAC;QACvB,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,IAAO,EAAE,mBAAwC,EAAE,oBAA6D;QACpI,IAAI,IAAI,CAAC,gBAAgB;YACrB,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,mBAAmB,EAAE,oBAAoB,CAAC,CAAC;QAEzF,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,mBAAmB,EAAE,oBAAoB,CAAC,CAAC;IACzF,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,IAAO,EAAE,mBAAwC,EAAE,oBAA6D;QAC5I,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAkB,CAAC;QACjD,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAQ,CAAC;QAE1C,MAAM,SAAS,GAAG,IAAI,CAAC,wBAAwB,CAAC,+BAA+B,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,yBAAyB,EAAE,IAAI,CAAC,0BAA0B,EAAE,CAAC,CAAC,CAAC;QAEzL,MAAM,gBAAgB,GAAqB;YACvC,WAAW,EAAE,IAAI,CAAC,iBAAkB,CAAC,OAAQ,CAAC,aAAc,CAAC,WAAW;YACxE,MAAM,EAAE,IAAI,CAAC,iBAAkB,CAAC,OAAQ,CAAC,aAAc,CAAC,MAAM;YAC9D,kBAAkB,EAAE,mBAAmB,CAAC,kBAAkB;YAC1D,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,6BAA6B,EAAE,IAAI,CAAC,6BAA6B;YACjE,QAAQ,EAAE,IAAI,CAAC,QAAQ;SAC1B,CAAC;QAEF,MAAM,SAAS,CAAC,OAAO,EAAE,CAAC;QAE1B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,SAAS,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,CAAC;QAEhF,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAiB,CAAC,CAAC,CAAC;QAEjD,MAAM,sBAAsB,GAAuB,EAAE,qBAAqB,EAAE,mBAAmB,CAAC,kBAAkB,EAAE,8BAA8B,EAAE,mBAAmB,CAAC,kBAAkB,EAAE,CAAC;QAC7L,oBAAoB,CAAC,sBAAsB,CAAC,CAAC;QAE7C,OAAO,MAAM,CAAC;IAClB,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,IAAO,EAAE,mBAAwC,EAAE,oBAA6D;QAC5I,MAAM,OAAO,GAAyB;YAClC,kBAAkB,EAAE,mBAAmB,CAAC,kBAAkB;YAC1D,kBAAkB,EAAE,mBAAmB,CAAC,kBAAkB;SAC7D,CAAC;QAEF,MAAM,gBAAgB,GAAG,IAAI,CAAC,wBAAwB,CAAC,+BAA+B,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,CAAC,CAAC;QAExR,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;IAC9E,CAAC;IAEO,0BAA0B;QAC9B,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,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;aACxC,CAAC;YAEF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,0BAA0B,CAAC,CAAC;YAEpG,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;gBAC1D,OAAO,EAAE,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC;aACrD,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,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,0BAA0B,CAAC,QAAoC;QACnE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,GAAG;YACvC,OAAO,QAAQ,CAAC,GAAG,CAAC;QAExB,OAAO;YACH,GAAG,QAAQ,CAAC,GAAG;YACf,SAAS,EAAE,CAAC;SACf,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,0BAA0B,CAAC,CAAC;QAClF,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,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK;aAClD,CAAC;YAEF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,0BAA0B,CAAC,CAAC;YAElG,IAAI,CAAC,oBAAoB,GAAG,QAAQ,CAAC,WAAW,CAAC;QACrD,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,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAEjG,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;IAeD,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,KAAK;YAChB,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;SACtC,CAAC;IACN,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,SAA0B,EAAE,YAAkC;QACvV,IAAI,CAAC;YACD,cAAc,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,CAAC;YAE1D,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAI,0BAA0B,EAAE,SAAS,EAAE,uBAAuB,EAAE,YAAY,EAAE,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;YAE/K,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,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 sleep from 'abortable-sleep';\r\n\r\nimport ApiError from '../utils/api/apiError.js';\r\nimport FsError from '../utils/fileSystem/fsError.js';\r\nimport 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 mergeAbortAndPauseSignals from '../utils/mergeAbortAndPauseSignals.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 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 InitializeTransferResponse from '../utils/api/dtos/initializeTransferResponse.js';\r\nimport type { InitializeTransferResponseUdpData } from '../utils/api/dtos/initializeTransferResponse.js';\r\nimport type TransferUploadModeChosenEventArgs from './eventArgs/transferUploadModeChosenEventArgs.js';\r\nimport type HandshakeRequest from './api/dtos/handshakeRequest.js';\r\nimport type ChunkStreamProvider from '../utils/fileSystem/chunkStreamProvider.js';\r\nimport type SendChunkRequest from './api/dtos/sendChunkRequest.js';\r\nimport type UploadOptimizer from './optimizer/uploadOptimizer.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, TransferUploadExportDataMetadata } from './export/transferUploadExportData.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 #config: TransferUploadConfig;\r\n #optimizer: UploadOptimizer;\r\n #cryptography: CryptographyProvider;\r\n\r\n #transferState?: TransferUploadState;\r\n #transferMetadata?: TransferUploadMetadata;\r\n #transferDownloadUrl?: string;\r\n\r\n #pauseSignal: PauseSignal | undefined;\r\n #abortSignal: AbortSignal | undefined;\r\n #mergedPauseAndAbortSignal: AbortSignal | undefined;\r\n\r\n pauseEventListener: (() => void) | undefined;\r\n abortEventListener: (() => void) | undefined;\r\n\r\n #isUdpUploadMode: boolean;\r\n #serverLatencyInMs: number | 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, optimizer: UploadOptimizer, cryptography: CryptographyProvider) {\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 this.#isUdpUploadMode = false;\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.#config = config;\r\n this.#optimizer = optimizer;\r\n this.#cryptography = cryptography;\r\n\r\n if (this.isUploadAppendInfo(this.#info))\r\n this.createTransferMetadataFromInfo(this.#info);\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(info: TransferUploadAppendInfo<T>) {\r\n if (!this.isUploadAppendInfo(info))\r\n throw new TransferUploadError(`Options are not TransferUploadAppendOptions`);\r\n\r\n this.#transferDownloadUrl = info.transferDownloadUrl;\r\n\r\n this.#transferMetadata = {\r\n transferId: info.transferId,\r\n transferKey: info.transferKey,\r\n transferFileServerUrl: info.transferFileServerUrl,\r\n transferRegion: info.transferRegion,\r\n encryptionData: 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.#mergedPauseAndAbortSignal = 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.#transferMetadata)\r\n await this.startApiTransferAndCreateMetadata();\r\n\r\n this.notifyMetadataDetermined();\r\n\r\n await this.pingServerAndChooseUploadMode();\r\n\r\n if (this.#isUdpUploadMode && !this.#transferMetadata!.udpData!.handshakeData)\r\n await this.serverUdpHandshake();\r\n\r\n this.#optimizer.start(this.#isUdpUploadMode, this.#serverLatencyInMs!);\r\n\r\n const ongoingChunkUploads = new Set<Promise<void>>();\r\n\r\n for (const file of this.files) {\r\n const fileStatus = this.#transferState.getFile(file.externalId);\r\n\r\n if (fileStatus.isCompleted)\r\n continue;\r\n\r\n const alreadySentChunks = this.#transferState.getChunksForFile(file.externalId);\r\n const chunksIterator = new ChunksIterator(alreadySentChunks, file.fileSizeInBytes, this.#optimizer);\r\n\r\n for (const chunk of chunksIterator.getChunksIterator()) {\r\n // eslint-disable-next-line no-await-in-loop\r\n const releaseSemaphore = await this.#optimizer.semaphoreAcquire();\r\n\r\n if (this.#optimizer.currentSleepTimeInMs >= 1)\r\n // eslint-disable-next-line no-await-in-loop\r\n await sleep(this.#optimizer.currentSleepTimeInMs, this.#mergedPauseAndAbortSignal);\r\n\r\n if (this.shouldStopSchedulingChunks()) {\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.shouldStopSchedulingChunks())\r\n break;\r\n }\r\n\r\n if (this.shouldStopSchedulingChunks())\r\n break;\r\n }\r\n\r\n await promiseAllSettled(Array.from(ongoingChunkUploads));\r\n\r\n this.#optimizer.stop();\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.isFailureAbortRequested())\r\n // this.#transferState.transferFailed();\r\n else if (this.uploadedBytesCount !== this.totalSizeInBytes)\r\n this.#transferState.transferFailed();\r\n else {\r\n await this.finalizeTransfer();\r\n this.#transferState.transferCompleted(this.#transferMetadata!, this.#transferDownloadUrl!);\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.isFailureAbortRequested()) {\r\n // this.#transferState.transferFailed();\r\n // return;\r\n // }\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 this.removePauseAndStopListeners();\r\n this.#optimizer.stop();\r\n this.#isRunMethodRunning = false;\r\n }\r\n }\r\n\r\n private notifyMetadataDetermined() {\r\n if (!this.#transferMetadata)\r\n return;\r\n\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 }\r\n\r\n private async pingServerAndChooseUploadMode(): Promise<void> {\r\n try {\r\n if (this.#config.turnOffUdp)\r\n throw new Error(`UDP is turned off`);\r\n\r\n const udpData = this.#transferMetadata?.udpData;\r\n\r\n if (!udpData)\r\n throw new Error(`No UDP data is available`);\r\n\r\n const requestTimeout = this.#config.forceUdp ? 3 * 1000 : this.getPingTimeout(udpData.threshold);\r\n const retryDelay = 1000;\r\n\r\n const udpClient = this.#fileServerClientFactory.createFileServerUdpUploadClient(udpData.ip, udpData.port, requestTimeout, this.#mergedPauseAndAbortSignal, undefined, retryDelay);\r\n\r\n await udpClient.connect();\r\n\r\n const pingResult = await udpClient.ping();\r\n\r\n udpClient.close().catch(() => { /* discard */ });\r\n\r\n this.#serverLatencyInMs = pingResult.latencyInMs;\r\n this.#isUdpUploadMode = pingResult.latencyInMs >= udpData.threshold;\r\n\r\n const eventArgs: TransferUploadModeChosenEventArgs = { isUdpMode: this.#isUdpUploadMode, latency: pingResult.latencyInMs };\r\n this.#eventsEngine.emit(TransferUploadEvent.TransferUploadModeChosen, eventArgs);\r\n }\r\n catch (error) {\r\n this.#isUdpUploadMode = false;\r\n\r\n const eventArgs: TransferUploadModeChosenEventArgs = { isUdpMode: this.#isUdpUploadMode, error: error as Error };\r\n this.#eventsEngine.emit(TransferUploadEvent.TransferUploadModeChosen, eventArgs);\r\n }\r\n }\r\n\r\n private getPingTimeout(udpPingThreshold: number) {\r\n const pingTimeout = Math.min(3 * 1000, udpPingThreshold * 20);\r\n return Math.max(500, pingTimeout);\r\n }\r\n\r\n private async serverUdpHandshake(): Promise<void> {\r\n const transferMetadata = this.#transferMetadata!;\r\n const udpData = transferMetadata.udpData!;\r\n\r\n const requestTimeout = this.getHandshakeTimeout();\r\n const retryDelay = 1000;\r\n\r\n const udpClient = this.#fileServerClientFactory.createFileServerUdpUploadClient(udpData.ip, udpData.port, requestTimeout, this.#mergedPauseAndAbortSignal, undefined, retryDelay);\r\n\r\n await udpClient.connect();\r\n\r\n const handshakeRequest: HandshakeRequest = { transferId: transferMetadata.transferId, transferKey: transferMetadata.transferKey };\r\n const handshakeResponse = await udpClient.handshake(handshakeRequest);\r\n\r\n udpClient.close().catch(() => { /* discard */ });\r\n\r\n this.#transferMetadata!.udpData!.handshakeData = handshakeResponse;\r\n }\r\n\r\n private getHandshakeTimeout() {\r\n const timeout = Math.min(this.#serverLatencyInMs! * 30, 30 * 1000);\r\n return Math.max(2000, timeout);\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 try {\r\n this.#transferState!.chunkUploadStarted(file.externalId, 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, chunkStartPosition, chunkSizeInBytes, eventArgs);\r\n };\r\n\r\n const response = await this.sendChunk(file, chunkStreamProvider, progressEventHandler);\r\n\r\n const latencyInMsIfUdp = this.#isUdpUploadMode ? (response as { latencyInMs: number }).latencyInMs : undefined;\r\n\r\n if (uploadedBytesCount === chunkSizeInBytes)\r\n this.#transferState!.chunkUploadCompleted(file.externalId, chunkStartPosition, chunkSizeInBytes, latencyInMsIfUdp);\r\n else\r\n this.#transferState!.chunkUploadCompletedPartially(file.externalId, chunkStartPosition, chunkSizeInBytes, uploadedBytesCount, this.#pauseSignal!.paused, latencyInMsIfUdp);\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, chunkStartPosition, chunkSizeInBytes, uploadedBytesCount, this.#pauseSignal!.paused);\r\n else {\r\n const failedReason = this.getChunkFailedReason(error);\r\n this.#transferState!.chunkUploadFailed(file.externalId, 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, chunkStreamProvider: ChunkStreamProvider, progressEventHandler: (eventArgs: ChunkProgressEvent) => void): Promise<{ latencyInMs: number } | void> {\r\n if (this.#isUdpUploadMode)\r\n return await this.sendChunkUsingUdp(file, chunkStreamProvider, progressEventHandler);\r\n\r\n return await this.sendChunkUsingTcp(file, chunkStreamProvider, progressEventHandler);\r\n }\r\n\r\n private async sendChunkUsingUdp(file: T, chunkStreamProvider: ChunkStreamProvider, progressEventHandler: (eventArgs: ChunkProgressEvent) => void): Promise<{ latencyInMs: number }> {\r\n const transferMetadata = this.#transferMetadata!;\r\n const udpData = transferMetadata.udpData!;\r\n\r\n const udpClient = this.#fileServerClientFactory.createFileServerUdpUploadClient(udpData.ip, udpData.port, this.#optimizer.currentRequestTimeoutInMs, this.#mergedPauseAndAbortSignal, 0);\r\n\r\n const sendChunkRequest: SendChunkRequest = {\r\n sessionGuid: this.#transferMetadata!.udpData!.handshakeData!.sessionGuid,\r\n aesKey: this.#transferMetadata!.udpData!.handshakeData!.aesKey,\r\n chunkStartPosition: chunkStreamProvider.chunkStartPosition,\r\n fileSizeInBytes: file.fileSizeInBytes,\r\n fileDestinationPathInTransfer: file.fileDestinationPathInTransfer,\r\n fileName: file.fileName,\r\n };\r\n\r\n await udpClient.connect();\r\n\r\n const result = await udpClient.sendChunk(sendChunkRequest, chunkStreamProvider);\r\n\r\n udpClient.close().catch(() => { /* discard */ });\r\n\r\n const chunkProgressEventArgs: ChunkProgressEvent = { transferredBytesTotal: chunkStreamProvider.chunkLengthInBytes, transferredBytesSinceLastEvent: chunkStreamProvider.chunkLengthInBytes };\r\n progressEventHandler(chunkProgressEventArgs);\r\n\r\n return result;\r\n }\r\n\r\n private async sendChunkUsingTcp(file: T, chunkStreamProvider: ChunkStreamProvider, progressEventHandler: (eventArgs: ChunkProgressEvent) => void): Promise<void> {\r\n const request: SendFileChunkRequest = {\r\n chunkLengthInBytes: chunkStreamProvider.chunkLengthInBytes,\r\n chunkStartPosition: chunkStreamProvider.chunkStartPosition,\r\n };\r\n\r\n const fileServerClient = this.#fileServerClientFactory.createFileServerTcpUploadClient(this.#transferMetadata!.transferFileServerUrl, this.#transferMetadata!.transferId, this.#transferMetadata!.transferKey, file.fileName, file.fileDestinationPathInTransfer, file.fileSizeInBytes);\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\r\n private shouldStopSchedulingChunks() {\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 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 };\r\n\r\n const response = await this.#apiClient.initializeTransfer(request, this.#mergedPauseAndAbortSignal);\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 udpData: this.getResponseOrForcedUdpData(response),\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 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 getResponseOrForcedUdpData(response: InitializeTransferResponse): InitializeTransferResponseUdpData | undefined {\r\n if (!this.#config.forceUdp || !response.udp)\r\n return response.udp;\r\n\r\n return {\r\n ...response.udp,\r\n threshold: 0,\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.#mergedPauseAndAbortSignal);\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: this.#isUdpUploadMode ? `udp` : `tcp`,\r\n };\r\n\r\n const response = await this.#apiClient.finalizeTransfer(request, this.#mergedPauseAndAbortSignal);\r\n\r\n this.#transferDownloadUrl = response.downloadUrl;\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);\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, handler: (event: FileUploadEventArgs) => void): void\r\n addEventListener(eventName: TransferUploadEvent.FileUploadFailed, handler: (event: FileUploadFailedEventArgs) => 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.TransferUploadModeChosen, handler: (event: TransferUploadModeChosenEventArgs) => 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.#info,\r\n state: this.#transferState.export(),\r\n };\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, optimizer: UploadOptimizer, cryptography: CryptographyProvider): TransferUpload<T> {\r\n try {\r\n TransferUpload.validateRecreateParams(transferExportData);\r\n\r\n const transfer = new TransferUpload<T>(chunkStreamProviderFactory, apiClient, fileServerClientFactory, eventsEngine, transferExportData.info, config, optimizer, cryptography);\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 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}\r\n"]}
|
|
1
|
+
{"version":3,"file":"transferUpload.js","sourceRoot":"","sources":["../../../src/uploader/transferUpload.ts"],"names":[],"mappings":"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","sourcesContent":["import sleep from 'abortable-sleep';\n\nimport ApiError from '../utils/api/apiError.js';\nimport FsError from '../utils/fileSystem/fsError.js';\nimport 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 mergeAbortAndPauseSignals from '../utils/mergeAbortAndPauseSignals.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 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 InitializeTransferResponse from '../utils/api/dtos/initializeTransferResponse.js';\nimport type { InitializeTransferResponseUdpData } from '../utils/api/dtos/initializeTransferResponse.js';\nimport type TransferUploadModeChosenEventArgs from './eventArgs/transferUploadModeChosenEventArgs.js';\nimport type HandshakeRequest from './api/dtos/handshakeRequest.js';\nimport type ChunkStreamProvider from '../utils/fileSystem/chunkStreamProvider.js';\nimport type SendChunkRequest from './api/dtos/sendChunkRequest.js';\nimport type UploadOptimizer from './optimizer/uploadOptimizer.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, 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 #config: TransferUploadConfig;\n #optimizer: UploadOptimizer;\n #cryptography: CryptographyProvider;\n\n #transferState?: TransferUploadState;\n #transferMetadata?: TransferUploadMetadata;\n #transferDownloadUrl?: string;\n #transferRecipientTrackingLinks?: TransferUploadCompletedEventArgs[`recipientTrackingLinks`];\n\n #pauseSignal: PauseSignal | undefined;\n #abortSignal: AbortSignal | undefined;\n #mergedPauseAndAbortSignal: AbortSignal | undefined;\n\n pauseEventListener: (() => void) | undefined;\n abortEventListener: (() => void) | undefined;\n\n #isUdpUploadMode: boolean;\n #serverLatencyInMs: number | 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, optimizer: UploadOptimizer, cryptography: CryptographyProvider) {\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 this.#isUdpUploadMode = false;\n\n this.#chunkStreamProviderFactory = chunkStreamProviderFactory;\n this.#apiClient = apiClient;\n this.#fileServerClientFactory = fileServerClientFactory;\n this.#eventsEngine = eventsEngine;\n this.#info = info;\n this.#config = config;\n this.#optimizer = optimizer;\n this.#cryptography = cryptography;\n\n if (this.isUploadAppendInfo(this.#info))\n this.createTransferMetadataFromInfo(this.#info);\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(info: TransferUploadAppendInfo<T>) {\n if (!this.isUploadAppendInfo(info))\n throw new TransferUploadError(`Options are not TransferUploadAppendOptions`);\n\n this.#transferDownloadUrl = info.transferDownloadUrl;\n\n this.#transferMetadata = {\n transferId: info.transferId,\n transferKey: info.transferKey,\n transferFileServerUrl: info.transferFileServerUrl,\n transferRegion: info.transferRegion,\n encryptionData: 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.#mergedPauseAndAbortSignal = 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.#transferMetadata)\n await this.startApiTransferAndCreateMetadata();\n\n this.notifyMetadataDetermined();\n\n await this.pingServerAndChooseUploadMode();\n\n if (this.#isUdpUploadMode && !this.#transferMetadata!.udpData!.handshakeData)\n await this.serverUdpHandshake();\n\n this.#optimizer.start(this.#isUdpUploadMode, this.#serverLatencyInMs!);\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 alreadySentChunks = this.#transferState.getChunksForFile(file.externalId);\n const chunksIterator = new ChunksIterator(alreadySentChunks, file.fileSizeInBytes, this.#optimizer);\n\n for (const chunk of chunksIterator.getChunksIterator()) {\n // eslint-disable-next-line no-await-in-loop\n const releaseSemaphore = await this.#optimizer.semaphoreAcquire();\n\n if (this.#optimizer.currentSleepTimeInMs >= 1)\n // eslint-disable-next-line no-await-in-loop\n await sleep(this.#optimizer.currentSleepTimeInMs, this.#mergedPauseAndAbortSignal);\n\n if (this.shouldStopSchedulingChunks()) {\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.shouldStopSchedulingChunks())\n break;\n }\n\n if (this.shouldStopSchedulingChunks())\n break;\n }\n\n await promiseAllSettled(Array.from(ongoingChunkUploads));\n\n this.#optimizer.stop();\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.isFailureAbortRequested())\n // this.#transferState.transferFailed();\n else if (this.uploadedBytesCount !== this.totalSizeInBytes)\n this.#transferState.transferFailed();\n else {\n await this.finalizeTransfer();\n this.#transferState.transferCompleted(this.#transferMetadata!, this.#transferDownloadUrl!, 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.isFailureAbortRequested()) {\n // this.#transferState.transferFailed();\n // return;\n // }\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 this.removePauseAndStopListeners();\n this.#optimizer.stop();\n this.#isRunMethodRunning = false;\n }\n }\n\n private notifyMetadataDetermined() {\n if (!this.#transferMetadata)\n return;\n\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 }\n\n private async pingServerAndChooseUploadMode(): Promise<void> {\n try {\n if (this.#config.turnOffUdp)\n throw new Error(`UDP is turned off`);\n\n const udpData = this.#transferMetadata?.udpData;\n\n if (!udpData)\n throw new Error(`No UDP data is available`);\n\n const requestTimeout = this.#config.forceUdp ? 3 * 1000 : this.getPingTimeout(udpData.threshold);\n const retryDelay = 1000;\n\n const udpClient = this.#fileServerClientFactory.createFileServerUdpUploadClient(udpData.ip, udpData.port, requestTimeout, this.#mergedPauseAndAbortSignal, undefined, retryDelay);\n\n await udpClient.connect();\n\n const pingResult = await udpClient.ping();\n\n udpClient.close().catch(() => { /* discard */ });\n\n this.#serverLatencyInMs = pingResult.latencyInMs;\n this.#isUdpUploadMode = pingResult.latencyInMs >= udpData.threshold;\n\n const eventArgs: TransferUploadModeChosenEventArgs = { isUdpMode: this.#isUdpUploadMode, latency: pingResult.latencyInMs };\n this.#eventsEngine.emit(TransferUploadEvent.TransferUploadModeChosen, eventArgs);\n }\n catch (error) {\n this.#isUdpUploadMode = false;\n\n const eventArgs: TransferUploadModeChosenEventArgs = { isUdpMode: this.#isUdpUploadMode, error: error as Error };\n this.#eventsEngine.emit(TransferUploadEvent.TransferUploadModeChosen, eventArgs);\n }\n }\n\n private getPingTimeout(udpPingThreshold: number) {\n const pingTimeout = Math.min(3 * 1000, udpPingThreshold * 20);\n return Math.max(500, pingTimeout);\n }\n\n private async serverUdpHandshake(): Promise<void> {\n const transferMetadata = this.#transferMetadata!;\n const udpData = transferMetadata.udpData!;\n\n const requestTimeout = this.getHandshakeTimeout();\n const retryDelay = 1000;\n\n const udpClient = this.#fileServerClientFactory.createFileServerUdpUploadClient(udpData.ip, udpData.port, requestTimeout, this.#mergedPauseAndAbortSignal, undefined, retryDelay);\n\n await udpClient.connect();\n\n const handshakeRequest: HandshakeRequest = { transferId: transferMetadata.transferId, transferKey: transferMetadata.transferKey };\n const handshakeResponse = await udpClient.handshake(handshakeRequest);\n\n udpClient.close().catch(() => { /* discard */ });\n\n this.#transferMetadata!.udpData!.handshakeData = handshakeResponse;\n }\n\n private getHandshakeTimeout() {\n const timeout = Math.min(this.#serverLatencyInMs! * 30, 30 * 1000);\n return Math.max(2000, timeout);\n }\n\n private async sendChunkAndKeepUpdatingState(file: T, chunkStartPosition: number, chunkSizeInBytes: number, releaseSemaphore: ConcurrencyReleaser): Promise<void> {\n let uploadedBytesCount = 0;\n\n try {\n this.#transferState!.chunkUploadStarted(file.externalId, 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, chunkStartPosition, chunkSizeInBytes, eventArgs);\n };\n\n const response = await this.sendChunk(file, chunkStreamProvider, progressEventHandler);\n\n const latencyInMsIfUdp = this.#isUdpUploadMode ? (response as { latencyInMs: number }).latencyInMs : undefined;\n\n if (uploadedBytesCount === chunkSizeInBytes)\n this.#transferState!.chunkUploadCompleted(file.externalId, chunkStartPosition, chunkSizeInBytes, latencyInMsIfUdp);\n else\n this.#transferState!.chunkUploadCompletedPartially(file.externalId, chunkStartPosition, chunkSizeInBytes, uploadedBytesCount, this.#pauseSignal!.paused, latencyInMsIfUdp);\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, chunkStartPosition, chunkSizeInBytes, uploadedBytesCount, this.#pauseSignal!.paused);\n else {\n const failedReason = this.getChunkFailedReason(error);\n this.#transferState!.chunkUploadFailed(file.externalId, chunkStartPosition, chunkSizeInBytes, uploadedBytesCount, failedReason, error as Error);\n }\n }\n finally {\n releaseSemaphore();\n }\n }\n\n private async sendChunk(file: T, chunkStreamProvider: ChunkStreamProvider, progressEventHandler: (eventArgs: ChunkProgressEvent) => void): Promise<{ latencyInMs: number } | void> {\n if (this.#isUdpUploadMode)\n return await this.sendChunkUsingUdp(file, chunkStreamProvider, progressEventHandler);\n\n return await this.sendChunkUsingTcp(file, chunkStreamProvider, progressEventHandler);\n }\n\n private async sendChunkUsingUdp(file: T, chunkStreamProvider: ChunkStreamProvider, progressEventHandler: (eventArgs: ChunkProgressEvent) => void): Promise<{ latencyInMs: number }> {\n const transferMetadata = this.#transferMetadata!;\n const udpData = transferMetadata.udpData!;\n\n const udpClient = this.#fileServerClientFactory.createFileServerUdpUploadClient(udpData.ip, udpData.port, this.#optimizer.currentRequestTimeoutInMs, this.#mergedPauseAndAbortSignal, 0);\n\n const sendChunkRequest: SendChunkRequest = {\n sessionGuid: this.#transferMetadata!.udpData!.handshakeData!.sessionGuid,\n aesKey: this.#transferMetadata!.udpData!.handshakeData!.aesKey,\n chunkStartPosition: chunkStreamProvider.chunkStartPosition,\n fileSizeInBytes: file.fileSizeInBytes,\n fileDestinationPathInTransfer: file.fileDestinationPathInTransfer,\n fileName: file.fileName,\n };\n\n await udpClient.connect();\n\n const result = await udpClient.sendChunk(sendChunkRequest, chunkStreamProvider);\n\n udpClient.close().catch(() => { /* discard */ });\n\n const chunkProgressEventArgs: ChunkProgressEvent = { transferredBytesTotal: chunkStreamProvider.chunkLengthInBytes, transferredBytesSinceLastEvent: chunkStreamProvider.chunkLengthInBytes };\n progressEventHandler(chunkProgressEventArgs);\n\n return result;\n }\n\n private async sendChunkUsingTcp(file: T, 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.createFileServerTcpUploadClient(this.#transferMetadata!.transferFileServerUrl, this.#transferMetadata!.transferId, this.#transferMetadata!.transferKey, file.fileName, file.fileDestinationPathInTransfer, file.fileSizeInBytes);\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\n private shouldStopSchedulingChunks() {\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 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 };\n\n const response = await this.#apiClient.initializeTransfer(request, this.#mergedPauseAndAbortSignal);\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 udpData: this.getResponseOrForcedUdpData(response),\n };\n }\n catch (error) {\n throw new TransferUploadError(`Error initializing transfer through the API`, { cause: error as Error });\n }\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 getResponseOrForcedUdpData(response: InitializeTransferResponse): InitializeTransferResponseUdpData | undefined {\n if (!this.#config.forceUdp || !response.udp)\n return response.udp;\n\n return {\n ...response.udp,\n threshold: 0,\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.#mergedPauseAndAbortSignal);\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: this.#isUdpUploadMode ? `udp` : `tcp`,\n };\n\n const response = await this.#apiClient.finalizeTransfer(request, this.#mergedPauseAndAbortSignal);\n\n this.#transferDownloadUrl = response.downloadUrl;\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);\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, handler: (event: FileUploadEventArgs) => void): void\n addEventListener(eventName: TransferUploadEvent.FileUploadFailed, handler: (event: FileUploadFailedEventArgs) => 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.TransferUploadModeChosen, handler: (event: TransferUploadModeChosenEventArgs) => 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.#info,\n state: this.#transferState.export(),\n };\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, optimizer: UploadOptimizer, cryptography: CryptographyProvider): TransferUpload<T> {\n try {\n TransferUpload.validateRecreateParams(transferExportData);\n\n const transfer = new TransferUpload<T>(chunkStreamProviderFactory, apiClient, fileServerClientFactory, eventsEngine, transferExportData.info, config, optimizer, cryptography);\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 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}"]}
|
|
@@ -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 {\
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transferUploadEvent.js","sourceRoot":"","sources":["../../../src/uploader/transferUploadEvent.ts"],"names":[],"mappings":"AAAA,IAAK,mBAuBJ;AAvBD,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,4EAAqD,CAAA;IACrD,8EAAuD,CAAA;IACvD,8DAAuC,CAAA;IACvC,kEAA2C,CAAA;IAC3C,4DAAqC,CAAA;IACrC,wEAAiD,CAAA;IACjD,8EAAuD,CAAA;IACvD,4EAAqD,CAAA;IACrD,8FAAuE,CAAA;IACvE,sEAA+C,CAAA;IAC/C,kEAA2C,CAAA;AAC/C,CAAC,EAvBI,mBAAmB,KAAnB,mBAAmB,QAuBvB;AAED,eAAe,mBAAmB,CAAC","sourcesContent":["enum TransferUploadEvent {\
|
|
1
|
+
{"version":3,"file":"transferUploadEvent.js","sourceRoot":"","sources":["../../../src/uploader/transferUploadEvent.ts"],"names":[],"mappings":"AAAA,IAAK,mBAuBJ;AAvBD,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,4EAAqD,CAAA;IACrD,8EAAuD,CAAA;IACvD,8DAAuC,CAAA;IACvC,kEAA2C,CAAA;IAC3C,4DAAqC,CAAA;IACrC,wEAAiD,CAAA;IACjD,8EAAuD,CAAA;IACvD,4EAAqD,CAAA;IACrD,8FAAuE,CAAA;IACvE,sEAA+C,CAAA;IAC/C,kEAA2C,CAAA;AAC/C,CAAC,EAvBI,mBAAmB,KAAnB,mBAAmB,QAuBvB;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 TransferUploadModeChosen = `TransferUploadModeChosen`,\n TransferMetadataDetermined = `TransferRegionDetermined`,\n FileUploadStarted = `FileUploadStarted`,\n FileUploadCompleted = `FileUploadCompleted`,\n FileUploadFailed = `FileUploadFailed`,\n FileChunkUploadStarted = `FileChunkUploadStarted`,\n FileChunkUploadProgressed = `FileChunkUploadProgressed`,\n FileChunkUploadCompleted = `FileChunkUploadCompleted`,\n FileChunkUploadCompletedPartially = `FileChunkUploadCompletedPartially`,\n FileChunkUploadFailed = `FileChunkUploadFailed`,\n RecreateDataUpdated = `RecreateDataUpdated`,\n}\n\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\";\
|
|
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\";\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 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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiClientBase.js","sourceRoot":"","sources":["../../../../src/utils/api/apiClientBase.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseResponse, isBaseResponse } from \"./dtos/baseResponse.js\";\
|
|
1
|
+
{"version":3,"file":"apiClientBase.js","sourceRoot":"","sources":["../../../../src/utils/api/apiClientBase.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseResponse, isBaseResponse } from \"./dtos/baseResponse.js\";\n\nimport type { InitializeTransferRequest, InitializeTransferRequestCustomField, InitializeTransferRequestCustomFieldRaw, InitializeTransferRequestRaw } from \"./dtos/initializeTransferRequest.js\";\nimport type { InitializeTransferResponseRaw, InitializeTransferResponseUdpData } from \"./dtos/initializeTransferResponse.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 throw new Error(response.errormessage ?? response.responsestatus);\n\n if (shouldDataExist && !response.data)\n throw new Error(`Data object in response doesn't exist`);\n }\n\n protected getUdpData(response: InitializeTransferResponseRaw): InitializeTransferResponseUdpData | undefined {\n // eslint-disable-next-line eqeqeq\n if (response.transferip == undefined || response.udpport == undefined || response.udpthreshold == undefined)\n return undefined;\n\n return {\n ip: response.transferip,\n port: response.udpport,\n threshold: response.udpthreshold,\n };\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 +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 {\
|
|
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 +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 {\
|
|
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 +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 {\
|
|
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 +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> {\
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cancelTransferRequest.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/cancelTransferRequest.ts"],"names":[],"mappings":"","sourcesContent":["interface CancelTransferRequest {\
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"finalizeTransferRequest.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/finalizeTransferRequest.ts"],"names":[],"mappings":"","sourcesContent":["interface FinalizeTransferRequest {\
|
|
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` | `udp`,\n}\n\nexport default FinalizeTransferRequest;"]}
|
|
@@ -1,5 +1,18 @@
|
|
|
1
|
+
export interface FinalizeTransferResponseRecipientTrackingLink {
|
|
2
|
+
email: string;
|
|
3
|
+
downloadLink: string;
|
|
4
|
+
}
|
|
5
|
+
export interface FinalizeTransferResponseRecipientTrackingLinkRaw {
|
|
6
|
+
email: string;
|
|
7
|
+
downloadlink: string;
|
|
8
|
+
}
|
|
9
|
+
export interface FinalizeTransferResponseRaw {
|
|
10
|
+
downloadurl: string;
|
|
11
|
+
recipients?: FinalizeTransferResponseRecipientTrackingLinkRaw[];
|
|
12
|
+
}
|
|
1
13
|
interface FinalizeTransferResponse {
|
|
2
14
|
downloadUrl: string;
|
|
15
|
+
recipientTrackingLinks?: FinalizeTransferResponseRecipientTrackingLink[];
|
|
3
16
|
}
|
|
4
17
|
export default FinalizeTransferResponse;
|
|
5
18
|
//# sourceMappingURL=finalizeTransferResponse.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"finalizeTransferResponse.d.ts","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/finalizeTransferResponse.ts"],"names":[],"mappings":"AAAA,UAAU,wBAAwB;IAC9B,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"finalizeTransferResponse.d.ts","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/finalizeTransferResponse.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,6CAA6C;IAC1D,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,gDAAgD;IAC7D,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,2BAA2B;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,gDAAgD,EAAE,CAAC;CACnE;AAED,UAAU,wBAAwB;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,sBAAsB,CAAC,EAAE,6CAA6C,EAAE,CAAC;CAC5E;AAED,eAAe,wBAAwB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"finalizeTransferResponse.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/finalizeTransferResponse.ts"],"names":[],"mappings":"","sourcesContent":["interface
|
|
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 recipients?: FinalizeTransferResponseRecipientTrackingLinkRaw[],\n}\n\ninterface FinalizeTransferResponse {\n downloadUrl: string,\n recipientTrackingLinks?: FinalizeTransferResponseRecipientTrackingLink[],\n}\n\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\";\
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getCompressedFileMetadataResponse.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/getCompressedFileMetadataResponse.ts"],"names":[],"mappings":"","sourcesContent":["interface GetCompressedFileMetadataResponse {\
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getInboxTransfersRequest.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/getInboxTransfersRequest.ts"],"names":[],"mappings":"","sourcesContent":["interface GetInboxTransfersRequest {\
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getInboxTransfersResponse.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/getInboxTransfersResponse.ts"],"names":[],"mappings":"","sourcesContent":["import type GetTransferResponse from \"./getTransferResponse.js\";\
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getRangehashResponse.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/getRangehashResponse.ts"],"names":[],"mappings":"","sourcesContent":["import type { BaseResponse } from \"./baseResponse.js\";\
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getTransferRequest.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/getTransferRequest.ts"],"names":[],"mappings":"","sourcesContent":["interface GetTransferRequest {\
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getTransferResponse.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/getTransferResponse.ts"],"names":[],"mappings":"","sourcesContent":["import type TransferCustomFieldDto from \"./transferCustomFieldDto.js\";\
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initializeTransferRequest.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/initializeTransferRequest.ts"],"names":[],"mappings":"","sourcesContent":["export type InitializeTransferRequest = {\
|
|
1
|
+
{"version":3,"file":"initializeTransferRequest.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/initializeTransferRequest.ts"],"names":[],"mappings":"","sourcesContent":["export type InitializeTransferRequest = {\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}\n\nexport type InitializeTransferRequestCustomField = {\n id: string,\n value: string | string[],\n}\n\nexport type InitializeTransferRequestRaw = Omit<InitializeTransferRequest, `customfields`> & {\n customfields?: InitializeTransferRequestCustomFieldRaw[],\n}\n\nexport type InitializeTransferRequestCustomFieldRaw = {\n id: string,\n value: string,\n}"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initializeTransferResponse.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/initializeTransferResponse.ts"],"names":[],"mappings":"","sourcesContent":["interface InitializeTransferResponse {\
|
|
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 udp?: InitializeTransferResponseUdpData,\n}\n\nexport type InitializeTransferResponseUdpData = {\n ip: string,\n port: number,\n threshold: number,\n}\n\nexport interface InitializeTransferResponseRaw {\n transferid: string,\n transferkey: string,\n transferurl: string,\n region?: string,\n transferip?: string,\n udpport?: number,\n udpthreshold?: number,\n}\n\nexport default InitializeTransferResponse;"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loginRequest.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/loginRequest.ts"],"names":[],"mappings":"","sourcesContent":["interface LoginRequest {\
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loginResponse.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/loginResponse.ts"],"names":[],"mappings":"","sourcesContent":["interface LoginResponse {\
|
|
1
|
+
{"version":3,"file":"loginResponse.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/loginResponse.ts"],"names":[],"mappings":"","sourcesContent":["interface LoginResponse {\n loginToken: string\n}\n\nexport default LoginResponse;"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registerFileDownloadRequest.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/registerFileDownloadRequest.ts"],"names":[],"mappings":"","sourcesContent":["import type RegisterTransferDownloadRequest from \"./registerTransferDownloadRequest.js\";\
|
|
1
|
+
{"version":3,"file":"registerFileDownloadRequest.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/registerFileDownloadRequest.ts"],"names":[],"mappings":"","sourcesContent":["import type RegisterTransferDownloadRequest from \"./registerTransferDownloadRequest.js\";\n\ninterface RegisterFileDownloadRequest extends RegisterTransferDownloadRequest {\n filename: string, // \"abc/uuuu.pdf\",\n filesize: number, // bytes e.g. 123 000 000\n}\n\nexport default RegisterFileDownloadRequest;"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registerTransferDownloadRequest.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/registerTransferDownloadRequest.ts"],"names":[],"mappings":"","sourcesContent":["interface RegisterTransferDownloadRequest {\
|
|
1
|
+
{"version":3,"file":"registerTransferDownloadRequest.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/registerTransferDownloadRequest.ts"],"names":[],"mappings":"","sourcesContent":["interface RegisterTransferDownloadRequest {\n transferid: string;\n ip?: string;\n browser?: string | null;\n track?: string;\n bps?: number;\n}\n\nexport default RegisterTransferDownloadRequest;"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resetTransferRequest.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/resetTransferRequest.ts"],"names":[],"mappings":"","sourcesContent":["interface ResetTransferRequest {\
|
|
1
|
+
{"version":3,"file":"resetTransferRequest.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/resetTransferRequest.ts"],"names":[],"mappings":"","sourcesContent":["interface ResetTransferRequest {\n transferid: string,\n}\n\nexport default ResetTransferRequest;"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sendFileChunkRequest.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/sendFileChunkRequest.ts"],"names":[],"mappings":"","sourcesContent":["interface SendFileChunkRequest {\
|
|
1
|
+
{"version":3,"file":"sendFileChunkRequest.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/sendFileChunkRequest.ts"],"names":[],"mappings":"","sourcesContent":["interface SendFileChunkRequest {\n chunkStartPosition: number,\n chunkLengthInBytes: number;\n}\n\nexport default SendFileChunkRequest;"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transferCustomFieldDto.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/transferCustomFieldDto.ts"],"names":[],"mappings":"","sourcesContent":["interface TransferCustomFieldDto {\
|
|
1
|
+
{"version":3,"file":"transferCustomFieldDto.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/transferCustomFieldDto.ts"],"names":[],"mappings":"","sourcesContent":["interface TransferCustomFieldDto {\n customfieldid: string;\n label: string;\n value: string;\n description: string;\n type: string;\n}\n\nexport default TransferCustomFieldDto;"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transferFileDto.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/transferFileDto.ts"],"names":[],"mappings":"","sourcesContent":["interface TransferFileDto {\
|
|
1
|
+
{"version":3,"file":"transferFileDto.js","sourceRoot":"","sources":["../../../../../src/utils/api/dtos/transferFileDto.ts"],"names":[],"mappings":"","sourcesContent":["interface TransferFileDto {\n fileid: string;\n filename: string;\n filesize: number;\n downloadurl: string;\n compressed: boolean;\n}\n\nexport default TransferFileDto;"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileServerClientFactory.js","sourceRoot":"","sources":["../../../../src/utils/api/fileServerClientFactory.ts"],"names":[],"mappings":"","sourcesContent":["import type DownloadOptions from \"../../downloader/downloadOptions.js\";\
|
|
1
|
+
{"version":3,"file":"fileServerClientFactory.js","sourceRoot":"","sources":["../../../../src/utils/api/fileServerClientFactory.ts"],"names":[],"mappings":"","sourcesContent":["import type DownloadOptions from \"../../downloader/downloadOptions.js\";\nimport type FileServerUploadClient from \"../../uploader/api/fileServerUploadClient.js\";\nimport type FileServerDownloadClient from \"../../downloader/api/fileServerDownloadClient.js\";\nimport type FileServerUdpClient from \"../../uploader/api/fileServerUdpClient.js\";\n\ninterface FileServerClientFactory {\n createFileServerUdpUploadClient(serverAddress: string, serverPort: number, requestTimeoutInMs: number, abortSignal?: AbortSignal, retryLimit?: number, retryDelayInMs?: number): FileServerUdpClient;\n createFileServerTcpUploadClient(baseUploadUrl: string, transferId: string, transferKey: string, fileName: string, fileDestinationPath: string, fileTotalSize: number): FileServerUploadClient;\n createFileServerTcpDownloadClient(downloadUrl: string, start: number | null, end: number | null, transferId: string, fileName: string, options: DownloadOptions): FileServerDownloadClient;\n}\n\nexport default FileServerClientFactory;"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gotWorkarounds.js","sourceRoot":"","sources":["../../../../../src/utils/api/node/gotWorkarounds.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,YAAY,EAAE,MAAM,KAAK,CAAC;AAEhD,wDAAwD;AACxD,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACrC,cAAc,EAAE,CAAC,WAAwB,EAAE,EAAE;QACzC,kDAAkD;QAClD,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;QAChC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAEhC,uEAAuE;QACvE,qCAAqC;QACrC,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,IAAI,QAAQ,IAAI,YAAY,CAAC,QAAQ,CAAC;YACjE,OAAO,CAAC,CAAC;QAEb,OAAO,WAAW,CAAC,aAAa,CAAC;IACrC,CAAC;CACJ,CAAC","sourcesContent":["import { RetryObject, isResponseOk } from \"got\";\
|
|
1
|
+
{"version":3,"file":"gotWorkarounds.js","sourceRoot":"","sources":["../../../../../src/utils/api/node/gotWorkarounds.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,YAAY,EAAE,MAAM,KAAK,CAAC;AAEhD,wDAAwD;AACxD,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACrC,cAAc,EAAE,CAAC,WAAwB,EAAE,EAAE;QACzC,kDAAkD;QAClD,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;QAChC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAEhC,uEAAuE;QACvE,qCAAqC;QACrC,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,IAAI,QAAQ,IAAI,YAAY,CAAC,QAAQ,CAAC;YACjE,OAAO,CAAC,CAAC;QAEb,OAAO,WAAW,CAAC,aAAa,CAAC;IACrC,CAAC;CACJ,CAAC","sourcesContent":["import { RetryObject, isResponseOk } from \"got\";\n\n// eslint-disable-next-line import/prefer-default-export\nexport const retryEconnresetWorkaround = {\n calculateDelay: (retryObject: RetryObject) => {\n // https://github.com/sindresorhus/got/issues/1489\n const error = retryObject.error;\n const response = error.response;\n\n // Abort the retry (by returning a delay of 0) if we have an ECONNRESET\n // error after a successful response.\n if (error.code === `ECONNRESET` && response && isResponseOk(response))\n return 0;\n\n return retryObject.computedValue;\n },\n};"]}
|