filemail-sdk 10.3.0 → 10.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (217) hide show
  1. package/LICENSE +10 -10
  2. package/dist/src/autoDownloader/autoDownloader.js.map +1 -1
  3. package/dist/src/autoDownloader/autoDownloaderDestroyer.js.map +1 -1
  4. package/dist/src/autoDownloader/autoDownloaderError.js.map +1 -1
  5. package/dist/src/autoDownloader/autoDownloaderEvent.js.map +1 -1
  6. package/dist/src/autoDownloader/autoDownloaderOptions.js.map +1 -1
  7. package/dist/src/autoDownloader/autoDownloaderStateSerializer.js.map +1 -1
  8. package/dist/src/autoDownloader/eventArgs/autoDownloadEventArgs.js.map +1 -1
  9. package/dist/src/autoDownloader/eventArgs/autoDownloadFailedEventArgs.js.map +1 -1
  10. package/dist/src/autoDownloader/eventArgs/autoDownloadProgressedEventArgs.js.map +1 -1
  11. package/dist/src/autoDownloader/eventArgs/autoDownloadStartedEventArgs.js.map +1 -1
  12. package/dist/src/autoDownloader/eventArgs/autoDownloadStartingFailedEventArgs.js.map +1 -1
  13. package/dist/src/autoDownloader/eventArgs/autoDownloadUnhealthyEventArgs.js.map +1 -1
  14. package/dist/src/autoDownloader/eventArgs/checkingForNewTransfersStartedEventArgs.js.map +1 -1
  15. package/dist/src/autoDownloader/eventArgs/newTransfersCheckCompletedEventArgs.js.map +1 -1
  16. package/dist/src/autoDownloader/factory/nodeAutoDownloaderFactory.js.map +1 -1
  17. package/dist/src/autoDownloader/factory/nodeAutoDownloaderFactoryOptions.js.map +1 -1
  18. package/dist/src/autoDownloader/newInboxTransfersRetriever/newInboxTransfer.js.map +1 -1
  19. package/dist/src/autoDownloader/newInboxTransfersRetriever/newInboxTransfersRetriever.js.map +1 -1
  20. package/dist/src/autoDownloader/node/nodeAutoDownloaderStateSerializer.js.map +1 -1
  21. package/dist/src/autoDownloader/node/nodeTransferDownloaderFactory.js.map +1 -1
  22. package/dist/src/autoDownloader/state/autoDownloaderRecoverableState.js.map +1 -1
  23. package/dist/src/autoDownloader/state/autoDownloaderState.js.map +1 -1
  24. package/dist/src/autoDownloader/state/autoDownloaderStateRecoverableTransfer.js.map +1 -1
  25. package/dist/src/autoDownloader/state/autoDownloaderStateRunningTransfer.js.map +1 -1
  26. package/dist/src/autoDownloader/state/autoDownloaderStateSnapshot.js.map +1 -1
  27. package/dist/src/autoDownloader/transferDownloaderFactory.js.map +1 -1
  28. package/dist/src/autoDownloader/transferHandler/autoDownloaderNewTransferHandler.js.map +1 -1
  29. package/dist/src/autoDownloader/transferHandler/autoDownloaderRecoverableTransferHandler.js.map +1 -1
  30. package/dist/src/autoDownloader/transferHandler/autoDownloaderTransferHandlerBase.js.map +1 -1
  31. package/dist/src/client/downloader/downloaderCore.js.map +1 -1
  32. package/dist/src/client/downloader/node/nodeTransferDownloader.js.map +1 -1
  33. package/dist/src/client/downloader/transferDownloader.js.map +1 -1
  34. package/dist/src/client/environmentVariables.js.map +1 -1
  35. package/dist/src/client/healthMonitor/events/eventArgs/healthMonitorHealthyEventArgs.js.map +1 -1
  36. package/dist/src/client/healthMonitor/events/eventArgs/healthMonitorUnhealthyEventArgs.js.map +1 -1
  37. package/dist/src/client/healthMonitor/events/transferHealthMonitorEvent.js.map +1 -1
  38. package/dist/src/client/healthMonitor/onlineChecker/nodeOnlineChecker.js.map +1 -1
  39. package/dist/src/client/healthMonitor/onlineChecker/onlineChecker.js.map +1 -1
  40. package/dist/src/client/healthMonitor/onlineChecker/webOnlineChecker.js.map +1 -1
  41. package/dist/src/client/healthMonitor/transferDownloaderHealthMonitor.js.map +1 -1
  42. package/dist/src/client/healthMonitor/transferHealthMonitorBase.js.map +1 -1
  43. package/dist/src/client/healthMonitor/transferUploaderHealthMonitor.js.map +1 -1
  44. package/dist/src/client/loggers/dummyLogger.js.map +1 -1
  45. package/dist/src/client/loggers/logger.js.map +1 -1
  46. package/dist/src/client/loggers/utils/logHealthyStatus.js.map +1 -1
  47. package/dist/src/client/node/nodeFileDetailsProvider.js.map +1 -1
  48. package/dist/src/client/uploader/node/nodeTransferUploader.js.map +1 -1
  49. package/dist/src/client/uploader/transferUploader.js.map +1 -1
  50. package/dist/src/client/uploader/transferUploaderBase.js.map +1 -1
  51. package/dist/src/client/uploader/transferUploaderConfig.js.map +1 -1
  52. package/dist/src/client/uploader/utils/uploaderUtils.js.map +1 -1
  53. package/dist/src/client/uploader/web/webTransferUploader.js.map +1 -1
  54. package/dist/src/downloader/api/fileServerDownloadClient.js.map +1 -1
  55. package/dist/src/downloader/api/node/nodeFileServerDownloadClient.js.map +1 -1
  56. package/dist/src/downloader/chunkDownloader.js.map +1 -1
  57. package/dist/src/downloader/downloadFolderResolver.js.map +1 -1
  58. package/dist/src/downloader/downloadLogger.js.map +1 -1
  59. package/dist/src/downloader/downloadOptions.js.map +1 -1
  60. package/dist/src/downloader/downloadStatus/downloadFileChunkProgress.js.map +1 -1
  61. package/dist/src/downloader/downloadStatus/downloadFileProgress.js.map +1 -1
  62. package/dist/src/downloader/downloadStatus/downloadFilePromise.js.map +1 -1
  63. package/dist/src/downloader/downloadStatus/downloadState.js.map +1 -1
  64. package/dist/src/downloader/downloadTracker.js.map +1 -1
  65. package/dist/src/downloader/dtos/downloadCommand.js.map +1 -1
  66. package/dist/src/downloader/dtos/downloadError.js.map +1 -1
  67. package/dist/src/downloader/dtos/downloadErrorCode.js.map +1 -1
  68. package/dist/src/downloader/dtos/downloadEvent.js.map +1 -1
  69. package/dist/src/downloader/dtos/downloadFileChunkInfo.js.map +1 -1
  70. package/dist/src/downloader/dtos/downloadFileInfo.js.map +1 -1
  71. package/dist/src/downloader/dtos/downloadFilesCommand.js.map +1 -1
  72. package/dist/src/downloader/dtos/downloadInfo.js.map +1 -1
  73. package/dist/src/downloader/dtos/downloadRegistrationMode.js.map +1 -1
  74. package/dist/src/downloader/dtos/downloadTrackerFileInfo.js.map +1 -1
  75. package/dist/src/downloader/dtos/downloadTrackerFileProgressInfo.js.map +1 -1
  76. package/dist/src/downloader/dtos/downloadTrackerProgressInfo.js.map +1 -1
  77. package/dist/src/downloader/dtos/downloadTrackingMetadata.js.map +1 -1
  78. package/dist/src/downloader/dtos/downloaderRestoredState.js.map +1 -1
  79. package/dist/src/downloader/eventArgs/chunkDownloadEventArgs.js.map +1 -1
  80. package/dist/src/downloader/eventArgs/chunkDownloadFailedEventArgs.js.map +1 -1
  81. package/dist/src/downloader/eventArgs/downloadCompletedEventArgs.js.map +1 -1
  82. package/dist/src/downloader/eventArgs/downloadEventArgs.js.map +1 -1
  83. package/dist/src/downloader/eventArgs/downloadMetadataDeterminedEventArgs.js.map +1 -1
  84. package/dist/src/downloader/eventArgs/downloadPauseEventArgs.js.map +1 -1
  85. package/dist/src/downloader/eventArgs/downloadTrackingFailedEventArgs.js.map +1 -1
  86. package/dist/src/downloader/eventArgs/fileDownloadEventArgs.js.map +1 -1
  87. package/dist/src/downloader/eventArgs/fileDownloadFailedEventArgs.js.map +1 -1
  88. package/dist/src/downloader/filesDownloader.js.map +1 -1
  89. package/dist/src/downloader/filesPreparer.js.map +1 -1
  90. package/dist/src/index.js.map +1 -1
  91. package/dist/src/index.node.js.map +1 -1
  92. package/dist/src/index.web.js.map +1 -1
  93. package/dist/src/uploader/api/fileServerUploadClient.js.map +1 -1
  94. package/dist/src/uploader/api/node/nodeFileServerUploadClient.js.map +1 -1
  95. package/dist/src/uploader/api/web/utils/axiosIdleTimeoutManager.js.map +1 -1
  96. package/dist/src/uploader/api/web/webFileServerUploadClient.js.map +1 -1
  97. package/dist/src/uploader/chunkStreamProviderFactory/nodeFileDetailsUploaderChunkStreamProviderFactory.js.map +1 -1
  98. package/dist/src/uploader/chunkStreamProviderFactory/uploaderChunkStreamProviderFactory.js.map +1 -1
  99. package/dist/src/uploader/chunkStreamProviderFactory/webFileDetailsUploaderChunkStreamProviderFactory.js.map +1 -1
  100. package/dist/src/uploader/chunksIterator/chunksIterator.js.map +1 -1
  101. package/dist/src/uploader/eventArgs/fileAckFailedEventArgs.js.map +1 -1
  102. package/dist/src/uploader/eventArgs/fileChunkUploadCompletedEventArgs.js.map +1 -1
  103. package/dist/src/uploader/eventArgs/fileChunkUploadCompletedPartiallyEventArgs.js.map +1 -1
  104. package/dist/src/uploader/eventArgs/fileChunkUploadEventArgs.js.map +1 -1
  105. package/dist/src/uploader/eventArgs/fileChunkUploadFailedEventArgs.js.map +1 -1
  106. package/dist/src/uploader/eventArgs/fileChunkUploadProgressedEventArgs.js.map +1 -1
  107. package/dist/src/uploader/eventArgs/fileUploadEventArgs.js.map +1 -1
  108. package/dist/src/uploader/eventArgs/fileUploadFailedEventArgs.js.map +1 -1
  109. package/dist/src/uploader/eventArgs/filesBatchAckFailedEventArgs.js.map +1 -1
  110. package/dist/src/uploader/eventArgs/filesRegistrationBatchFailedEventArgs.js.map +1 -1
  111. package/dist/src/uploader/eventArgs/transferMetadataDeterminedEventArgs.js.map +1 -1
  112. package/dist/src/uploader/eventArgs/transferUploadCompletedEventArgs.js.map +1 -1
  113. package/dist/src/uploader/eventArgs/transferUploadProgressedEventArgs.js.map +1 -1
  114. package/dist/src/uploader/export/transferUploadExportData.js.map +1 -1
  115. package/dist/src/uploader/export/transferUploadExportState.js.map +1 -1
  116. package/dist/src/uploader/export/transferUploadMetadata.js.map +1 -1
  117. package/dist/src/uploader/options/transferUploadAppendInfo.js.map +1 -1
  118. package/dist/src/uploader/options/transferUploadConfig.js.map +1 -1
  119. package/dist/src/uploader/options/transferUploadInfo.d.ts +1 -0
  120. package/dist/src/uploader/options/transferUploadInfo.d.ts.map +1 -1
  121. package/dist/src/uploader/options/transferUploadInfo.js.map +1 -1
  122. package/dist/src/uploader/options/transferUploadInfoBase.js.map +1 -1
  123. package/dist/src/uploader/pauseController.js.map +1 -1
  124. package/dist/src/uploader/pendingFileAck.js.map +1 -1
  125. package/dist/src/uploader/registeredTransferFile.js.map +1 -1
  126. package/dist/src/uploader/state/continuousChunksCalculator.js.map +1 -1
  127. package/dist/src/uploader/state/readonlyTransferUploadStateFile.js.map +1 -1
  128. package/dist/src/uploader/state/readonlyTransferUploadStateFiles.js.map +1 -1
  129. package/dist/src/uploader/state/transferUploadProgressCalculator.js.map +1 -1
  130. package/dist/src/uploader/state/transferUploadState.js.map +1 -1
  131. package/dist/src/uploader/state/transferUploadStateFile.js.map +1 -1
  132. package/dist/src/uploader/state/transferUploadStateFiles.js.map +1 -1
  133. package/dist/src/uploader/transferFailureAbortReason.js.map +1 -1
  134. package/dist/src/uploader/transferFilesRegistrar.js.map +1 -1
  135. package/dist/src/uploader/transferUpload.d.ts.map +1 -1
  136. package/dist/src/uploader/transferUpload.js +1 -0
  137. package/dist/src/uploader/transferUpload.js.map +1 -1
  138. package/dist/src/uploader/transferUploadAcker.js.map +1 -1
  139. package/dist/src/uploader/transferUploadError.js.map +1 -1
  140. package/dist/src/uploader/transferUploadEvent.js.map +1 -1
  141. package/dist/src/utils/api/apiClient.js.map +1 -1
  142. package/dist/src/utils/api/apiClientBase.js.map +1 -1
  143. package/dist/src/utils/api/apiError.js.map +1 -1
  144. package/dist/src/utils/api/apiFilemail449Error.js.map +1 -1
  145. package/dist/src/utils/api/apiFilemailError.js.map +1 -1
  146. package/dist/src/utils/api/dtos/ackTransferFilesRequest.js.map +1 -1
  147. package/dist/src/utils/api/dtos/ackTransferFilesResponse.js.map +1 -1
  148. package/dist/src/utils/api/dtos/baseResponse.js.map +1 -1
  149. package/dist/src/utils/api/dtos/cancelTransferRequest.js.map +1 -1
  150. package/dist/src/utils/api/dtos/finalizeTransferRequest.js.map +1 -1
  151. package/dist/src/utils/api/dtos/finalizeTransferResponse.js.map +1 -1
  152. package/dist/src/utils/api/dtos/getCompanyResponse.js.map +1 -1
  153. package/dist/src/utils/api/dtos/getCompressedFileMetadataResponse.js.map +1 -1
  154. package/dist/src/utils/api/dtos/getInboxTransfersRequest.js.map +1 -1
  155. package/dist/src/utils/api/dtos/getInboxTransfersResponse.js.map +1 -1
  156. package/dist/src/utils/api/dtos/getRangehashResponse.js.map +1 -1
  157. package/dist/src/utils/api/dtos/getTransferRequest.js.map +1 -1
  158. package/dist/src/utils/api/dtos/getTransferResponse.js.map +1 -1
  159. package/dist/src/utils/api/dtos/initializeTransferRequest.d.ts +1 -0
  160. package/dist/src/utils/api/dtos/initializeTransferRequest.d.ts.map +1 -1
  161. package/dist/src/utils/api/dtos/initializeTransferRequest.js.map +1 -1
  162. package/dist/src/utils/api/dtos/initializeTransferResponse.js.map +1 -1
  163. package/dist/src/utils/api/dtos/loginRequest.js.map +1 -1
  164. package/dist/src/utils/api/dtos/loginResponse.js.map +1 -1
  165. package/dist/src/utils/api/dtos/registerFileDownloadRequest.js.map +1 -1
  166. package/dist/src/utils/api/dtos/registerTransferDownloadRequest.js.map +1 -1
  167. package/dist/src/utils/api/dtos/registerTransferFilesRequest.js.map +1 -1
  168. package/dist/src/utils/api/dtos/registerTransferFilesResponse.js.map +1 -1
  169. package/dist/src/utils/api/dtos/resetTransferRequest.js.map +1 -1
  170. package/dist/src/utils/api/dtos/sendFileChunkRequest.js.map +1 -1
  171. package/dist/src/utils/api/dtos/transferCustomFieldDto.js.map +1 -1
  172. package/dist/src/utils/api/dtos/transferFileDto.js.map +1 -1
  173. package/dist/src/utils/api/fileServerClientFactory.js.map +1 -1
  174. package/dist/src/utils/api/node/gotWorkarounds.js.map +1 -1
  175. package/dist/src/utils/api/node/nodeApiClient.js.map +1 -1
  176. package/dist/src/utils/api/node/nodeClientBase.js.map +1 -1
  177. package/dist/src/utils/api/node/nodeFileServerClientFactory.js.map +1 -1
  178. package/dist/src/utils/api/node/nodeFileserverClientBase.js.map +1 -1
  179. package/dist/src/utils/api/urlUtil.js.map +1 -1
  180. package/dist/src/utils/api/web/webApiClient.js.map +1 -1
  181. package/dist/src/utils/api/web/webClientBase.js.map +1 -1
  182. package/dist/src/utils/api/web/webFileServerClientFactory.js.map +1 -1
  183. package/dist/src/utils/api/web/webFileserverClientBase.js.map +1 -1
  184. package/dist/src/utils/concurrencyController/concurrencyController.js.map +1 -1
  185. package/dist/src/utils/concurrencyController/concurrencyReleaser.js.map +1 -1
  186. package/dist/src/utils/concurrencyController/transferConcurrencyController.js.map +1 -1
  187. package/dist/src/utils/crypto/cryptographyProvider.js.map +1 -1
  188. package/dist/src/utils/crypto/node/nodeCryptographyProvider.js.map +1 -1
  189. package/dist/src/utils/crypto/web/webCryptographyProvider.js.map +1 -1
  190. package/dist/src/utils/dateAndTime/simpleDateFormatter.js.map +1 -1
  191. package/dist/src/utils/events/chunkProgressEvent.js.map +1 -1
  192. package/dist/src/utils/events/eventsEngine.js.map +1 -1
  193. package/dist/src/utils/events/node/nodeEventsEngine.js.map +1 -1
  194. package/dist/src/utils/events/web/webEventsEngine.js.map +1 -1
  195. package/dist/src/utils/fileSystem/chunkStreamProvider.js.map +1 -1
  196. package/dist/src/utils/fileSystem/chunkStreamProviderFactory.js.map +1 -1
  197. package/dist/src/utils/fileSystem/fileDetails.js.map +1 -1
  198. package/dist/src/utils/fileSystem/fileSystemService.js.map +1 -1
  199. package/dist/src/utils/fileSystem/fsError.js.map +1 -1
  200. package/dist/src/utils/fileSystem/node/nodeChunkStreamProvider.js.map +1 -1
  201. package/dist/src/utils/fileSystem/node/nodeChunkStreamProviderFactory.js.map +1 -1
  202. package/dist/src/utils/fileSystem/node/nodeFileDetails.js.map +1 -1
  203. package/dist/src/utils/fileSystem/node/nodeFileSystemService.js.map +1 -1
  204. package/dist/src/utils/fileSystem/parsedPath.js.map +1 -1
  205. package/dist/src/utils/fileSystem/web/chunkStreamProvider/webChunkStreamEncrypter.js.map +1 -1
  206. package/dist/src/utils/fileSystem/web/chunkStreamProvider/webChunkStreamProvider.js.map +1 -1
  207. package/dist/src/utils/fileSystem/web/webChunkStreamProviderFactory.js.map +1 -1
  208. package/dist/src/utils/fileSystem/web/webFileDetails.js.map +1 -1
  209. package/dist/src/utils/jsonParsing.js.map +1 -1
  210. package/dist/src/utils/logging/logEventPropertyNames.js.map +1 -1
  211. package/dist/src/utils/mergeAbortAndPauseSignals.js.map +1 -1
  212. package/dist/src/utils/networking/throttlingOptions.js.map +1 -1
  213. package/dist/src/utils/promiseAll.js.map +1 -1
  214. package/dist/src/utils/types/transferStatus.js.map +1 -1
  215. package/dist/src/utils/uint8ArrayUtils.js.map +1 -1
  216. package/package.json +79 -78
  217. package/readme.md +27 -19
@@ -1 +1 @@
1
- {"version":3,"file":"fileChunkUploadCompletedPartiallyEventArgs.js","sourceRoot":"","sources":["../../../../src/uploader/eventArgs/fileChunkUploadCompletedPartiallyEventArgs.ts"],"names":[],"mappings":"","sourcesContent":["import type FileChunkUploadCompletedEventArgs from \"./fileChunkUploadCompletedEventArgs.js\";\r\n\r\ninterface FileChunkUploadCompletedPartiallyEventArgs extends FileChunkUploadCompletedEventArgs {\r\n isPauseRequested: boolean,\r\n uploadedBytesCount: number,\r\n}\r\n\r\nexport default FileChunkUploadCompletedPartiallyEventArgs;"]}
1
+ {"version":3,"file":"fileChunkUploadCompletedPartiallyEventArgs.js","sourceRoot":"","sources":["../../../../src/uploader/eventArgs/fileChunkUploadCompletedPartiallyEventArgs.ts"],"names":[],"mappings":"","sourcesContent":["import type FileChunkUploadCompletedEventArgs from \"./fileChunkUploadCompletedEventArgs.js\";\n\ninterface FileChunkUploadCompletedPartiallyEventArgs extends FileChunkUploadCompletedEventArgs {\n isPauseRequested: boolean,\n uploadedBytesCount: number,\n}\n\nexport default FileChunkUploadCompletedPartiallyEventArgs;"]}
@@ -1 +1 @@
1
- {"version":3,"file":"fileChunkUploadEventArgs.js","sourceRoot":"","sources":["../../../../src/uploader/eventArgs/fileChunkUploadEventArgs.ts"],"names":[],"mappings":"","sourcesContent":["import type ReadonlyTransferUploadStateFile from \"../state/readonlyTransferUploadStateFile.js\";\r\n\r\ninterface FileChunkUploadEventArgs {\r\n fileStatus: ReadonlyTransferUploadStateFile,\r\n uploadItemId: string | undefined,\r\n chunkStartPosition: number,\r\n chunkSizeInBytes: number,\r\n}\r\n\r\nexport default FileChunkUploadEventArgs;"]}
1
+ {"version":3,"file":"fileChunkUploadEventArgs.js","sourceRoot":"","sources":["../../../../src/uploader/eventArgs/fileChunkUploadEventArgs.ts"],"names":[],"mappings":"","sourcesContent":["import type ReadonlyTransferUploadStateFile from \"../state/readonlyTransferUploadStateFile.js\";\n\ninterface FileChunkUploadEventArgs {\n fileStatus: ReadonlyTransferUploadStateFile,\n uploadItemId: string | undefined,\n chunkStartPosition: number,\n chunkSizeInBytes: number,\n}\n\nexport default FileChunkUploadEventArgs;"]}
@@ -1 +1 @@
1
- {"version":3,"file":"fileChunkUploadFailedEventArgs.js","sourceRoot":"","sources":["../../../../src/uploader/eventArgs/fileChunkUploadFailedEventArgs.ts"],"names":[],"mappings":"","sourcesContent":["import type FileChunkUploadEventArgs from \"./fileChunkUploadEventArgs.js\";\r\n\r\ninterface FileChunkUploadFailedEventArgs extends FileChunkUploadEventArgs {\r\n reason: string,\r\n error: Error,\r\n}\r\n\r\nexport default FileChunkUploadFailedEventArgs;"]}
1
+ {"version":3,"file":"fileChunkUploadFailedEventArgs.js","sourceRoot":"","sources":["../../../../src/uploader/eventArgs/fileChunkUploadFailedEventArgs.ts"],"names":[],"mappings":"","sourcesContent":["import type FileChunkUploadEventArgs from \"./fileChunkUploadEventArgs.js\";\n\ninterface FileChunkUploadFailedEventArgs extends FileChunkUploadEventArgs {\n reason: string,\n error: Error,\n}\n\nexport default FileChunkUploadFailedEventArgs;"]}
@@ -1 +1 @@
1
- {"version":3,"file":"fileChunkUploadProgressedEventArgs.js","sourceRoot":"","sources":["../../../../src/uploader/eventArgs/fileChunkUploadProgressedEventArgs.ts"],"names":[],"mappings":"","sourcesContent":["import type ReadonlyTransferUploadStateFile from \"../state/readonlyTransferUploadStateFile.js\";\r\n\r\ninterface FileChunkUploadProgressedEventArgs {\r\n fileStatus: ReadonlyTransferUploadStateFile,\r\n uploadItemId: string | undefined,\r\n chunkStartPosition: number,\r\n chunkSizeInBytes: number,\r\n transferredBytesSinceLastEvent: number,\r\n}\r\n\r\nexport default FileChunkUploadProgressedEventArgs;"]}
1
+ {"version":3,"file":"fileChunkUploadProgressedEventArgs.js","sourceRoot":"","sources":["../../../../src/uploader/eventArgs/fileChunkUploadProgressedEventArgs.ts"],"names":[],"mappings":"","sourcesContent":["import type ReadonlyTransferUploadStateFile from \"../state/readonlyTransferUploadStateFile.js\";\n\ninterface FileChunkUploadProgressedEventArgs {\n fileStatus: ReadonlyTransferUploadStateFile,\n uploadItemId: string | undefined,\n chunkStartPosition: number,\n chunkSizeInBytes: number,\n transferredBytesSinceLastEvent: number,\n}\n\nexport default FileChunkUploadProgressedEventArgs;"]}
@@ -1 +1 @@
1
- {"version":3,"file":"fileUploadEventArgs.js","sourceRoot":"","sources":["../../../../src/uploader/eventArgs/fileUploadEventArgs.ts"],"names":[],"mappings":"","sourcesContent":["import type ReadonlyTransferUploadStateFile from \"../state/readonlyTransferUploadStateFile.js\";\r\n\r\ninterface FileUploadEventArgs {\r\n fileStatus: ReadonlyTransferUploadStateFile,\r\n uploadItemId: string | undefined,\r\n}\r\n\r\nexport default FileUploadEventArgs;"]}
1
+ {"version":3,"file":"fileUploadEventArgs.js","sourceRoot":"","sources":["../../../../src/uploader/eventArgs/fileUploadEventArgs.ts"],"names":[],"mappings":"","sourcesContent":["import type ReadonlyTransferUploadStateFile from \"../state/readonlyTransferUploadStateFile.js\";\n\ninterface FileUploadEventArgs {\n fileStatus: ReadonlyTransferUploadStateFile,\n uploadItemId: string | undefined,\n}\n\nexport default FileUploadEventArgs;"]}
@@ -1 +1 @@
1
- {"version":3,"file":"fileUploadFailedEventArgs.js","sourceRoot":"","sources":["../../../../src/uploader/eventArgs/fileUploadFailedEventArgs.ts"],"names":[],"mappings":"","sourcesContent":["import type FileUploadEventArgs from \"./fileUploadEventArgs.js\";\r\n\r\ninterface FileUploadFailedEventArgs extends FileUploadEventArgs {\r\n reason: string | null\r\n}\r\n\r\nexport default FileUploadFailedEventArgs;"]}
1
+ {"version":3,"file":"fileUploadFailedEventArgs.js","sourceRoot":"","sources":["../../../../src/uploader/eventArgs/fileUploadFailedEventArgs.ts"],"names":[],"mappings":"","sourcesContent":["import type FileUploadEventArgs from \"./fileUploadEventArgs.js\";\n\ninterface FileUploadFailedEventArgs extends FileUploadEventArgs {\n reason: string | null\n}\n\nexport default FileUploadFailedEventArgs;"]}
@@ -1 +1 @@
1
- {"version":3,"file":"filesBatchAckFailedEventArgs.js","sourceRoot":"","sources":["../../../../src/uploader/eventArgs/filesBatchAckFailedEventArgs.ts"],"names":[],"mappings":"","sourcesContent":["interface FilesBatchAckFailedEventArgs {\r\n reason: string,\r\n error: Error,\r\n}\r\n\r\nexport default FilesBatchAckFailedEventArgs;\r\n"]}
1
+ {"version":3,"file":"filesBatchAckFailedEventArgs.js","sourceRoot":"","sources":["../../../../src/uploader/eventArgs/filesBatchAckFailedEventArgs.ts"],"names":[],"mappings":"","sourcesContent":["interface FilesBatchAckFailedEventArgs {\n reason: string,\n error: Error,\n}\n\nexport default FilesBatchAckFailedEventArgs;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"filesRegistrationBatchFailedEventArgs.js","sourceRoot":"","sources":["../../../../src/uploader/eventArgs/filesRegistrationBatchFailedEventArgs.ts"],"names":[],"mappings":"","sourcesContent":["interface FilesRegistrationBatchFailedEventArgs {\r\n externalFileIds: readonly (string | number)[];\r\n error: Error;\r\n}\r\n\r\nexport default FilesRegistrationBatchFailedEventArgs;"]}
1
+ {"version":3,"file":"filesRegistrationBatchFailedEventArgs.js","sourceRoot":"","sources":["../../../../src/uploader/eventArgs/filesRegistrationBatchFailedEventArgs.ts"],"names":[],"mappings":"","sourcesContent":["interface FilesRegistrationBatchFailedEventArgs {\n externalFileIds: readonly (string | number)[];\n error: Error;\n}\n\nexport default FilesRegistrationBatchFailedEventArgs;"]}
@@ -1 +1 @@
1
- {"version":3,"file":"transferMetadataDeterminedEventArgs.js","sourceRoot":"","sources":["../../../../src/uploader/eventArgs/transferMetadataDeterminedEventArgs.ts"],"names":[],"mappings":"","sourcesContent":["interface TransferMetadataDeterminedEventArgs {\r\n transferId: string,\r\n fileServerUrl: string,\r\n region?: string,\r\n}\r\n\r\nexport default TransferMetadataDeterminedEventArgs;"]}
1
+ {"version":3,"file":"transferMetadataDeterminedEventArgs.js","sourceRoot":"","sources":["../../../../src/uploader/eventArgs/transferMetadataDeterminedEventArgs.ts"],"names":[],"mappings":"","sourcesContent":["interface TransferMetadataDeterminedEventArgs {\n transferId: string,\n fileServerUrl: string,\n region?: string,\n}\n\nexport default TransferMetadataDeterminedEventArgs;"]}
@@ -1 +1 @@
1
- {"version":3,"file":"transferUploadCompletedEventArgs.js","sourceRoot":"","sources":["../../../../src/uploader/eventArgs/transferUploadCompletedEventArgs.ts"],"names":[],"mappings":"","sourcesContent":["interface TransferUploadCompletedEventArgs {\r\n transferId: string,\r\n transferKey: string,\r\n transferDownloadUrl: string,\r\n confirmationUrl?: string,\r\n fileServerUrl: string,\r\n region?: string,\r\n recipientTrackingLinks?: TransferUploadCompletedRecipientTrackingLinkEventArgs[],\r\n}\r\n\r\nexport interface TransferUploadCompletedRecipientTrackingLinkEventArgs {\r\n email: string,\r\n downloadLink: string,\r\n}\r\n\r\nexport default TransferUploadCompletedEventArgs;"]}
1
+ {"version":3,"file":"transferUploadCompletedEventArgs.js","sourceRoot":"","sources":["../../../../src/uploader/eventArgs/transferUploadCompletedEventArgs.ts"],"names":[],"mappings":"","sourcesContent":["interface TransferUploadCompletedEventArgs {\n transferId: string,\n transferKey: string,\n transferDownloadUrl: string,\n confirmationUrl?: string,\n fileServerUrl: string,\n region?: string,\n recipientTrackingLinks?: TransferUploadCompletedRecipientTrackingLinkEventArgs[],\n}\n\nexport interface TransferUploadCompletedRecipientTrackingLinkEventArgs {\n email: string,\n downloadLink: string,\n}\n\nexport default TransferUploadCompletedEventArgs;"]}
@@ -1 +1 @@
1
- {"version":3,"file":"transferUploadProgressedEventArgs.js","sourceRoot":"","sources":["../../../../src/uploader/eventArgs/transferUploadProgressedEventArgs.ts"],"names":[],"mappings":"","sourcesContent":["interface TransferUploadProgressedEventArgs {\r\n uploadedBytesTotalCount: number;\r\n progressInPercentage: number;\r\n remainingSeconds: number;\r\n averageSpeedInBytesPerSecond: number;\r\n currentSpeedInBytesPerSecond: number;\r\n}\r\n\r\nexport default TransferUploadProgressedEventArgs;"]}
1
+ {"version":3,"file":"transferUploadProgressedEventArgs.js","sourceRoot":"","sources":["../../../../src/uploader/eventArgs/transferUploadProgressedEventArgs.ts"],"names":[],"mappings":"","sourcesContent":["interface TransferUploadProgressedEventArgs {\n uploadedBytesTotalCount: number;\n progressInPercentage: number;\n remainingSeconds: number;\n averageSpeedInBytesPerSecond: number;\n currentSpeedInBytesPerSecond: number;\n}\n\nexport default TransferUploadProgressedEventArgs;"]}
@@ -1 +1 @@
1
- {"version":3,"file":"transferUploadExportData.js","sourceRoot":"","sources":["../../../../src/uploader/export/transferUploadExportData.ts"],"names":[],"mappings":"","sourcesContent":["import type FileDetails from \"../../utils/fileSystem/fileDetails.js\";\r\nimport type { TransferUploadAppendInfo } from \"../options/transferUploadAppendInfo.js\";\r\nimport type TransferUploadInfo from \"../options/transferUploadInfo.js\";\r\nimport type RegisteredTransferFile from \"../registeredTransferFile.js\";\r\nimport type TransferUploadExportState from \"./transferUploadExportState.js\";\r\nimport type TransferUploadMetadata from \"./transferUploadMetadata.js\";\r\n\r\nexport interface TransferUploadExportData<T extends FileDetails> {\r\n transferMetadata?: TransferUploadExportDataMetadata,\r\n info: Readonly<TransferUploadInfo<T> | TransferUploadExportDataAppendInfo<T>>,\r\n state: TransferUploadExportState,\r\n registeredFiles?: (readonly [string | number, RegisteredTransferFile])[],\r\n}\r\n\r\n// The raw e2ee key and iv are never exported with the append info - the exported metadata carries them as hex.\r\nexport type TransferUploadExportDataAppendInfo<T> = Omit<TransferUploadAppendInfo<T>, `e2eeData`>;\r\n\r\nexport type TransferUploadExportDataMetadata = Readonly<Omit<TransferUploadMetadata, `encryptionData`> & {\r\n encryptionData?: {\r\n ivHex: string,\r\n keyHex: string,\r\n },\r\n}>;\r\n"]}
1
+ {"version":3,"file":"transferUploadExportData.js","sourceRoot":"","sources":["../../../../src/uploader/export/transferUploadExportData.ts"],"names":[],"mappings":"","sourcesContent":["import type FileDetails from \"../../utils/fileSystem/fileDetails.js\";\nimport type { TransferUploadAppendInfo } from \"../options/transferUploadAppendInfo.js\";\nimport type TransferUploadInfo from \"../options/transferUploadInfo.js\";\nimport type RegisteredTransferFile from \"../registeredTransferFile.js\";\nimport type TransferUploadExportState from \"./transferUploadExportState.js\";\nimport type TransferUploadMetadata from \"./transferUploadMetadata.js\";\n\nexport interface TransferUploadExportData<T extends FileDetails> {\n transferMetadata?: TransferUploadExportDataMetadata,\n info: Readonly<TransferUploadInfo<T> | TransferUploadExportDataAppendInfo<T>>,\n state: TransferUploadExportState,\n registeredFiles?: (readonly [string | number, RegisteredTransferFile])[],\n}\n\n// The raw e2ee key and iv are never exported with the append info - the exported metadata carries them as hex.\nexport type TransferUploadExportDataAppendInfo<T> = Omit<TransferUploadAppendInfo<T>, `e2eeData`>;\n\nexport type TransferUploadExportDataMetadata = Readonly<Omit<TransferUploadMetadata, `encryptionData`> & {\n encryptionData?: {\n ivHex: string,\n keyHex: string,\n },\n}>;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"transferUploadExportState.js","sourceRoot":"","sources":["../../../../src/uploader/export/transferUploadExportState.ts"],"names":[],"mappings":"","sourcesContent":["import type { ContinuousChunksCalculatorState } from \"../state/continuousChunksCalculator.js\";\r\n\r\ntype TransferUploadExportState = {\r\n continuousChunksCalculatorState: ContinuousChunksCalculatorState;\r\n completedFiles: (string | number)[];\r\n};\r\n\r\nexport default TransferUploadExportState;\r\n"]}
1
+ {"version":3,"file":"transferUploadExportState.js","sourceRoot":"","sources":["../../../../src/uploader/export/transferUploadExportState.ts"],"names":[],"mappings":"","sourcesContent":["import type { ContinuousChunksCalculatorState } from \"../state/continuousChunksCalculator.js\";\n\ntype TransferUploadExportState = {\n continuousChunksCalculatorState: ContinuousChunksCalculatorState;\n completedFiles: (string | number)[];\n};\n\nexport default TransferUploadExportState;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"transferUploadMetadata.js","sourceRoot":"","sources":["../../../../src/uploader/export/transferUploadMetadata.ts"],"names":[],"mappings":"","sourcesContent":["interface TransferUploadMetadata {\r\n transferId: string,\r\n transferKey: string,\r\n transferFileServerUrl: string,\r\n transferRegion?: string,\r\n encryptionData?: {\r\n iv: Uint8Array,\r\n key: Uint8Array,\r\n },\r\n}\r\n\r\nexport default TransferUploadMetadata;"]}
1
+ {"version":3,"file":"transferUploadMetadata.js","sourceRoot":"","sources":["../../../../src/uploader/export/transferUploadMetadata.ts"],"names":[],"mappings":"","sourcesContent":["interface TransferUploadMetadata {\n transferId: string,\n transferKey: string,\n transferFileServerUrl: string,\n transferRegion?: string,\n encryptionData?: {\n iv: Uint8Array,\n key: Uint8Array,\n },\n}\n\nexport default TransferUploadMetadata;"]}
@@ -1 +1 @@
1
- {"version":3,"file":"transferUploadAppendInfo.js","sourceRoot":"","sources":["../../../../src/uploader/options/transferUploadAppendInfo.ts"],"names":[],"mappings":"","sourcesContent":["import type TransferUploadInfoBase from \"./transferUploadInfoBase.js\";\r\n\r\ninterface TransferUploadAppendInfo<T> extends TransferUploadInfoBase<T> {\r\n transferId: string,\r\n transferKey: string,\r\n transferFileServerUrl: string,\r\n transferDownloadUrl: string,\r\n transferRegion?: string,\r\n e2eeData?: TransferUploadAppendInfoE2eeData,\r\n}\r\n\r\ninterface TransferUploadAppendInfoE2eeData {\r\n iv: Uint8Array,\r\n key: Uint8Array,\r\n}\r\n\r\nexport { TransferUploadAppendInfoE2eeData, TransferUploadAppendInfo };\r\n"]}
1
+ {"version":3,"file":"transferUploadAppendInfo.js","sourceRoot":"","sources":["../../../../src/uploader/options/transferUploadAppendInfo.ts"],"names":[],"mappings":"","sourcesContent":["import type TransferUploadInfoBase from \"./transferUploadInfoBase.js\";\n\ninterface TransferUploadAppendInfo<T> extends TransferUploadInfoBase<T> {\n transferId: string,\n transferKey: string,\n transferFileServerUrl: string,\n transferDownloadUrl: string,\n transferRegion?: string,\n e2eeData?: TransferUploadAppendInfoE2eeData,\n}\n\ninterface TransferUploadAppendInfoE2eeData {\n iv: Uint8Array,\n key: Uint8Array,\n}\n\nexport { TransferUploadAppendInfoE2eeData, TransferUploadAppendInfo };\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"transferUploadConfig.js","sourceRoot":"","sources":["../../../../src/uploader/options/transferUploadConfig.ts"],"names":[],"mappings":"","sourcesContent":["interface TransferUploadConfig {\r\n progressEventThrottlingInMs: number,\r\n currentRatesTimespanInMs: number,\r\n chunkSizeInBytes: number,\r\n}\r\n\r\nexport default TransferUploadConfig;\r\n"]}
1
+ {"version":3,"file":"transferUploadConfig.js","sourceRoot":"","sources":["../../../../src/uploader/options/transferUploadConfig.ts"],"names":[],"mappings":"","sourcesContent":["interface TransferUploadConfig {\n progressEventThrottlingInMs: number,\n currentRatesTimespanInMs: number,\n chunkSizeInBytes: number,\n}\n\nexport default TransferUploadConfig;\n"]}
@@ -1,5 +1,6 @@
1
1
  import type TransferUploadInfoBase from "./transferUploadInfoBase.js";
2
2
  interface TransferUploadInfo<T> extends TransferUploadInfoBase<T> {
3
+ dataRegion?: `auto` | `eu` | `us` | `no`;
3
4
  confirmation?: boolean;
4
5
  days?: number;
5
6
  from?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"transferUploadInfo.d.ts","sourceRoot":"","sources":["../../../../src/uploader/options/transferUploadInfo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,sBAAsB,MAAM,6BAA6B,CAAC;AAEtE,UAAU,kBAAkB,CAAC,CAAC,CAAE,SAAQ,sBAAsB,CAAC,CAAC,CAAC;IAC7D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,6BAA6B,EAAE,CAAC;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,6BAA6B;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC5B;AAED,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"transferUploadInfo.d.ts","sourceRoot":"","sources":["../../../../src/uploader/options/transferUploadInfo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,sBAAsB,MAAM,6BAA6B,CAAC;AAEtE,UAAU,kBAAkB,CAAC,CAAC,CAAE,SAAQ,sBAAsB,CAAC,CAAC,CAAC;IAC7D,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACzC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,6BAA6B,EAAE,CAAC;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,6BAA6B;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC5B;AAED,eAAe,kBAAkB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"transferUploadInfo.js","sourceRoot":"","sources":["../../../../src/uploader/options/transferUploadInfo.ts"],"names":[],"mappings":"","sourcesContent":["import type TransferUploadInfoBase from \"./transferUploadInfoBase.js\";\r\n\r\ninterface TransferUploadInfo<T> extends TransferUploadInfoBase<T> {\r\n confirmation?: boolean,\r\n days?: number,\r\n from?: string,\r\n to?: string[],\r\n message?: string,\r\n notify?: boolean,\r\n subject?: string,\r\n uploadPassword?: string,\r\n companyId?: string,\r\n incomingLoginToken?: string,\r\n incomingPageId?: string,\r\n fileRequestId?: string,\r\n fileRequestShareId?: string,\r\n customFields?: TransferUploadInfoCustomField[],\r\n e2eeKey?: string,\r\n}\r\n\r\nexport interface TransferUploadInfoCustomField {\r\n id: string,\r\n value: string | string[],\r\n}\r\n\r\nexport default TransferUploadInfo;"]}
1
+ {"version":3,"file":"transferUploadInfo.js","sourceRoot":"","sources":["../../../../src/uploader/options/transferUploadInfo.ts"],"names":[],"mappings":"","sourcesContent":["import type TransferUploadInfoBase from \"./transferUploadInfoBase.js\";\n\ninterface TransferUploadInfo<T> extends TransferUploadInfoBase<T> {\n dataRegion?: `auto` | `eu` | `us` | `no`,\n confirmation?: boolean,\n days?: number,\n from?: string,\n to?: string[],\n message?: string,\n notify?: boolean,\n subject?: string,\n uploadPassword?: string,\n companyId?: string,\n incomingLoginToken?: string,\n incomingPageId?: string,\n fileRequestId?: string,\n fileRequestShareId?: string,\n customFields?: TransferUploadInfoCustomField[],\n e2eeKey?: string,\n}\n\nexport interface TransferUploadInfoCustomField {\n id: string,\n value: string | string[],\n}\n\nexport default TransferUploadInfo;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"transferUploadInfoBase.js","sourceRoot":"","sources":["../../../../src/uploader/options/transferUploadInfoBase.ts"],"names":[],"mappings":"","sourcesContent":["interface TransferUploadInfoBase<T> {\r\n files: T[];\r\n isLegacyTransfer?: boolean;\r\n}\r\n\r\nexport default TransferUploadInfoBase;"]}
1
+ {"version":3,"file":"transferUploadInfoBase.js","sourceRoot":"","sources":["../../../../src/uploader/options/transferUploadInfoBase.ts"],"names":[],"mappings":"","sourcesContent":["interface TransferUploadInfoBase<T> {\n files: T[];\n isLegacyTransfer?: boolean;\n}\n\nexport default TransferUploadInfoBase;"]}
@@ -1 +1 @@
1
- {"version":3,"file":"pauseController.js","sourceRoot":"","sources":["../../../src/uploader/pauseController.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,MAAM,CAAC,OAAO,OAAO,eAAe;IAChC,OAAO,GAAG,IAAI,yBAAyB,EAAE,CAAC;IAE1C,KAAK;QACD,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,KAAK,EAAE,CAAC;IACjD,CAAC;IAED,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;CACJ;AAQD,MAAM,yBAAyB;IAClB,gBAAgB,GAAG,IAAI,eAAe,EAAE,CAAC;IAElD,IAAI,uBAAuB;QACvB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IACjC,CAAC;IAED,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC;IAChD,CAAC;IAED,gBAAgB,CAAC,UAAmB,EAAE,QAAoB;QACtD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACrE,CAAC;IAED,mBAAmB,CAAC,UAAmB,EAAE,QAAoB;QACzD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACxE,CAAC;CACJ","sourcesContent":["/* eslint-disable max-classes-per-file */\r\nexport default class PauseController {\r\n #signal = new PauseSignalImplementation();\r\n\r\n pause() {\r\n this.#signal.internalAbortController.abort();\r\n }\r\n\r\n get signal(): PauseSignal {\r\n return this.#signal;\r\n }\r\n}\r\n\r\nexport interface PauseSignal {\r\n paused: boolean,\r\n addEventListener(eventName: `pause`, listener: () => void): void;\r\n removeEventListener(_eventName: `pause`, listener: () => void): void;\r\n}\r\n\r\nclass PauseSignalImplementation {\r\n readonly #abortController = new AbortController();\r\n\r\n get internalAbortController(): AbortController {\r\n return this.#abortController;\r\n }\r\n\r\n get paused(): boolean {\r\n return this.#abortController.signal.aborted;\r\n }\r\n\r\n addEventListener(_eventName: `pause`, listener: () => void) {\r\n this.#abortController.signal.addEventListener(`abort`, listener);\r\n }\r\n\r\n removeEventListener(_eventName: `pause`, listener: () => void) {\r\n this.#abortController.signal.removeEventListener(`abort`, listener);\r\n }\r\n}"]}
1
+ {"version":3,"file":"pauseController.js","sourceRoot":"","sources":["../../../src/uploader/pauseController.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,MAAM,CAAC,OAAO,OAAO,eAAe;IAChC,OAAO,GAAG,IAAI,yBAAyB,EAAE,CAAC;IAE1C,KAAK;QACD,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,KAAK,EAAE,CAAC;IACjD,CAAC;IAED,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;CACJ;AAQD,MAAM,yBAAyB;IAClB,gBAAgB,GAAG,IAAI,eAAe,EAAE,CAAC;IAElD,IAAI,uBAAuB;QACvB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IACjC,CAAC;IAED,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC;IAChD,CAAC;IAED,gBAAgB,CAAC,UAAmB,EAAE,QAAoB;QACtD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACrE,CAAC;IAED,mBAAmB,CAAC,UAAmB,EAAE,QAAoB;QACzD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACxE,CAAC;CACJ","sourcesContent":["/* eslint-disable max-classes-per-file */\nexport default class PauseController {\n #signal = new PauseSignalImplementation();\n\n pause() {\n this.#signal.internalAbortController.abort();\n }\n\n get signal(): PauseSignal {\n return this.#signal;\n }\n}\n\nexport interface PauseSignal {\n paused: boolean,\n addEventListener(eventName: `pause`, listener: () => void): void;\n removeEventListener(_eventName: `pause`, listener: () => void): void;\n}\n\nclass PauseSignalImplementation {\n readonly #abortController = new AbortController();\n\n get internalAbortController(): AbortController {\n return this.#abortController;\n }\n\n get paused(): boolean {\n return this.#abortController.signal.aborted;\n }\n\n addEventListener(_eventName: `pause`, listener: () => void) {\n this.#abortController.signal.addEventListener(`abort`, listener);\n }\n\n removeEventListener(_eventName: `pause`, listener: () => void) {\n this.#abortController.signal.removeEventListener(`abort`, listener);\n }\n}"]}
@@ -1 +1 @@
1
- {"version":3,"file":"pendingFileAck.js","sourceRoot":"","sources":["../../../src/uploader/pendingFileAck.ts"],"names":[],"mappings":"","sourcesContent":["interface PendingFileAck {\r\n externalFileId: string | number,\r\n uploadItemId: string,\r\n sizeInBytes: number,\r\n}\r\n\r\nexport default PendingFileAck;\r\n"]}
1
+ {"version":3,"file":"pendingFileAck.js","sourceRoot":"","sources":["../../../src/uploader/pendingFileAck.ts"],"names":[],"mappings":"","sourcesContent":["interface PendingFileAck {\n externalFileId: string | number,\n uploadItemId: string,\n sizeInBytes: number,\n}\n\nexport default PendingFileAck;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"registeredTransferFile.js","sourceRoot":"","sources":["../../../src/uploader/registeredTransferFile.ts"],"names":[],"mappings":"","sourcesContent":["interface RegisteredTransferFile {\r\n uploadItemId: string,\r\n fileId: string,\r\n}\r\n\r\nexport default RegisteredTransferFile;\r\n"]}
1
+ {"version":3,"file":"registeredTransferFile.js","sourceRoot":"","sources":["../../../src/uploader/registeredTransferFile.ts"],"names":[],"mappings":"","sourcesContent":["interface RegisteredTransferFile {\n uploadItemId: string,\n fileId: string,\n}\n\nexport default RegisteredTransferFile;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"continuousChunksCalculator.js","sourceRoot":"","sources":["../../../../src/uploader/state/continuousChunksCalculator.ts"],"names":[],"mappings":"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","sourcesContent":["export default class ContinuousChunksCalculator {\r\n #filesChunks: Map<string | number, ContinuousChunk[]> = new Map();\r\n\r\n export(): ContinuousChunksCalculatorState {\r\n const fileChunksEntries = Array.from(this.#filesChunks.entries());\r\n return fileChunksEntries.map(entry => this.copyFileChunksEntry(entry));\r\n }\r\n\r\n recover(exportedState: ContinuousChunksCalculatorState) {\r\n const copiedEntries = exportedState.map(entry => this.copyFileChunksEntry(entry));\r\n this.#filesChunks = new Map(copiedEntries);\r\n }\r\n\r\n private copyFileChunksEntry([fileId, chunks]: readonly [string | number, ContinuousChunk[]]): [string | number, ContinuousChunk[]] {\r\n const copiedChunks = chunks.map(chunk => ({ ...chunk }));\r\n return [fileId, copiedChunks];\r\n }\r\n\r\n getChunks(fileId: string | number): readonly Readonly<ContinuousChunk>[] {\r\n return this.#filesChunks.get(fileId) ?? [];\r\n }\r\n\r\n getChunksUploadedBytesCount(fileId: string | number): number {\r\n return this.getChunks(fileId).reduce((partialSum, chunk) => partialSum + chunk.sizeInBytes, 0);\r\n }\r\n\r\n addNewChunk(fileId: string | number, newChunk: ContinuousChunk) {\r\n if (newChunk.sizeInBytes === 0)\r\n return;\r\n\r\n if (!this.#filesChunks.has(fileId)) {\r\n this.initializeNewFileWithNewChunk(fileId, newChunk);\r\n return;\r\n }\r\n\r\n this.processNewChunk(fileId, newChunk);\r\n }\r\n\r\n private initializeNewFileWithNewChunk(fileId: string | number, newChunk: ContinuousChunk) {\r\n const initValue = [newChunk];\r\n\r\n this.#filesChunks.set(fileId, initValue);\r\n\r\n return initValue;\r\n }\r\n\r\n private processNewChunk(fileId: string | number, newChunk: ContinuousChunk) {\r\n const fileChunks = this.#filesChunks.get(fileId)!;\r\n\r\n for (let i = 0; i < fileChunks.length; i++) {\r\n const nextChunkIndex = i + 1;\r\n\r\n const thisChunk = fileChunks[i]!;\r\n const nextChunk = fileChunks.length > nextChunkIndex ? fileChunks[nextChunkIndex] : undefined;\r\n\r\n const thisChunksNextContinuousChunkStartPosition = thisChunk.startPosition + thisChunk.sizeInBytes;\r\n const newChunksNextContinuousChunkStartPosition = newChunk.startPosition + newChunk.sizeInBytes;\r\n\r\n const isThisChunkStartingAfterNewChunk = thisChunk.startPosition > newChunk.startPosition;\r\n\r\n const canExtendThisChunk = thisChunksNextContinuousChunkStartPosition === newChunk.startPosition;\r\n const canJoinWithThisChunk = thisChunk.startPosition === newChunksNextContinuousChunkStartPosition;\r\n const canJoinWithNextChunk = nextChunk && nextChunk.startPosition === newChunksNextContinuousChunkStartPosition;\r\n\r\n if (canExtendThisChunk && canJoinWithNextChunk) {\r\n this.joinTwoExistingChunksWithNewChunk(fileId, i, newChunk, nextChunkIndex);\r\n return;\r\n }\r\n\r\n if (canExtendThisChunk) {\r\n this.extendExistingChunkWithNewChunk(fileId, i, newChunk);\r\n return;\r\n }\r\n\r\n if (canJoinWithThisChunk) {\r\n this.joinNewChunkWithExistingChunk(fileId, newChunk, i);\r\n return;\r\n }\r\n\r\n if (isThisChunkStartingAfterNewChunk) {\r\n this.insertNewChunkIntoSequence(fileId, i, newChunk);\r\n return;\r\n }\r\n }\r\n\r\n fileChunks.push(newChunk);\r\n }\r\n\r\n private joinTwoExistingChunksWithNewChunk(fileId: string | number, leftChunkIndex: number, newChunk: ContinuousChunk, rightChunkIndex: number) {\r\n const fileChunks = this.#filesChunks.get(fileId)!;\r\n\r\n const leftChunk = fileChunks[leftChunkIndex]!;\r\n const rightChunk = fileChunks[rightChunkIndex]!;\r\n\r\n leftChunk.sizeInBytes += newChunk.sizeInBytes + rightChunk.sizeInBytes;\r\n\r\n fileChunks.splice(rightChunkIndex, 1);\r\n }\r\n\r\n private extendExistingChunkWithNewChunk(fileId: string | number, existingChunkIndex: number, newChunk: ContinuousChunk) {\r\n const fileChunks = this.#filesChunks.get(fileId)!;\r\n fileChunks[existingChunkIndex]!.sizeInBytes += newChunk.sizeInBytes;\r\n }\r\n\r\n private joinNewChunkWithExistingChunk(fileId: string | number, newChunk: ContinuousChunk, existingChunkIndex: number) {\r\n const fileChunks = this.#filesChunks.get(fileId)!;\r\n fileChunks[existingChunkIndex]!.startPosition = newChunk.startPosition;\r\n fileChunks[existingChunkIndex]!.sizeInBytes += newChunk.sizeInBytes;\r\n }\r\n\r\n private insertNewChunkIntoSequence(fileId: string | number, indexToInsertAt: number, newChunk: ContinuousChunk) {\r\n const fileChunks = this.#filesChunks.get(fileId)!;\r\n fileChunks.splice(indexToInsertAt, 0, newChunk);\r\n }\r\n}\r\n\r\nexport type ContinuousChunk = { startPosition: number, sizeInBytes: number };\r\nexport type ContinuousChunksCalculatorState = [string | number, ContinuousChunk[]][];"]}
1
+ {"version":3,"file":"continuousChunksCalculator.js","sourceRoot":"","sources":["../../../../src/uploader/state/continuousChunksCalculator.ts"],"names":[],"mappings":"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","sourcesContent":["export default class ContinuousChunksCalculator {\n #filesChunks: Map<string | number, ContinuousChunk[]> = new Map();\n\n export(): ContinuousChunksCalculatorState {\n const fileChunksEntries = Array.from(this.#filesChunks.entries());\n return fileChunksEntries.map(entry => this.copyFileChunksEntry(entry));\n }\n\n recover(exportedState: ContinuousChunksCalculatorState) {\n const copiedEntries = exportedState.map(entry => this.copyFileChunksEntry(entry));\n this.#filesChunks = new Map(copiedEntries);\n }\n\n private copyFileChunksEntry([fileId, chunks]: readonly [string | number, ContinuousChunk[]]): [string | number, ContinuousChunk[]] {\n const copiedChunks = chunks.map(chunk => ({ ...chunk }));\n return [fileId, copiedChunks];\n }\n\n getChunks(fileId: string | number): readonly Readonly<ContinuousChunk>[] {\n return this.#filesChunks.get(fileId) ?? [];\n }\n\n getChunksUploadedBytesCount(fileId: string | number): number {\n return this.getChunks(fileId).reduce((partialSum, chunk) => partialSum + chunk.sizeInBytes, 0);\n }\n\n addNewChunk(fileId: string | number, newChunk: ContinuousChunk) {\n if (newChunk.sizeInBytes === 0)\n return;\n\n if (!this.#filesChunks.has(fileId)) {\n this.initializeNewFileWithNewChunk(fileId, newChunk);\n return;\n }\n\n this.processNewChunk(fileId, newChunk);\n }\n\n private initializeNewFileWithNewChunk(fileId: string | number, newChunk: ContinuousChunk) {\n const initValue = [newChunk];\n\n this.#filesChunks.set(fileId, initValue);\n\n return initValue;\n }\n\n private processNewChunk(fileId: string | number, newChunk: ContinuousChunk) {\n const fileChunks = this.#filesChunks.get(fileId)!;\n\n for (let i = 0; i < fileChunks.length; i++) {\n const nextChunkIndex = i + 1;\n\n const thisChunk = fileChunks[i]!;\n const nextChunk = fileChunks.length > nextChunkIndex ? fileChunks[nextChunkIndex] : undefined;\n\n const thisChunksNextContinuousChunkStartPosition = thisChunk.startPosition + thisChunk.sizeInBytes;\n const newChunksNextContinuousChunkStartPosition = newChunk.startPosition + newChunk.sizeInBytes;\n\n const isThisChunkStartingAfterNewChunk = thisChunk.startPosition > newChunk.startPosition;\n\n const canExtendThisChunk = thisChunksNextContinuousChunkStartPosition === newChunk.startPosition;\n const canJoinWithThisChunk = thisChunk.startPosition === newChunksNextContinuousChunkStartPosition;\n const canJoinWithNextChunk = nextChunk && nextChunk.startPosition === newChunksNextContinuousChunkStartPosition;\n\n if (canExtendThisChunk && canJoinWithNextChunk) {\n this.joinTwoExistingChunksWithNewChunk(fileId, i, newChunk, nextChunkIndex);\n return;\n }\n\n if (canExtendThisChunk) {\n this.extendExistingChunkWithNewChunk(fileId, i, newChunk);\n return;\n }\n\n if (canJoinWithThisChunk) {\n this.joinNewChunkWithExistingChunk(fileId, newChunk, i);\n return;\n }\n\n if (isThisChunkStartingAfterNewChunk) {\n this.insertNewChunkIntoSequence(fileId, i, newChunk);\n return;\n }\n }\n\n fileChunks.push(newChunk);\n }\n\n private joinTwoExistingChunksWithNewChunk(fileId: string | number, leftChunkIndex: number, newChunk: ContinuousChunk, rightChunkIndex: number) {\n const fileChunks = this.#filesChunks.get(fileId)!;\n\n const leftChunk = fileChunks[leftChunkIndex]!;\n const rightChunk = fileChunks[rightChunkIndex]!;\n\n leftChunk.sizeInBytes += newChunk.sizeInBytes + rightChunk.sizeInBytes;\n\n fileChunks.splice(rightChunkIndex, 1);\n }\n\n private extendExistingChunkWithNewChunk(fileId: string | number, existingChunkIndex: number, newChunk: ContinuousChunk) {\n const fileChunks = this.#filesChunks.get(fileId)!;\n fileChunks[existingChunkIndex]!.sizeInBytes += newChunk.sizeInBytes;\n }\n\n private joinNewChunkWithExistingChunk(fileId: string | number, newChunk: ContinuousChunk, existingChunkIndex: number) {\n const fileChunks = this.#filesChunks.get(fileId)!;\n fileChunks[existingChunkIndex]!.startPosition = newChunk.startPosition;\n fileChunks[existingChunkIndex]!.sizeInBytes += newChunk.sizeInBytes;\n }\n\n private insertNewChunkIntoSequence(fileId: string | number, indexToInsertAt: number, newChunk: ContinuousChunk) {\n const fileChunks = this.#filesChunks.get(fileId)!;\n fileChunks.splice(indexToInsertAt, 0, newChunk);\n }\n}\n\nexport type ContinuousChunk = { startPosition: number, sizeInBytes: number };\nexport type ContinuousChunksCalculatorState = [string | number, ContinuousChunk[]][];"]}
@@ -1 +1 @@
1
- {"version":3,"file":"readonlyTransferUploadStateFile.js","sourceRoot":"","sources":["../../../../src/uploader/state/readonlyTransferUploadStateFile.ts"],"names":[],"mappings":"","sourcesContent":["import type TransferUploadStateFile from \"./transferUploadStateFile.js\";\r\n\r\ntype ReadonlyTransferUploadStateFile = Readonly<TransferUploadStateFile>;\r\n\r\nexport default ReadonlyTransferUploadStateFile;\r\n"]}
1
+ {"version":3,"file":"readonlyTransferUploadStateFile.js","sourceRoot":"","sources":["../../../../src/uploader/state/readonlyTransferUploadStateFile.ts"],"names":[],"mappings":"","sourcesContent":["import type TransferUploadStateFile from \"./transferUploadStateFile.js\";\n\ntype ReadonlyTransferUploadStateFile = Readonly<TransferUploadStateFile>;\n\nexport default ReadonlyTransferUploadStateFile;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"readonlyTransferUploadStateFiles.js","sourceRoot":"","sources":["../../../../src/uploader/state/readonlyTransferUploadStateFiles.ts"],"names":[],"mappings":"","sourcesContent":["import type ReadonlyTransferUploadStateFile from \"./readonlyTransferUploadStateFile.js\";\r\n\r\ntype ReadonlyTransferUploadStateFiles = {\r\n [externalId: string | number]: ReadonlyTransferUploadStateFile;\r\n}\r\n\r\nexport default ReadonlyTransferUploadStateFiles;"]}
1
+ {"version":3,"file":"readonlyTransferUploadStateFiles.js","sourceRoot":"","sources":["../../../../src/uploader/state/readonlyTransferUploadStateFiles.ts"],"names":[],"mappings":"","sourcesContent":["import type ReadonlyTransferUploadStateFile from \"./readonlyTransferUploadStateFile.js\";\n\ntype ReadonlyTransferUploadStateFiles = {\n [externalId: string | number]: ReadonlyTransferUploadStateFile;\n}\n\nexport default ReadonlyTransferUploadStateFiles;"]}
@@ -1 +1 @@
1
- {"version":3,"file":"transferUploadProgressCalculator.js","sourceRoot":"","sources":["../../../../src/uploader/state/transferUploadProgressCalculator.ts"],"names":[],"mappings":"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","sourcesContent":["class TransferUploadRatesCalculator {\r\n #currentRatesTimespanInMs: number;\r\n #totalSizeInBytes: number;\r\n #startTime: number;\r\n #uploadedBytesCountSinceStart: number;\r\n\r\n #previousCurrentSpeedInBytesPerSec?: number;\r\n #previousRemainingSeconds?: number;\r\n\r\n #progressEventsHistory: { time: number, uploadedBytesCount: number; }[];\r\n\r\n constructor(totalSizeInBytes: number, currentRatesTimespanInMs: number) {\r\n this.#startTime = new Date().getTime();\r\n this.#uploadedBytesCountSinceStart = 0;\r\n this.#progressEventsHistory = [];\r\n\r\n this.#currentRatesTimespanInMs = currentRatesTimespanInMs;\r\n this.#totalSizeInBytes = totalSizeInBytes;\r\n }\r\n\r\n addNewProgressEvent(uploadedBytesCount: number) {\r\n this.#uploadedBytesCountSinceStart += uploadedBytesCount;\r\n this.#progressEventsHistory.push({ time: new Date().getTime(), uploadedBytesCount });\r\n }\r\n\r\n getRates(uploadedBytesTotal: number): { remainingSeconds: number, currentSpeedInBytesPerSec: number, averageSpeedInBytesPerSec: number } {\r\n const currentTime = new Date().getTime();\r\n\r\n this.removeOldEventsButLeaveAtLeastFour(currentTime);\r\n\r\n const averageStats = this.calculateSpeedAndRemainingTime(currentTime, this.#startTime, this.#uploadedBytesCountSinceStart, uploadedBytesTotal);\r\n\r\n if (this.#progressEventsHistory.length === 0) {\r\n const remainingSeconds = this.smoothRemainingSecondsWithMemoization(averageStats.remainingSeconds);\r\n\r\n return {\r\n remainingSeconds,\r\n currentSpeedInBytesPerSec: 0,\r\n averageSpeedInBytesPerSec: averageStats.speedInBytesPerSec,\r\n };\r\n }\r\n\r\n const historyTransferredBytesSum = this.#progressEventsHistory.reduce((partialSum, event) => partialSum + event.uploadedBytesCount, 0);\r\n const currentStats = this.calculateSpeedAndRemainingTime(currentTime, this.#progressEventsHistory[0]!.time, historyTransferredBytesSum, uploadedBytesTotal);\r\n\r\n const smoothedCurrentSpeedInBytesPerSec = this.smoothCurrentSpeedInBytesPerSecWithMemoization(currentStats.speedInBytesPerSec);\r\n const remainingSeconds = this.smoothRemainingSecondsWithMemoization(currentStats.remainingSeconds);\r\n\r\n return {\r\n remainingSeconds,\r\n currentSpeedInBytesPerSec: smoothedCurrentSpeedInBytesPerSec,\r\n averageSpeedInBytesPerSec: averageStats.speedInBytesPerSec,\r\n };\r\n }\r\n\r\n private removeOldEventsButLeaveAtLeastFour(currentTime: number) {\r\n while (this.#progressEventsHistory.length > 4 && currentTime - this.#progressEventsHistory[0]!.time > this.#currentRatesTimespanInMs)\r\n this.#progressEventsHistory.shift();\r\n }\r\n\r\n private calculateSpeedAndRemainingTime(currentTime: number, sinceTime: number, transferredBytes: number, uploadedBytesTotal: number) {\r\n const elapsedInSeconds = (currentTime - sinceTime) / 1000;\r\n\r\n if (elapsedInSeconds === 0)\r\n return { remainingSeconds: Number.POSITIVE_INFINITY, speedInBytesPerSec: 0 };\r\n\r\n const speedInBytesPerSec = transferredBytes / elapsedInSeconds;\r\n\r\n if (speedInBytesPerSec === 0)\r\n return { remainingSeconds: Number.POSITIVE_INFINITY, speedInBytesPerSec: 0 };\r\n\r\n const remainingSeconds = (this.#totalSizeInBytes - uploadedBytesTotal) / speedInBytesPerSec;\r\n\r\n return { remainingSeconds, speedInBytesPerSec };\r\n }\r\n\r\n private smoothCurrentSpeedInBytesPerSecWithMemoization(currentSpeedInBytesPerSec: number): number {\r\n if (!this.#previousCurrentSpeedInBytesPerSec || !Number.isFinite(this.#previousCurrentSpeedInBytesPerSec))\r\n this.#previousCurrentSpeedInBytesPerSec = currentSpeedInBytesPerSec;\r\n\r\n const smoothedCurrentSpeedInBytesPerSec = currentSpeedInBytesPerSec * 0.7 + this.#previousCurrentSpeedInBytesPerSec * 0.3;\r\n\r\n this.#previousCurrentSpeedInBytesPerSec = smoothedCurrentSpeedInBytesPerSec;\r\n\r\n return smoothedCurrentSpeedInBytesPerSec;\r\n }\r\n\r\n private smoothRemainingSecondsWithMemoization(currentRemainingSeconds: number): number {\r\n if (!this.#previousRemainingSeconds || !Number.isFinite(this.#previousRemainingSeconds))\r\n this.#previousRemainingSeconds = currentRemainingSeconds;\r\n\r\n const computedRemainingSeconds = currentRemainingSeconds * 0.7 + this.#previousRemainingSeconds * 0.3;\r\n\r\n this.#previousRemainingSeconds = computedRemainingSeconds;\r\n\r\n return computedRemainingSeconds;\r\n }\r\n}\r\n\r\nexport default TransferUploadRatesCalculator;"]}
1
+ {"version":3,"file":"transferUploadProgressCalculator.js","sourceRoot":"","sources":["../../../../src/uploader/state/transferUploadProgressCalculator.ts"],"names":[],"mappings":"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","sourcesContent":["class TransferUploadRatesCalculator {\n #currentRatesTimespanInMs: number;\n #totalSizeInBytes: number;\n #startTime: number;\n #uploadedBytesCountSinceStart: number;\n\n #previousCurrentSpeedInBytesPerSec?: number;\n #previousRemainingSeconds?: number;\n\n #progressEventsHistory: { time: number, uploadedBytesCount: number; }[];\n\n constructor(totalSizeInBytes: number, currentRatesTimespanInMs: number) {\n this.#startTime = new Date().getTime();\n this.#uploadedBytesCountSinceStart = 0;\n this.#progressEventsHistory = [];\n\n this.#currentRatesTimespanInMs = currentRatesTimespanInMs;\n this.#totalSizeInBytes = totalSizeInBytes;\n }\n\n addNewProgressEvent(uploadedBytesCount: number) {\n this.#uploadedBytesCountSinceStart += uploadedBytesCount;\n this.#progressEventsHistory.push({ time: new Date().getTime(), uploadedBytesCount });\n }\n\n getRates(uploadedBytesTotal: number): { remainingSeconds: number, currentSpeedInBytesPerSec: number, averageSpeedInBytesPerSec: number } {\n const currentTime = new Date().getTime();\n\n this.removeOldEventsButLeaveAtLeastFour(currentTime);\n\n const averageStats = this.calculateSpeedAndRemainingTime(currentTime, this.#startTime, this.#uploadedBytesCountSinceStart, uploadedBytesTotal);\n\n if (this.#progressEventsHistory.length === 0) {\n const remainingSeconds = this.smoothRemainingSecondsWithMemoization(averageStats.remainingSeconds);\n\n return {\n remainingSeconds,\n currentSpeedInBytesPerSec: 0,\n averageSpeedInBytesPerSec: averageStats.speedInBytesPerSec,\n };\n }\n\n const historyTransferredBytesSum = this.#progressEventsHistory.reduce((partialSum, event) => partialSum + event.uploadedBytesCount, 0);\n const currentStats = this.calculateSpeedAndRemainingTime(currentTime, this.#progressEventsHistory[0]!.time, historyTransferredBytesSum, uploadedBytesTotal);\n\n const smoothedCurrentSpeedInBytesPerSec = this.smoothCurrentSpeedInBytesPerSecWithMemoization(currentStats.speedInBytesPerSec);\n const remainingSeconds = this.smoothRemainingSecondsWithMemoization(currentStats.remainingSeconds);\n\n return {\n remainingSeconds,\n currentSpeedInBytesPerSec: smoothedCurrentSpeedInBytesPerSec,\n averageSpeedInBytesPerSec: averageStats.speedInBytesPerSec,\n };\n }\n\n private removeOldEventsButLeaveAtLeastFour(currentTime: number) {\n while (this.#progressEventsHistory.length > 4 && currentTime - this.#progressEventsHistory[0]!.time > this.#currentRatesTimespanInMs)\n this.#progressEventsHistory.shift();\n }\n\n private calculateSpeedAndRemainingTime(currentTime: number, sinceTime: number, transferredBytes: number, uploadedBytesTotal: number) {\n const elapsedInSeconds = (currentTime - sinceTime) / 1000;\n\n if (elapsedInSeconds === 0)\n return { remainingSeconds: Number.POSITIVE_INFINITY, speedInBytesPerSec: 0 };\n\n const speedInBytesPerSec = transferredBytes / elapsedInSeconds;\n\n if (speedInBytesPerSec === 0)\n return { remainingSeconds: Number.POSITIVE_INFINITY, speedInBytesPerSec: 0 };\n\n const remainingSeconds = (this.#totalSizeInBytes - uploadedBytesTotal) / speedInBytesPerSec;\n\n return { remainingSeconds, speedInBytesPerSec };\n }\n\n private smoothCurrentSpeedInBytesPerSecWithMemoization(currentSpeedInBytesPerSec: number): number {\n if (!this.#previousCurrentSpeedInBytesPerSec || !Number.isFinite(this.#previousCurrentSpeedInBytesPerSec))\n this.#previousCurrentSpeedInBytesPerSec = currentSpeedInBytesPerSec;\n\n const smoothedCurrentSpeedInBytesPerSec = currentSpeedInBytesPerSec * 0.7 + this.#previousCurrentSpeedInBytesPerSec * 0.3;\n\n this.#previousCurrentSpeedInBytesPerSec = smoothedCurrentSpeedInBytesPerSec;\n\n return smoothedCurrentSpeedInBytesPerSec;\n }\n\n private smoothRemainingSecondsWithMemoization(currentRemainingSeconds: number): number {\n if (!this.#previousRemainingSeconds || !Number.isFinite(this.#previousRemainingSeconds))\n this.#previousRemainingSeconds = currentRemainingSeconds;\n\n const computedRemainingSeconds = currentRemainingSeconds * 0.7 + this.#previousRemainingSeconds * 0.3;\n\n this.#previousRemainingSeconds = computedRemainingSeconds;\n\n return computedRemainingSeconds;\n }\n}\n\nexport default TransferUploadRatesCalculator;"]}
@@ -1 +1 @@
1
- {"version":3,"file":"transferUploadState.js","sourceRoot":"","sources":["../../../../src/uploader/state/transferUploadState.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable no-param-reassign */\r\nimport throttle from 'lodash.throttle';\r\n\r\nimport TransferUploadStateFile from \"./transferUploadStateFile.js\";\r\nimport TransferUploadEvent from \"../transferUploadEvent.js\";\r\nimport TransferStatus from \"../../utils/types/transferStatus.js\";\r\nimport TransferUploadError from \"../transferUploadError.js\";\r\nimport TransferUploadRatesCalculator from \"./transferUploadProgressCalculator.js\";\r\nimport ContinuousChunksCalculator from './continuousChunksCalculator.js';\r\n\r\nimport type ChunkProgressEvent from \"../../utils/events/chunkProgressEvent.js\";\r\nimport type EventsEngine from \"../../utils/events/eventsEngine.js\";\r\nimport type FileDetails from \"../../utils/fileSystem/fileDetails.js\";\r\nimport type TransferUploadStateFiles from \"./transferUploadStateFiles.js\";\r\nimport type FileChunkUploadFailedEventArgs from \"../eventArgs/fileChunkUploadFailedEventArgs.js\";\r\nimport type FileAckFailedEventArgs from \"../eventArgs/fileAckFailedEventArgs.js\";\r\nimport type FileChunkUploadEventArgs from \"../eventArgs/fileChunkUploadEventArgs.js\";\r\nimport type FileUploadEventArgs from \"../eventArgs/fileUploadEventArgs.js\";\r\nimport type TransferUploadCompletedEventArgs from \"../eventArgs/transferUploadCompletedEventArgs.js\";\r\nimport type ReadonlyTransferUploadStateFile from \"./readonlyTransferUploadStateFile.js\";\r\nimport type ReadonlyTransferUploadStateFiles from \"./readonlyTransferUploadStateFiles.js\";\r\nimport type FileUploadFailedEventArgs from \"../eventArgs/fileUploadFailedEventArgs.js\";\r\nimport type TransferUploadExportState from \"../export/transferUploadExportState.js\";\r\nimport type TransferUploadProgressedEventArgs from \"../eventArgs/transferUploadProgressedEventArgs.js\";\r\nimport type TransferUploadMetadata from '../export/transferUploadMetadata.js';\r\nimport type FileChunkUploadProgressedEventArgs from '../eventArgs/fileChunkUploadProgressedEventArgs.js';\r\nimport type { ContinuousChunk, ContinuousChunksCalculatorState } from './continuousChunksCalculator.js';\r\nimport type FileChunkUploadCompletedPartiallyEventArgs from '../eventArgs/fileChunkUploadCompletedPartiallyEventArgs.js';\r\nimport type FileChunkUploadCompletedEventArgs from '../eventArgs/fileChunkUploadCompletedEventArgs.js';\r\n\r\nexport default class TransferUploadState {\r\n #status: TransferStatus = TransferStatus.Initialized;\r\n\r\n #completedFilesCount = 0;\r\n #failedFilesCount = 0;\r\n #files: TransferUploadStateFiles = {};\r\n #eventsEngine: EventsEngine;\r\n\r\n #ratesCalculator?: TransferUploadRatesCalculator;\r\n #continuousChunkCalculator: ContinuousChunksCalculator;\r\n\r\n readonly #currentRatesTimespanInMs: number;\r\n\r\n #uploadedBytesCount = 0;\r\n #failedBytesCount = 0;\r\n\r\n #totalBytesCount = 0;\r\n\r\n #getRatesAndNotifyUploadProgressedThrottled: ReturnType<typeof throttle<TransferUploadState[`getRatesAndNotifyUploadProgressed`]>>;\r\n\r\n get status(): TransferStatus {\r\n return this.#status;\r\n }\r\n\r\n get completedFilesCount(): number {\r\n return this.#completedFilesCount;\r\n }\r\n\r\n get failedFilesCount(): number {\r\n return this.#failedFilesCount;\r\n }\r\n\r\n get uploadedBytesCount(): number {\r\n return this.#uploadedBytesCount;\r\n }\r\n\r\n get failedBytesCount(): number {\r\n return this.#failedBytesCount;\r\n }\r\n\r\n get files(): ReadonlyTransferUploadStateFiles {\r\n return this.#files;\r\n }\r\n\r\n constructor(files: readonly FileDetails[], eventsEngine: EventsEngine, currentRatesTimespanInMs: number, progressEventThrottlingInMs: number)\r\n constructor(files: readonly FileDetails[], eventsEngine: EventsEngine, currentRatesTimespanInMs: number, progressEventThrottlingInMs: number, exportedState: TransferUploadExportState)\r\n constructor(files: readonly FileDetails[], eventsEngine: EventsEngine, currentRatesTimespanInMs: number, progressEventThrottlingInMs: number, exportedState?: TransferUploadExportState) {\r\n this.#eventsEngine = eventsEngine;\r\n this.#currentRatesTimespanInMs = currentRatesTimespanInMs;\r\n\r\n this.#getRatesAndNotifyUploadProgressedThrottled = throttle(this.getRatesAndNotifyUploadProgressed, progressEventThrottlingInMs);\r\n\r\n this.initializeTransferStatus(files);\r\n\r\n this.#continuousChunkCalculator = new ContinuousChunksCalculator();\r\n\r\n if (exportedState)\r\n this.recoverFromExportedState(exportedState);\r\n }\r\n\r\n private initializeTransferStatus(filesDetails: readonly FileDetails[]) {\r\n for (const file of filesDetails) {\r\n this.#files[file.externalId] = new TransferUploadStateFile(file.externalId, file.fileSizeInBytes, file.fileName);\r\n\r\n this.#totalBytesCount += file.fileSizeInBytes;\r\n }\r\n }\r\n\r\n getChunksForFile(externalId: string | number): readonly Readonly<ContinuousChunk>[] {\r\n return this.#continuousChunkCalculator.getChunks(externalId);\r\n }\r\n\r\n export(): TransferUploadExportState {\r\n return {\r\n continuousChunksCalculatorState: this.#continuousChunkCalculator.export(),\r\n completedFiles: Object.values(this.#files).filter(file => file.isCompleted).map(file => file.externalId),\r\n };\r\n }\r\n\r\n recover() {\r\n this.#status = TransferStatus.Initialized;\r\n this.#completedFilesCount = 0;\r\n this.#uploadedBytesCount = 0;\r\n this.#failedFilesCount = 0;\r\n this.#failedBytesCount = 0;\r\n\r\n for (const [, file] of Object.entries(this.#files)) {\r\n file.isBeingUploaded = false;\r\n file.runningChunksCount = 0;\r\n file.isFailed = false;\r\n file.failedReason = null;\r\n file.failedBytesCount = 0;\r\n\r\n if (file.isCompleted)\r\n this.#completedFilesCount += 1;\r\n\r\n // A file can have all its chunks recorded and still miss the live isUploadCompleted transition (e.g. a\r\n // full chunk recorded through the partially-completed path on pause), so the flag is recomputed from\r\n // the chunks the same way recoverFromExportedState does - such a file has to be acked on the next run.\r\n file.isUploadCompleted = this.hasAllChunksUploaded(file);\r\n file.uploadedBytesCount = this.#continuousChunkCalculator.getChunksUploadedBytesCount(file.externalId);\r\n\r\n this.#uploadedBytesCount += file.uploadedBytesCount;\r\n }\r\n }\r\n\r\n private hasAllChunksUploaded(file: TransferUploadStateFile): boolean {\r\n const fileChunks = this.#continuousChunkCalculator.getChunks(file.externalId);\r\n\r\n return fileChunks.length === 1 && fileChunks[0]!.startPosition === 0 && fileChunks[0]!.sizeInBytes === file.fileSizeInBytes;\r\n }\r\n\r\n private recoverFromExportedState(exportedState: TransferUploadExportState | ContinuousChunksCalculatorState) {\r\n // Remove this variable and the legacy recovery logic after all our clients are on desktop version >= 4.22\r\n const isLegacyModeTransfer = Array.isArray(exportedState);\r\n\r\n const continuousChunksState = isLegacyModeTransfer ? exportedState : exportedState.continuousChunksCalculatorState;\r\n const completedFiles = isLegacyModeTransfer ? undefined : new Set(exportedState.completedFiles);\r\n\r\n this.#continuousChunkCalculator.recover(continuousChunksState);\r\n\r\n for (const [, file] of Object.entries(this.#files)) {\r\n const isUploadCompleted = this.hasAllChunksUploaded(file);\r\n\r\n file.isUploadCompleted = isUploadCompleted;\r\n file.isCompleted = isLegacyModeTransfer ? isUploadCompleted : completedFiles!.has(file.externalId);\r\n file.uploadedBytesCount = this.#continuousChunkCalculator.getChunksUploadedBytesCount(file.externalId);\r\n\r\n if (file.isCompleted)\r\n this.#completedFilesCount += 1;\r\n\r\n this.#uploadedBytesCount += file.uploadedBytesCount;\r\n }\r\n }\r\n\r\n getFile(externalFileId: string | number): ReadonlyTransferUploadStateFile {\r\n return this.getFileInternal(externalFileId);\r\n }\r\n\r\n private getFileInternal(externalFileId: string | number): TransferUploadStateFile {\r\n const file = this.#files[externalFileId];\r\n\r\n if (!file)\r\n throw new TransferUploadError(`File with id = ${externalFileId} doesn't exist`);\r\n\r\n return file;\r\n }\r\n\r\n transferRun() {\r\n this.#status = TransferStatus.Running;\r\n\r\n this.#ratesCalculator = undefined;\r\n\r\n this.#eventsEngine.emit(TransferUploadEvent.TransferRun);\r\n }\r\n\r\n transferPauseRequested() {\r\n this.#status = TransferStatus.Pausing;\r\n\r\n this.#eventsEngine.emit(TransferUploadEvent.TransferPauseRequested);\r\n }\r\n\r\n transferPaused() {\r\n this.#status = TransferStatus.Paused;\r\n\r\n this.#getRatesAndNotifyUploadProgressedThrottled.flush();\r\n\r\n this.#eventsEngine.emit(TransferUploadEvent.TransferPaused);\r\n }\r\n\r\n transferAbortRequested() {\r\n this.#status = TransferStatus.Aborting;\r\n\r\n this.#eventsEngine.emit(TransferUploadEvent.TransferAbortRequested);\r\n }\r\n\r\n transferAborted() {\r\n this.#status = TransferStatus.Aborted;\r\n\r\n for (const [, file] of Object.entries(this.#files)) {\r\n if (file.isBeingUploaded) {\r\n file.isBeingUploaded = false;\r\n file.isFailed = true;\r\n\r\n if (!file.failedReason)\r\n file.failedReason = `Aborted`;\r\n }\r\n }\r\n\r\n this.#getRatesAndNotifyUploadProgressedThrottled.cancel();\r\n\r\n this.#eventsEngine.emit(TransferUploadEvent.TransferAborted);\r\n }\r\n\r\n transferCancelRequested() {\r\n this.#status = TransferStatus.Canceling;\r\n\r\n this.#eventsEngine.emit(TransferUploadEvent.TransferCancelRequested);\r\n }\r\n\r\n transferCanceled() {\r\n this.#status = TransferStatus.Canceled;\r\n\r\n this.#getRatesAndNotifyUploadProgressedThrottled.cancel();\r\n\r\n this.#eventsEngine.emit(TransferUploadEvent.TransferCanceled);\r\n }\r\n\r\n transferCompleted(transferMetadata: TransferUploadMetadata, transferDownloadUrl: string, confirmationUrl: string | undefined, recipientTrackingLinks?: TransferUploadCompletedEventArgs[`recipientTrackingLinks`]) {\r\n this.#status = TransferStatus.Completed;\r\n\r\n this.#getRatesAndNotifyUploadProgressedThrottled.flush();\r\n\r\n const eventArgs: TransferUploadCompletedEventArgs = {\r\n transferId: transferMetadata.transferId,\r\n transferKey: transferMetadata.transferKey,\r\n transferDownloadUrl,\r\n confirmationUrl,\r\n fileServerUrl: transferMetadata.transferFileServerUrl,\r\n region: transferMetadata.transferRegion,\r\n recipientTrackingLinks,\r\n };\r\n\r\n this.#eventsEngine.emit(TransferUploadEvent.TransferCompleted, eventArgs);\r\n }\r\n\r\n transferFailed() {\r\n this.#status = TransferStatus.Failed;\r\n\r\n this.#getRatesAndNotifyUploadProgressedThrottled.cancel();\r\n\r\n this.#eventsEngine.emit(TransferUploadEvent.TransferFailed);\r\n }\r\n\r\n fileUploadStarted(file: TransferUploadStateFile, uploadItemId: string | undefined) {\r\n file.isBeingUploaded = true;\r\n\r\n const eventArgs: FileUploadEventArgs = { fileStatus: file, uploadItemId };\r\n this.#eventsEngine.emit(TransferUploadEvent.FileUploadStarted, eventArgs);\r\n }\r\n\r\n fileUploadCompleted(file: TransferUploadStateFile, uploadItemId: string | undefined) {\r\n file.isBeingUploaded = false;\r\n file.isUploadCompleted = true;\r\n\r\n const eventArgs: FileUploadEventArgs = { fileStatus: file, uploadItemId };\r\n this.#eventsEngine.emit(TransferUploadEvent.FileUploadCompleted, eventArgs);\r\n }\r\n\r\n fileCompleted(externalFileId: string | number, uploadItemId: string | undefined) {\r\n const file = this.getFileInternal(externalFileId);\r\n\r\n file.isCompleted = true;\r\n\r\n this.#completedFilesCount += 1;\r\n\r\n this.#eventsEngine.emit(TransferUploadEvent.RecreateDataUpdated);\r\n\r\n const eventArgs: FileUploadEventArgs = { fileStatus: file, uploadItemId };\r\n this.#eventsEngine.emit(TransferUploadEvent.FileCompleted, eventArgs);\r\n }\r\n\r\n fileAckFailed(externalFileId: string | number, uploadItemId: string, reason: string, error: Error) {\r\n const file = this.getFileInternal(externalFileId);\r\n\r\n const eventArgs: FileAckFailedEventArgs = { fileStatus: file, uploadItemId, reason, error };\r\n this.#eventsEngine.emit(TransferUploadEvent.FileAckFailed, eventArgs);\r\n }\r\n\r\n fileUploadFailed(file: TransferUploadStateFile, uploadItemId: string | undefined) {\r\n file.isBeingUploaded = false;\r\n file.isFailed = true;\r\n\r\n this.#failedFilesCount += 1;\r\n\r\n const eventArgs: FileUploadFailedEventArgs = { fileStatus: file, uploadItemId, reason: file.failedReason };\r\n this.#eventsEngine.emit(TransferUploadEvent.FileUploadFailed, eventArgs);\r\n }\r\n\r\n chunkUploadStarted(externalFileId: string | number, uploadItemId: string | undefined, chunkStartPosition: number, chunkSizeInBytes: number) {\r\n const file = this.getFileInternal(externalFileId);\r\n\r\n if (!this.#ratesCalculator)\r\n this.#ratesCalculator = new TransferUploadRatesCalculator(this.#totalBytesCount, this.#currentRatesTimespanInMs);\r\n\r\n if (!file.isBeingUploaded)\r\n this.fileUploadStarted(file, uploadItemId);\r\n\r\n file.runningChunksCount += 1;\r\n\r\n const eventArgs: FileChunkUploadEventArgs = { fileStatus: file, uploadItemId, chunkStartPosition, chunkSizeInBytes };\r\n this.#eventsEngine.emit(TransferUploadEvent.FileChunkUploadStarted, eventArgs);\r\n }\r\n\r\n chunkUploadProgressed(externalFileId: string | number, uploadItemId: string | undefined, chunkStartPosition: number, chunkSizeInBytes: number, apiEventArgs: ChunkProgressEvent): void {\r\n const file = this.getFileInternal(externalFileId);\r\n\r\n file.uploadedBytesCount += apiEventArgs.transferredBytesSinceLastEvent;\r\n this.#uploadedBytesCount += apiEventArgs.transferredBytesSinceLastEvent;\r\n\r\n this.#ratesCalculator!.addNewProgressEvent(apiEventArgs.transferredBytesSinceLastEvent);\r\n\r\n const eventArgs: FileChunkUploadProgressedEventArgs = { fileStatus: file, uploadItemId, chunkStartPosition, chunkSizeInBytes, transferredBytesSinceLastEvent: apiEventArgs.transferredBytesSinceLastEvent };\r\n this.#eventsEngine.emit(TransferUploadEvent.FileChunkUploadProgressed, eventArgs);\r\n\r\n this.#getRatesAndNotifyUploadProgressedThrottled();\r\n }\r\n\r\n private getRatesAndNotifyUploadProgressed() {\r\n const progressStats = this.#ratesCalculator!.getRates(this.#uploadedBytesCount);\r\n\r\n const tranferEventArgs: TransferUploadProgressedEventArgs = {\r\n uploadedBytesTotalCount: this.#uploadedBytesCount,\r\n progressInPercentage: (this.#uploadedBytesCount * 100) / this.#totalBytesCount,\r\n remainingSeconds: progressStats.remainingSeconds,\r\n averageSpeedInBytesPerSecond: progressStats.averageSpeedInBytesPerSec,\r\n currentSpeedInBytesPerSecond: progressStats.currentSpeedInBytesPerSec,\r\n };\r\n\r\n this.#eventsEngine.emit(TransferUploadEvent.TransferProgressed, tranferEventArgs);\r\n }\r\n\r\n chunkUploadCompleted(externalFileId: string | number, uploadItemId: string | undefined, startPosition: number, sizeInBytes: number) {\r\n const file = this.getFileInternal(externalFileId);\r\n\r\n file.runningChunksCount -= 1;\r\n\r\n this.#continuousChunkCalculator.addNewChunk(externalFileId, { startPosition, sizeInBytes });\r\n\r\n this.#eventsEngine.emit(TransferUploadEvent.RecreateDataUpdated);\r\n\r\n const eventArgs: FileChunkUploadCompletedEventArgs = { fileStatus: file, uploadItemId, chunkStartPosition: startPosition, chunkSizeInBytes: sizeInBytes };\r\n this.#eventsEngine.emit(TransferUploadEvent.FileChunkUploadCompleted, eventArgs);\r\n\r\n if (file.runningChunksCount > 0)\r\n return;\r\n\r\n if (file.uploadedBytesCount === file.fileSizeInBytes)\r\n this.fileUploadCompleted(file, uploadItemId);\r\n else if (file.uploadedBytesCount + file.failedBytesCount === file.fileSizeInBytes)\r\n this.fileUploadFailed(file, uploadItemId);\r\n }\r\n\r\n chunkUploadCompletedPartially(externalFileId: string | number, uploadItemId: string | undefined, startPosition: number, sizeInBytes: number, uploadedBytesCount: number, isPauseRequested: boolean) {\r\n const file = this.getFileInternal(externalFileId);\r\n\r\n file.runningChunksCount -= 1;\r\n\r\n const failedBytes = sizeInBytes - uploadedBytesCount;\r\n\r\n file.failedBytesCount += failedBytes;\r\n this.#failedBytesCount += failedBytes;\r\n\r\n if (!file.failedReason)\r\n file.failedReason = isPauseRequested ? `Pause requested` : `Chunk upload completed partially`;\r\n\r\n if (uploadedBytesCount > 0)\r\n this.#continuousChunkCalculator.addNewChunk(externalFileId, { startPosition, sizeInBytes: uploadedBytesCount });\r\n\r\n this.#eventsEngine.emit(TransferUploadEvent.RecreateDataUpdated);\r\n\r\n const eventArgs: FileChunkUploadCompletedPartiallyEventArgs = { fileStatus: file, uploadItemId, chunkStartPosition: startPosition, chunkSizeInBytes: sizeInBytes, uploadedBytesCount, isPauseRequested };\r\n this.#eventsEngine.emit(TransferUploadEvent.FileChunkUploadCompletedPartially, eventArgs);\r\n\r\n if (file.runningChunksCount === 0 && file.uploadedBytesCount + file.failedBytesCount === file.fileSizeInBytes)\r\n this.fileUploadFailed(file, uploadItemId);\r\n }\r\n\r\n chunkUploadFailed(externalFileId: string | number, uploadItemId: string | undefined, chunkStartPosition: number, chunkSizeInBytes: number, uploadedBytesCount: number, failedReason: string, error: Error) {\r\n const file = this.getFileInternal(externalFileId);\r\n\r\n file.runningChunksCount -= 1;\r\n\r\n const failedBytes = chunkSizeInBytes;\r\n\r\n file.uploadedBytesCount -= uploadedBytesCount;\r\n file.failedBytesCount += failedBytes;\r\n\r\n this.#uploadedBytesCount -= uploadedBytesCount;\r\n this.#failedBytesCount += failedBytes;\r\n\r\n if (!file.failedReason)\r\n file.failedReason = failedReason;\r\n\r\n const eventArgs: FileChunkUploadFailedEventArgs = { fileStatus: file, uploadItemId, chunkStartPosition, chunkSizeInBytes, reason: failedReason, error };\r\n this.#eventsEngine.emit(TransferUploadEvent.FileChunkUploadFailed, eventArgs);\r\n\r\n if (file.runningChunksCount === 0 && file.uploadedBytesCount + file.failedBytesCount === file.fileSizeInBytes)\r\n this.fileUploadFailed(file, uploadItemId);\r\n }\r\n}"]}
1
+ {"version":3,"file":"transferUploadState.js","sourceRoot":"","sources":["../../../../src/uploader/state/transferUploadState.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable no-param-reassign */\nimport throttle from 'lodash.throttle';\n\nimport TransferUploadStateFile from \"./transferUploadStateFile.js\";\nimport TransferUploadEvent from \"../transferUploadEvent.js\";\nimport TransferStatus from \"../../utils/types/transferStatus.js\";\nimport TransferUploadError from \"../transferUploadError.js\";\nimport TransferUploadRatesCalculator from \"./transferUploadProgressCalculator.js\";\nimport ContinuousChunksCalculator from './continuousChunksCalculator.js';\n\nimport type ChunkProgressEvent from \"../../utils/events/chunkProgressEvent.js\";\nimport type EventsEngine from \"../../utils/events/eventsEngine.js\";\nimport type FileDetails from \"../../utils/fileSystem/fileDetails.js\";\nimport type TransferUploadStateFiles from \"./transferUploadStateFiles.js\";\nimport type FileChunkUploadFailedEventArgs from \"../eventArgs/fileChunkUploadFailedEventArgs.js\";\nimport type FileAckFailedEventArgs from \"../eventArgs/fileAckFailedEventArgs.js\";\nimport type FileChunkUploadEventArgs from \"../eventArgs/fileChunkUploadEventArgs.js\";\nimport type FileUploadEventArgs from \"../eventArgs/fileUploadEventArgs.js\";\nimport type TransferUploadCompletedEventArgs from \"../eventArgs/transferUploadCompletedEventArgs.js\";\nimport type ReadonlyTransferUploadStateFile from \"./readonlyTransferUploadStateFile.js\";\nimport type ReadonlyTransferUploadStateFiles from \"./readonlyTransferUploadStateFiles.js\";\nimport type FileUploadFailedEventArgs from \"../eventArgs/fileUploadFailedEventArgs.js\";\nimport type TransferUploadExportState from \"../export/transferUploadExportState.js\";\nimport type TransferUploadProgressedEventArgs from \"../eventArgs/transferUploadProgressedEventArgs.js\";\nimport type TransferUploadMetadata from '../export/transferUploadMetadata.js';\nimport type FileChunkUploadProgressedEventArgs from '../eventArgs/fileChunkUploadProgressedEventArgs.js';\nimport type { ContinuousChunk, ContinuousChunksCalculatorState } from './continuousChunksCalculator.js';\nimport type FileChunkUploadCompletedPartiallyEventArgs from '../eventArgs/fileChunkUploadCompletedPartiallyEventArgs.js';\nimport type FileChunkUploadCompletedEventArgs from '../eventArgs/fileChunkUploadCompletedEventArgs.js';\n\nexport default class TransferUploadState {\n #status: TransferStatus = TransferStatus.Initialized;\n\n #completedFilesCount = 0;\n #failedFilesCount = 0;\n #files: TransferUploadStateFiles = {};\n #eventsEngine: EventsEngine;\n\n #ratesCalculator?: TransferUploadRatesCalculator;\n #continuousChunkCalculator: ContinuousChunksCalculator;\n\n readonly #currentRatesTimespanInMs: number;\n\n #uploadedBytesCount = 0;\n #failedBytesCount = 0;\n\n #totalBytesCount = 0;\n\n #getRatesAndNotifyUploadProgressedThrottled: ReturnType<typeof throttle<TransferUploadState[`getRatesAndNotifyUploadProgressed`]>>;\n\n get status(): TransferStatus {\n return this.#status;\n }\n\n get completedFilesCount(): number {\n return this.#completedFilesCount;\n }\n\n get failedFilesCount(): number {\n return this.#failedFilesCount;\n }\n\n get uploadedBytesCount(): number {\n return this.#uploadedBytesCount;\n }\n\n get failedBytesCount(): number {\n return this.#failedBytesCount;\n }\n\n get files(): ReadonlyTransferUploadStateFiles {\n return this.#files;\n }\n\n constructor(files: readonly FileDetails[], eventsEngine: EventsEngine, currentRatesTimespanInMs: number, progressEventThrottlingInMs: number)\n constructor(files: readonly FileDetails[], eventsEngine: EventsEngine, currentRatesTimespanInMs: number, progressEventThrottlingInMs: number, exportedState: TransferUploadExportState)\n constructor(files: readonly FileDetails[], eventsEngine: EventsEngine, currentRatesTimespanInMs: number, progressEventThrottlingInMs: number, exportedState?: TransferUploadExportState) {\n this.#eventsEngine = eventsEngine;\n this.#currentRatesTimespanInMs = currentRatesTimespanInMs;\n\n this.#getRatesAndNotifyUploadProgressedThrottled = throttle(this.getRatesAndNotifyUploadProgressed, progressEventThrottlingInMs);\n\n this.initializeTransferStatus(files);\n\n this.#continuousChunkCalculator = new ContinuousChunksCalculator();\n\n if (exportedState)\n this.recoverFromExportedState(exportedState);\n }\n\n private initializeTransferStatus(filesDetails: readonly FileDetails[]) {\n for (const file of filesDetails) {\n this.#files[file.externalId] = new TransferUploadStateFile(file.externalId, file.fileSizeInBytes, file.fileName);\n\n this.#totalBytesCount += file.fileSizeInBytes;\n }\n }\n\n getChunksForFile(externalId: string | number): readonly Readonly<ContinuousChunk>[] {\n return this.#continuousChunkCalculator.getChunks(externalId);\n }\n\n export(): TransferUploadExportState {\n return {\n continuousChunksCalculatorState: this.#continuousChunkCalculator.export(),\n completedFiles: Object.values(this.#files).filter(file => file.isCompleted).map(file => file.externalId),\n };\n }\n\n recover() {\n this.#status = TransferStatus.Initialized;\n this.#completedFilesCount = 0;\n this.#uploadedBytesCount = 0;\n this.#failedFilesCount = 0;\n this.#failedBytesCount = 0;\n\n for (const [, file] of Object.entries(this.#files)) {\n file.isBeingUploaded = false;\n file.runningChunksCount = 0;\n file.isFailed = false;\n file.failedReason = null;\n file.failedBytesCount = 0;\n\n if (file.isCompleted)\n this.#completedFilesCount += 1;\n\n // A file can have all its chunks recorded and still miss the live isUploadCompleted transition (e.g. a\n // full chunk recorded through the partially-completed path on pause), so the flag is recomputed from\n // the chunks the same way recoverFromExportedState does - such a file has to be acked on the next run.\n file.isUploadCompleted = this.hasAllChunksUploaded(file);\n file.uploadedBytesCount = this.#continuousChunkCalculator.getChunksUploadedBytesCount(file.externalId);\n\n this.#uploadedBytesCount += file.uploadedBytesCount;\n }\n }\n\n private hasAllChunksUploaded(file: TransferUploadStateFile): boolean {\n const fileChunks = this.#continuousChunkCalculator.getChunks(file.externalId);\n\n return fileChunks.length === 1 && fileChunks[0]!.startPosition === 0 && fileChunks[0]!.sizeInBytes === file.fileSizeInBytes;\n }\n\n private recoverFromExportedState(exportedState: TransferUploadExportState | ContinuousChunksCalculatorState) {\n // Remove this variable and the legacy recovery logic after all our clients are on desktop version >= 4.22\n const isLegacyModeTransfer = Array.isArray(exportedState);\n\n const continuousChunksState = isLegacyModeTransfer ? exportedState : exportedState.continuousChunksCalculatorState;\n const completedFiles = isLegacyModeTransfer ? undefined : new Set(exportedState.completedFiles);\n\n this.#continuousChunkCalculator.recover(continuousChunksState);\n\n for (const [, file] of Object.entries(this.#files)) {\n const isUploadCompleted = this.hasAllChunksUploaded(file);\n\n file.isUploadCompleted = isUploadCompleted;\n file.isCompleted = isLegacyModeTransfer ? isUploadCompleted : completedFiles!.has(file.externalId);\n file.uploadedBytesCount = this.#continuousChunkCalculator.getChunksUploadedBytesCount(file.externalId);\n\n if (file.isCompleted)\n this.#completedFilesCount += 1;\n\n this.#uploadedBytesCount += file.uploadedBytesCount;\n }\n }\n\n getFile(externalFileId: string | number): ReadonlyTransferUploadStateFile {\n return this.getFileInternal(externalFileId);\n }\n\n private getFileInternal(externalFileId: string | number): TransferUploadStateFile {\n const file = this.#files[externalFileId];\n\n if (!file)\n throw new TransferUploadError(`File with id = ${externalFileId} doesn't exist`);\n\n return file;\n }\n\n transferRun() {\n this.#status = TransferStatus.Running;\n\n this.#ratesCalculator = undefined;\n\n this.#eventsEngine.emit(TransferUploadEvent.TransferRun);\n }\n\n transferPauseRequested() {\n this.#status = TransferStatus.Pausing;\n\n this.#eventsEngine.emit(TransferUploadEvent.TransferPauseRequested);\n }\n\n transferPaused() {\n this.#status = TransferStatus.Paused;\n\n this.#getRatesAndNotifyUploadProgressedThrottled.flush();\n\n this.#eventsEngine.emit(TransferUploadEvent.TransferPaused);\n }\n\n transferAbortRequested() {\n this.#status = TransferStatus.Aborting;\n\n this.#eventsEngine.emit(TransferUploadEvent.TransferAbortRequested);\n }\n\n transferAborted() {\n this.#status = TransferStatus.Aborted;\n\n for (const [, file] of Object.entries(this.#files)) {\n if (file.isBeingUploaded) {\n file.isBeingUploaded = false;\n file.isFailed = true;\n\n if (!file.failedReason)\n file.failedReason = `Aborted`;\n }\n }\n\n this.#getRatesAndNotifyUploadProgressedThrottled.cancel();\n\n this.#eventsEngine.emit(TransferUploadEvent.TransferAborted);\n }\n\n transferCancelRequested() {\n this.#status = TransferStatus.Canceling;\n\n this.#eventsEngine.emit(TransferUploadEvent.TransferCancelRequested);\n }\n\n transferCanceled() {\n this.#status = TransferStatus.Canceled;\n\n this.#getRatesAndNotifyUploadProgressedThrottled.cancel();\n\n this.#eventsEngine.emit(TransferUploadEvent.TransferCanceled);\n }\n\n transferCompleted(transferMetadata: TransferUploadMetadata, transferDownloadUrl: string, confirmationUrl: string | undefined, recipientTrackingLinks?: TransferUploadCompletedEventArgs[`recipientTrackingLinks`]) {\n this.#status = TransferStatus.Completed;\n\n this.#getRatesAndNotifyUploadProgressedThrottled.flush();\n\n const eventArgs: TransferUploadCompletedEventArgs = {\n transferId: transferMetadata.transferId,\n transferKey: transferMetadata.transferKey,\n transferDownloadUrl,\n confirmationUrl,\n fileServerUrl: transferMetadata.transferFileServerUrl,\n region: transferMetadata.transferRegion,\n recipientTrackingLinks,\n };\n\n this.#eventsEngine.emit(TransferUploadEvent.TransferCompleted, eventArgs);\n }\n\n transferFailed() {\n this.#status = TransferStatus.Failed;\n\n this.#getRatesAndNotifyUploadProgressedThrottled.cancel();\n\n this.#eventsEngine.emit(TransferUploadEvent.TransferFailed);\n }\n\n fileUploadStarted(file: TransferUploadStateFile, uploadItemId: string | undefined) {\n file.isBeingUploaded = true;\n\n const eventArgs: FileUploadEventArgs = { fileStatus: file, uploadItemId };\n this.#eventsEngine.emit(TransferUploadEvent.FileUploadStarted, eventArgs);\n }\n\n fileUploadCompleted(file: TransferUploadStateFile, uploadItemId: string | undefined) {\n file.isBeingUploaded = false;\n file.isUploadCompleted = true;\n\n const eventArgs: FileUploadEventArgs = { fileStatus: file, uploadItemId };\n this.#eventsEngine.emit(TransferUploadEvent.FileUploadCompleted, eventArgs);\n }\n\n fileCompleted(externalFileId: string | number, uploadItemId: string | undefined) {\n const file = this.getFileInternal(externalFileId);\n\n file.isCompleted = true;\n\n this.#completedFilesCount += 1;\n\n this.#eventsEngine.emit(TransferUploadEvent.RecreateDataUpdated);\n\n const eventArgs: FileUploadEventArgs = { fileStatus: file, uploadItemId };\n this.#eventsEngine.emit(TransferUploadEvent.FileCompleted, eventArgs);\n }\n\n fileAckFailed(externalFileId: string | number, uploadItemId: string, reason: string, error: Error) {\n const file = this.getFileInternal(externalFileId);\n\n const eventArgs: FileAckFailedEventArgs = { fileStatus: file, uploadItemId, reason, error };\n this.#eventsEngine.emit(TransferUploadEvent.FileAckFailed, eventArgs);\n }\n\n fileUploadFailed(file: TransferUploadStateFile, uploadItemId: string | undefined) {\n file.isBeingUploaded = false;\n file.isFailed = true;\n\n this.#failedFilesCount += 1;\n\n const eventArgs: FileUploadFailedEventArgs = { fileStatus: file, uploadItemId, reason: file.failedReason };\n this.#eventsEngine.emit(TransferUploadEvent.FileUploadFailed, eventArgs);\n }\n\n chunkUploadStarted(externalFileId: string | number, uploadItemId: string | undefined, chunkStartPosition: number, chunkSizeInBytes: number) {\n const file = this.getFileInternal(externalFileId);\n\n if (!this.#ratesCalculator)\n this.#ratesCalculator = new TransferUploadRatesCalculator(this.#totalBytesCount, this.#currentRatesTimespanInMs);\n\n if (!file.isBeingUploaded)\n this.fileUploadStarted(file, uploadItemId);\n\n file.runningChunksCount += 1;\n\n const eventArgs: FileChunkUploadEventArgs = { fileStatus: file, uploadItemId, chunkStartPosition, chunkSizeInBytes };\n this.#eventsEngine.emit(TransferUploadEvent.FileChunkUploadStarted, eventArgs);\n }\n\n chunkUploadProgressed(externalFileId: string | number, uploadItemId: string | undefined, chunkStartPosition: number, chunkSizeInBytes: number, apiEventArgs: ChunkProgressEvent): void {\n const file = this.getFileInternal(externalFileId);\n\n file.uploadedBytesCount += apiEventArgs.transferredBytesSinceLastEvent;\n this.#uploadedBytesCount += apiEventArgs.transferredBytesSinceLastEvent;\n\n this.#ratesCalculator!.addNewProgressEvent(apiEventArgs.transferredBytesSinceLastEvent);\n\n const eventArgs: FileChunkUploadProgressedEventArgs = { fileStatus: file, uploadItemId, chunkStartPosition, chunkSizeInBytes, transferredBytesSinceLastEvent: apiEventArgs.transferredBytesSinceLastEvent };\n this.#eventsEngine.emit(TransferUploadEvent.FileChunkUploadProgressed, eventArgs);\n\n this.#getRatesAndNotifyUploadProgressedThrottled();\n }\n\n private getRatesAndNotifyUploadProgressed() {\n const progressStats = this.#ratesCalculator!.getRates(this.#uploadedBytesCount);\n\n const tranferEventArgs: TransferUploadProgressedEventArgs = {\n uploadedBytesTotalCount: this.#uploadedBytesCount,\n progressInPercentage: (this.#uploadedBytesCount * 100) / this.#totalBytesCount,\n remainingSeconds: progressStats.remainingSeconds,\n averageSpeedInBytesPerSecond: progressStats.averageSpeedInBytesPerSec,\n currentSpeedInBytesPerSecond: progressStats.currentSpeedInBytesPerSec,\n };\n\n this.#eventsEngine.emit(TransferUploadEvent.TransferProgressed, tranferEventArgs);\n }\n\n chunkUploadCompleted(externalFileId: string | number, uploadItemId: string | undefined, startPosition: number, sizeInBytes: number) {\n const file = this.getFileInternal(externalFileId);\n\n file.runningChunksCount -= 1;\n\n this.#continuousChunkCalculator.addNewChunk(externalFileId, { startPosition, sizeInBytes });\n\n this.#eventsEngine.emit(TransferUploadEvent.RecreateDataUpdated);\n\n const eventArgs: FileChunkUploadCompletedEventArgs = { fileStatus: file, uploadItemId, chunkStartPosition: startPosition, chunkSizeInBytes: sizeInBytes };\n this.#eventsEngine.emit(TransferUploadEvent.FileChunkUploadCompleted, eventArgs);\n\n if (file.runningChunksCount > 0)\n return;\n\n if (file.uploadedBytesCount === file.fileSizeInBytes)\n this.fileUploadCompleted(file, uploadItemId);\n else if (file.uploadedBytesCount + file.failedBytesCount === file.fileSizeInBytes)\n this.fileUploadFailed(file, uploadItemId);\n }\n\n chunkUploadCompletedPartially(externalFileId: string | number, uploadItemId: string | undefined, startPosition: number, sizeInBytes: number, uploadedBytesCount: number, isPauseRequested: boolean) {\n const file = this.getFileInternal(externalFileId);\n\n file.runningChunksCount -= 1;\n\n const failedBytes = sizeInBytes - uploadedBytesCount;\n\n file.failedBytesCount += failedBytes;\n this.#failedBytesCount += failedBytes;\n\n if (!file.failedReason)\n file.failedReason = isPauseRequested ? `Pause requested` : `Chunk upload completed partially`;\n\n if (uploadedBytesCount > 0)\n this.#continuousChunkCalculator.addNewChunk(externalFileId, { startPosition, sizeInBytes: uploadedBytesCount });\n\n this.#eventsEngine.emit(TransferUploadEvent.RecreateDataUpdated);\n\n const eventArgs: FileChunkUploadCompletedPartiallyEventArgs = { fileStatus: file, uploadItemId, chunkStartPosition: startPosition, chunkSizeInBytes: sizeInBytes, uploadedBytesCount, isPauseRequested };\n this.#eventsEngine.emit(TransferUploadEvent.FileChunkUploadCompletedPartially, eventArgs);\n\n if (file.runningChunksCount === 0 && file.uploadedBytesCount + file.failedBytesCount === file.fileSizeInBytes)\n this.fileUploadFailed(file, uploadItemId);\n }\n\n chunkUploadFailed(externalFileId: string | number, uploadItemId: string | undefined, chunkStartPosition: number, chunkSizeInBytes: number, uploadedBytesCount: number, failedReason: string, error: Error) {\n const file = this.getFileInternal(externalFileId);\n\n file.runningChunksCount -= 1;\n\n const failedBytes = chunkSizeInBytes;\n\n file.uploadedBytesCount -= uploadedBytesCount;\n file.failedBytesCount += failedBytes;\n\n this.#uploadedBytesCount -= uploadedBytesCount;\n this.#failedBytesCount += failedBytes;\n\n if (!file.failedReason)\n file.failedReason = failedReason;\n\n const eventArgs: FileChunkUploadFailedEventArgs = { fileStatus: file, uploadItemId, chunkStartPosition, chunkSizeInBytes, reason: failedReason, error };\n this.#eventsEngine.emit(TransferUploadEvent.FileChunkUploadFailed, eventArgs);\n\n if (file.runningChunksCount === 0 && file.uploadedBytesCount + file.failedBytesCount === file.fileSizeInBytes)\n this.fileUploadFailed(file, uploadItemId);\n }\n}"]}
@@ -1 +1 @@
1
- {"version":3,"file":"transferUploadStateFile.js","sourceRoot":"","sources":["../../../../src/uploader/state/transferUploadStateFile.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,uBAAuB;IAC/B,UAAU,CAAkB;IAC5B,eAAe,CAAS;IACxB,QAAQ,CAAS;IAC1B,eAAe,GAAG,KAAK,CAAC;IACxB,kBAAkB,GAAG,CAAC,CAAC;IACvB,iBAAiB,GAAG,KAAK,CAAC;IAC1B,WAAW,GAAG,KAAK,CAAC;IACpB,QAAQ,GAAG,KAAK,CAAC;IACjB,YAAY,GAAkB,IAAI,CAAC;IACnC,gBAAgB,GAAG,CAAC,CAAC;IACrB,kBAAkB,GAAG,CAAC,CAAC;IAEvB,YAAY,UAA2B,EAAE,eAAuB,EAAE,QAAgB;QAC9E,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;CACJ","sourcesContent":["export default class TransferUploadStateFile {\r\n readonly externalId: string | number;\r\n readonly fileSizeInBytes: number;\r\n readonly fileName: string;\r\n isBeingUploaded = false;\r\n runningChunksCount = 0;\r\n isUploadCompleted = false;\r\n isCompleted = false;\r\n isFailed = false;\r\n failedReason: string | null = null;\r\n failedBytesCount = 0;\r\n uploadedBytesCount = 0;\r\n\r\n constructor(externalId: string | number, fileSizeInBytes: number, fileName: string) {\r\n this.externalId = externalId;\r\n this.fileSizeInBytes = fileSizeInBytes;\r\n this.fileName = fileName;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"transferUploadStateFile.js","sourceRoot":"","sources":["../../../../src/uploader/state/transferUploadStateFile.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,uBAAuB;IAC/B,UAAU,CAAkB;IAC5B,eAAe,CAAS;IACxB,QAAQ,CAAS;IAC1B,eAAe,GAAG,KAAK,CAAC;IACxB,kBAAkB,GAAG,CAAC,CAAC;IACvB,iBAAiB,GAAG,KAAK,CAAC;IAC1B,WAAW,GAAG,KAAK,CAAC;IACpB,QAAQ,GAAG,KAAK,CAAC;IACjB,YAAY,GAAkB,IAAI,CAAC;IACnC,gBAAgB,GAAG,CAAC,CAAC;IACrB,kBAAkB,GAAG,CAAC,CAAC;IAEvB,YAAY,UAA2B,EAAE,eAAuB,EAAE,QAAgB;QAC9E,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;CACJ","sourcesContent":["export default class TransferUploadStateFile {\n readonly externalId: string | number;\n readonly fileSizeInBytes: number;\n readonly fileName: string;\n isBeingUploaded = false;\n runningChunksCount = 0;\n isUploadCompleted = false;\n isCompleted = false;\n isFailed = false;\n failedReason: string | null = null;\n failedBytesCount = 0;\n uploadedBytesCount = 0;\n\n constructor(externalId: string | number, fileSizeInBytes: number, fileName: string) {\n this.externalId = externalId;\n this.fileSizeInBytes = fileSizeInBytes;\n this.fileName = fileName;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"transferUploadStateFiles.js","sourceRoot":"","sources":["../../../../src/uploader/state/transferUploadStateFiles.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,OAAO,wBAAwB;CAE5C","sourcesContent":["import type TransferUploadStateFile from \"./transferUploadStateFile.js\";\r\n\r\nexport default class TransferUploadStateFiles {\r\n [externalId: string | number]: TransferUploadStateFile;\r\n}\r\n"]}
1
+ {"version":3,"file":"transferUploadStateFiles.js","sourceRoot":"","sources":["../../../../src/uploader/state/transferUploadStateFiles.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,OAAO,wBAAwB;CAE5C","sourcesContent":["import type TransferUploadStateFile from \"./transferUploadStateFile.js\";\n\nexport default class TransferUploadStateFiles {\n [externalId: string | number]: TransferUploadStateFile;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"transferFailureAbortReason.js","sourceRoot":"","sources":["../../../src/uploader/transferFailureAbortReason.ts"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,MAAM,0BAA0B,CAAC;AAE3D,MAAM,iCAAiC,GAAG,0BAA0B,CAAC;AAErE,MAAM,UAAU,gCAAgC;IAC5C,OAAO,IAAI,mBAAmB,CAAC,iCAAiC,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,MAAe;IACxD,OAAO,MAAM,YAAY,mBAAmB,IAAI,MAAM,CAAC,OAAO,KAAK,iCAAiC,CAAC;AACzG,CAAC","sourcesContent":["import TransferUploadError from \"./transferUploadError.js\";\r\n\r\nconst TransferFailureAbortReasonMessage = `TransferFailureRequested`;\r\n\r\nexport function createTransferFailureAbortReason() {\r\n return new TransferUploadError(TransferFailureAbortReasonMessage);\r\n}\r\n\r\nexport function isTransferFailureAbortReason(reason: unknown) {\r\n return reason instanceof TransferUploadError && reason.message === TransferFailureAbortReasonMessage;\r\n}\r\n"]}
1
+ {"version":3,"file":"transferFailureAbortReason.js","sourceRoot":"","sources":["../../../src/uploader/transferFailureAbortReason.ts"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,MAAM,0BAA0B,CAAC;AAE3D,MAAM,iCAAiC,GAAG,0BAA0B,CAAC;AAErE,MAAM,UAAU,gCAAgC;IAC5C,OAAO,IAAI,mBAAmB,CAAC,iCAAiC,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,MAAe;IACxD,OAAO,MAAM,YAAY,mBAAmB,IAAI,MAAM,CAAC,OAAO,KAAK,iCAAiC,CAAC;AACzG,CAAC","sourcesContent":["import TransferUploadError from \"./transferUploadError.js\";\n\nconst TransferFailureAbortReasonMessage = `TransferFailureRequested`;\n\nexport function createTransferFailureAbortReason() {\n return new TransferUploadError(TransferFailureAbortReasonMessage);\n}\n\nexport function isTransferFailureAbortReason(reason: unknown) {\n return reason instanceof TransferUploadError && reason.message === TransferFailureAbortReasonMessage;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"transferFilesRegistrar.js","sourceRoot":"","sources":["../../../src/uploader/transferFilesRegistrar.ts"],"names":[],"mappings":"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","sourcesContent":["import TransferUploadError from \"./transferUploadError.js\";\r\nimport TransferUploadEvent from \"./transferUploadEvent.js\";\r\n\r\nimport type ApiClient from \"../utils/api/apiClient.js\";\r\nimport type EventsEngine from \"../utils/events/eventsEngine.js\";\r\nimport type FileDetails from \"../utils/fileSystem/fileDetails.js\";\r\nimport type RegisteredTransferFile from \"./registeredTransferFile.js\";\r\nimport type FilesRegistrationBatchFailedEventArgs from \"./eventArgs/filesRegistrationBatchFailedEventArgs.js\";\r\nimport type { RegisterTransferFilesRequest } from \"../utils/api/dtos/registerTransferFilesRequest.js\";\r\nimport type { RegisterTransferFilesResponse } from \"../utils/api/dtos/registerTransferFilesResponse.js\";\r\n\r\nconst REGISTER_ITEMS_BATCH_SIZE = 250;\r\nexport default class TransferFilesRegistrar {\r\n #apiClient: ApiClient;\r\n #eventsEngine: EventsEngine;\r\n #files: readonly Readonly<FileDetails>[];\r\n\r\n #registeredFiles = new Map<string | number, RegisteredTransferFile>();\r\n #failedRegistrations = new Map<string | number, Error>();\r\n #currentObserver: { wantedExternalFileId: string | number, resolve: (value: RegistrationResult) => void } | undefined;\r\n\r\n #transferId: string | undefined;\r\n #transferKey: string | undefined;\r\n\r\n #stopController: AbortController | undefined;\r\n #removeExternalAbortListener: (() => void) | undefined;\r\n\r\n #isRegisteringAllFilesDone = true;\r\n\r\n #runningPromise: Promise<void> | undefined;\r\n\r\n constructor(apiClient: ApiClient, eventsEngine: EventsEngine, files: readonly Readonly<FileDetails>[]) {\r\n this.#apiClient = apiClient;\r\n this.#eventsEngine = eventsEngine;\r\n this.#files = files;\r\n }\r\n\r\n getRegisteredFile(externalFileId: string | number): RegisteredTransferFile | undefined {\r\n return this.#registeredFiles.get(externalFileId);\r\n }\r\n\r\n start(transferId: string, transferKey: string, pauseAndAbortSignal?: AbortSignal): void {\r\n if (!transferId || !transferKey)\r\n throw new TransferUploadError(`TransferId and TransferKey are required`);\r\n\r\n if (this.#runningPromise)\r\n throw new TransferUploadError(`Registrar is already running`);\r\n\r\n if (pauseAndAbortSignal?.aborted)\r\n return;\r\n\r\n this.#transferId = transferId;\r\n this.#transferKey = transferKey;\r\n\r\n this.#isRegisteringAllFilesDone = false;\r\n\r\n this.#failedRegistrations.clear();\r\n\r\n this.createStopController(pauseAndAbortSignal);\r\n\r\n this.#runningPromise = this.runRegistration();\r\n }\r\n\r\n private createStopController(pauseAndAbortSignal: AbortSignal | undefined) {\r\n const stopController = new AbortController();\r\n\r\n this.#stopController = stopController;\r\n\r\n const abortRegistration = () => stopController.abort(pauseAndAbortSignal?.reason);\r\n\r\n pauseAndAbortSignal?.addEventListener(`abort`, abortRegistration, { once: true });\r\n\r\n this.#removeExternalAbortListener = () => pauseAndAbortSignal?.removeEventListener(`abort`, abortRegistration);\r\n }\r\n\r\n async stop(): Promise<void> {\r\n if (!this.#runningPromise)\r\n return;\r\n\r\n this.#stopController?.abort();\r\n\r\n await this.#runningPromise;\r\n }\r\n\r\n async waitUntilFileRegistered(wantedExternalFileId: string | number): Promise<RegistrationResult> {\r\n if (this.#currentObserver)\r\n throw new TransferUploadError(`Current implementation allows only one observer`);\r\n\r\n return new Promise(resolve => {\r\n this.#currentObserver = { wantedExternalFileId, resolve };\r\n this.notifyObserver();\r\n });\r\n }\r\n\r\n private async runRegistration(): Promise<void> {\r\n try {\r\n await this.registerMissingFiles();\r\n }\r\n finally {\r\n this.#isRegisteringAllFilesDone = true;\r\n this.notifyObserver();\r\n this.#removeExternalAbortListener?.();\r\n\r\n this.#removeExternalAbortListener = undefined;\r\n this.#stopController = undefined;\r\n this.#runningPromise = undefined;\r\n }\r\n }\r\n\r\n private async registerMissingFiles(): Promise<void> {\r\n const filesToRegister = this.getFilesMissingRegistration();\r\n\r\n for (let start = 0; start < filesToRegister.length; start += REGISTER_ITEMS_BATCH_SIZE) {\r\n if (this.#stopController!.signal.aborted)\r\n break;\r\n\r\n const filesBatch = filesToRegister.slice(start, start + REGISTER_ITEMS_BATCH_SIZE);\r\n\r\n try {\r\n const registeredBatchEntries = await this.registerSingleBatch(filesBatch);\r\n\r\n for (const [externalFileId, registeredFile] of registeredBatchEntries)\r\n this.#registeredFiles.set(externalFileId, registeredFile);\r\n\r\n this.#eventsEngine.emit(TransferUploadEvent.RecreateDataUpdated);\r\n }\r\n catch (error) {\r\n for (const file of filesBatch)\r\n this.#failedRegistrations.set(file.externalId, error as Error);\r\n\r\n if (!this.#stopController?.signal.aborted)\r\n this.notifyBatchFailed(filesBatch, error);\r\n }\r\n finally {\r\n this.notifyObserver();\r\n }\r\n }\r\n }\r\n\r\n private async registerSingleBatch(filesBatch: readonly Readonly<FileDetails>[]): Promise<Array<[string | number, RegisteredTransferFile]>> {\r\n const registerFilesRequest: RegisterTransferFilesRequest = {\r\n transferkey: this.#transferKey!,\r\n items: filesBatch.map(file => ({\r\n clientItemId: String(file.externalId),\r\n path: this.joinTransferPath(file.fileDestinationPathInTransfer, file.fileName),\r\n type: `File`,\r\n size: file.fileSizeInBytes,\r\n })),\r\n };\r\n\r\n const response = await this.#apiClient.registerTransferFiles(this.#transferId!, registerFilesRequest, this.#stopController?.signal);\r\n return this.validateRegistrationBatchResponse(filesBatch, response);\r\n }\r\n\r\n private notifyBatchFailed(filesBatch: Readonly<FileDetails>[], error: unknown) {\r\n const eventArgs: FilesRegistrationBatchFailedEventArgs = {\r\n externalFileIds: filesBatch.map(file => file.externalId),\r\n error: error as Error,\r\n };\r\n\r\n this.#eventsEngine.emit(TransferUploadEvent.FilesRegistrationBatchFailed, eventArgs);\r\n }\r\n\r\n private getFilesMissingRegistration(): readonly Readonly<FileDetails>[] {\r\n return this.#files.filter(file => !this.#registeredFiles.has(file.externalId));\r\n }\r\n\r\n private validateRegistrationBatchResponse(filesBatch: readonly Readonly<FileDetails>[], response: RegisterTransferFilesResponse): Array<[string | number, RegisteredTransferFile]> {\r\n if (response.items.length !== filesBatch.length)\r\n throw new TransferUploadError(`Invalid register transfer files response`);\r\n\r\n const filesByClientItemId = new Map(\r\n filesBatch.map(file => [String(file.externalId), file] as const),\r\n );\r\n\r\n return response.items.map((item): [string | number, RegisteredTransferFile] => {\r\n const file = filesByClientItemId.get(item.clientItemId);\r\n\r\n if (!file || !item.uploadItemId || !item.fileId)\r\n throw new TransferUploadError(`Invalid register transfer files response`);\r\n\r\n return [file.externalId, { uploadItemId: item.uploadItemId, fileId: item.fileId }];\r\n });\r\n }\r\n\r\n private joinTransferPath(directoryPath: string, fileName: string): string {\r\n const normalizedDirectoryPath = directoryPath.replace(/^\\/+|\\/+$/g, ``);\r\n const normalizedFileName = fileName.replace(/^\\/+/g, ``);\r\n\r\n if (!normalizedDirectoryPath)\r\n return normalizedFileName;\r\n\r\n return `${normalizedDirectoryPath}/${normalizedFileName}`;\r\n }\r\n\r\n private notifyObserver(): void {\r\n if (!this.#currentObserver)\r\n return;\r\n\r\n const { wantedExternalFileId, resolve } = this.#currentObserver;\r\n const isFileRegistered = this.#registeredFiles.has(wantedExternalFileId);\r\n const isFileFailed = this.#failedRegistrations.has(wantedExternalFileId);\r\n\r\n if (isFileRegistered)\r\n resolve({ isRegisteredSuccessfully: true });\r\n else if (isFileFailed)\r\n resolve({ isRegisteredSuccessfully: false, error: this.#failedRegistrations.get(wantedExternalFileId)! });\r\n else if (this.#isRegisteringAllFilesDone)\r\n resolve({ isRegisteredSuccessfully: false, error: new Error(`File has never been picked up for registration`) });\r\n else\r\n return; // continue waiting for new batch registrations\r\n\r\n this.#currentObserver = undefined;\r\n }\r\n\r\n export(): ReadonlyMap<string | number, RegisteredTransferFile> {\r\n return this.#registeredFiles;\r\n }\r\n\r\n recoverFromExportedState(registeredFiles: readonly (readonly [string | number, RegisteredTransferFile])[]): void {\r\n this.#registeredFiles = new Map(registeredFiles);\r\n }\r\n}\r\n\r\nexport type RegistrationResult = { isRegisteredSuccessfully: true; } | { isRegisteredSuccessfully: false; error: Error; };"]}
1
+ {"version":3,"file":"transferFilesRegistrar.js","sourceRoot":"","sources":["../../../src/uploader/transferFilesRegistrar.ts"],"names":[],"mappings":"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","sourcesContent":["import TransferUploadError from \"./transferUploadError.js\";\nimport TransferUploadEvent from \"./transferUploadEvent.js\";\n\nimport type ApiClient from \"../utils/api/apiClient.js\";\nimport type EventsEngine from \"../utils/events/eventsEngine.js\";\nimport type FileDetails from \"../utils/fileSystem/fileDetails.js\";\nimport type RegisteredTransferFile from \"./registeredTransferFile.js\";\nimport type FilesRegistrationBatchFailedEventArgs from \"./eventArgs/filesRegistrationBatchFailedEventArgs.js\";\nimport type { RegisterTransferFilesRequest } from \"../utils/api/dtos/registerTransferFilesRequest.js\";\nimport type { RegisterTransferFilesResponse } from \"../utils/api/dtos/registerTransferFilesResponse.js\";\n\nconst REGISTER_ITEMS_BATCH_SIZE = 250;\nexport default class TransferFilesRegistrar {\n #apiClient: ApiClient;\n #eventsEngine: EventsEngine;\n #files: readonly Readonly<FileDetails>[];\n\n #registeredFiles = new Map<string | number, RegisteredTransferFile>();\n #failedRegistrations = new Map<string | number, Error>();\n #currentObserver: { wantedExternalFileId: string | number, resolve: (value: RegistrationResult) => void } | undefined;\n\n #transferId: string | undefined;\n #transferKey: string | undefined;\n\n #stopController: AbortController | undefined;\n #removeExternalAbortListener: (() => void) | undefined;\n\n #isRegisteringAllFilesDone = true;\n\n #runningPromise: Promise<void> | undefined;\n\n constructor(apiClient: ApiClient, eventsEngine: EventsEngine, files: readonly Readonly<FileDetails>[]) {\n this.#apiClient = apiClient;\n this.#eventsEngine = eventsEngine;\n this.#files = files;\n }\n\n getRegisteredFile(externalFileId: string | number): RegisteredTransferFile | undefined {\n return this.#registeredFiles.get(externalFileId);\n }\n\n start(transferId: string, transferKey: string, pauseAndAbortSignal?: AbortSignal): void {\n if (!transferId || !transferKey)\n throw new TransferUploadError(`TransferId and TransferKey are required`);\n\n if (this.#runningPromise)\n throw new TransferUploadError(`Registrar is already running`);\n\n if (pauseAndAbortSignal?.aborted)\n return;\n\n this.#transferId = transferId;\n this.#transferKey = transferKey;\n\n this.#isRegisteringAllFilesDone = false;\n\n this.#failedRegistrations.clear();\n\n this.createStopController(pauseAndAbortSignal);\n\n this.#runningPromise = this.runRegistration();\n }\n\n private createStopController(pauseAndAbortSignal: AbortSignal | undefined) {\n const stopController = new AbortController();\n\n this.#stopController = stopController;\n\n const abortRegistration = () => stopController.abort(pauseAndAbortSignal?.reason);\n\n pauseAndAbortSignal?.addEventListener(`abort`, abortRegistration, { once: true });\n\n this.#removeExternalAbortListener = () => pauseAndAbortSignal?.removeEventListener(`abort`, abortRegistration);\n }\n\n async stop(): Promise<void> {\n if (!this.#runningPromise)\n return;\n\n this.#stopController?.abort();\n\n await this.#runningPromise;\n }\n\n async waitUntilFileRegistered(wantedExternalFileId: string | number): Promise<RegistrationResult> {\n if (this.#currentObserver)\n throw new TransferUploadError(`Current implementation allows only one observer`);\n\n return new Promise(resolve => {\n this.#currentObserver = { wantedExternalFileId, resolve };\n this.notifyObserver();\n });\n }\n\n private async runRegistration(): Promise<void> {\n try {\n await this.registerMissingFiles();\n }\n finally {\n this.#isRegisteringAllFilesDone = true;\n this.notifyObserver();\n this.#removeExternalAbortListener?.();\n\n this.#removeExternalAbortListener = undefined;\n this.#stopController = undefined;\n this.#runningPromise = undefined;\n }\n }\n\n private async registerMissingFiles(): Promise<void> {\n const filesToRegister = this.getFilesMissingRegistration();\n\n for (let start = 0; start < filesToRegister.length; start += REGISTER_ITEMS_BATCH_SIZE) {\n if (this.#stopController!.signal.aborted)\n break;\n\n const filesBatch = filesToRegister.slice(start, start + REGISTER_ITEMS_BATCH_SIZE);\n\n try {\n const registeredBatchEntries = await this.registerSingleBatch(filesBatch);\n\n for (const [externalFileId, registeredFile] of registeredBatchEntries)\n this.#registeredFiles.set(externalFileId, registeredFile);\n\n this.#eventsEngine.emit(TransferUploadEvent.RecreateDataUpdated);\n }\n catch (error) {\n for (const file of filesBatch)\n this.#failedRegistrations.set(file.externalId, error as Error);\n\n if (!this.#stopController?.signal.aborted)\n this.notifyBatchFailed(filesBatch, error);\n }\n finally {\n this.notifyObserver();\n }\n }\n }\n\n private async registerSingleBatch(filesBatch: readonly Readonly<FileDetails>[]): Promise<Array<[string | number, RegisteredTransferFile]>> {\n const registerFilesRequest: RegisterTransferFilesRequest = {\n transferkey: this.#transferKey!,\n items: filesBatch.map(file => ({\n clientItemId: String(file.externalId),\n path: this.joinTransferPath(file.fileDestinationPathInTransfer, file.fileName),\n type: `File`,\n size: file.fileSizeInBytes,\n })),\n };\n\n const response = await this.#apiClient.registerTransferFiles(this.#transferId!, registerFilesRequest, this.#stopController?.signal);\n return this.validateRegistrationBatchResponse(filesBatch, response);\n }\n\n private notifyBatchFailed(filesBatch: Readonly<FileDetails>[], error: unknown) {\n const eventArgs: FilesRegistrationBatchFailedEventArgs = {\n externalFileIds: filesBatch.map(file => file.externalId),\n error: error as Error,\n };\n\n this.#eventsEngine.emit(TransferUploadEvent.FilesRegistrationBatchFailed, eventArgs);\n }\n\n private getFilesMissingRegistration(): readonly Readonly<FileDetails>[] {\n return this.#files.filter(file => !this.#registeredFiles.has(file.externalId));\n }\n\n private validateRegistrationBatchResponse(filesBatch: readonly Readonly<FileDetails>[], response: RegisterTransferFilesResponse): Array<[string | number, RegisteredTransferFile]> {\n if (response.items.length !== filesBatch.length)\n throw new TransferUploadError(`Invalid register transfer files response`);\n\n const filesByClientItemId = new Map(\n filesBatch.map(file => [String(file.externalId), file] as const),\n );\n\n return response.items.map((item): [string | number, RegisteredTransferFile] => {\n const file = filesByClientItemId.get(item.clientItemId);\n\n if (!file || !item.uploadItemId || !item.fileId)\n throw new TransferUploadError(`Invalid register transfer files response`);\n\n return [file.externalId, { uploadItemId: item.uploadItemId, fileId: item.fileId }];\n });\n }\n\n private joinTransferPath(directoryPath: string, fileName: string): string {\n const normalizedDirectoryPath = directoryPath.replace(/^\\/+|\\/+$/g, ``);\n const normalizedFileName = fileName.replace(/^\\/+/g, ``);\n\n if (!normalizedDirectoryPath)\n return normalizedFileName;\n\n return `${normalizedDirectoryPath}/${normalizedFileName}`;\n }\n\n private notifyObserver(): void {\n if (!this.#currentObserver)\n return;\n\n const { wantedExternalFileId, resolve } = this.#currentObserver;\n const isFileRegistered = this.#registeredFiles.has(wantedExternalFileId);\n const isFileFailed = this.#failedRegistrations.has(wantedExternalFileId);\n\n if (isFileRegistered)\n resolve({ isRegisteredSuccessfully: true });\n else if (isFileFailed)\n resolve({ isRegisteredSuccessfully: false, error: this.#failedRegistrations.get(wantedExternalFileId)! });\n else if (this.#isRegisteringAllFilesDone)\n resolve({ isRegisteredSuccessfully: false, error: new Error(`File has never been picked up for registration`) });\n else\n return; // continue waiting for new batch registrations\n\n this.#currentObserver = undefined;\n }\n\n export(): ReadonlyMap<string | number, RegisteredTransferFile> {\n return this.#registeredFiles;\n }\n\n recoverFromExportedState(registeredFiles: readonly (readonly [string | number, RegisteredTransferFile])[]): void {\n this.#registeredFiles = new Map(registeredFiles);\n }\n}\n\nexport type RegistrationResult = { isRegisteredSuccessfully: true; } | { isRegisteredSuccessfully: false; error: Error; };"]}
@@ -1 +1 @@
1
- {"version":3,"file":"transferUpload.d.ts","sourceRoot":"","sources":["../../../src/uploader/transferUpload.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transferUpload.d.ts","sourceRoot":"","sources":["../../../src/uploader/transferUpload.ts"],"names":[],"mappings":"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"}
@@ -318,6 +318,7 @@ export default class TransferUpload {
318
318
  try {
319
319
  const encryptionDataAndIvSaltHex = await this.generateEncryptionDataAndIvSaltHmacHex(this.#info.e2eeKey);
320
320
  const request = {
321
+ dataRegion: this.#info.dataRegion,
321
322
  e2ee: Boolean(encryptionDataAndIvSaltHex),
322
323
  e2ee_keyhash: encryptionDataAndIvSaltHex?.ivSaltHmacHex,
323
324
  transfersize: this.totalSizeInBytes,