filemail-sdk 10.4.0 → 10.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (401) 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.d.ts.map +1 -1
  17. package/dist/src/autoDownloader/factory/nodeAutoDownloaderFactory.js +1 -0
  18. package/dist/src/autoDownloader/factory/nodeAutoDownloaderFactory.js.map +1 -1
  19. package/dist/src/autoDownloader/factory/nodeAutoDownloaderFactoryOptions.d.ts +1 -0
  20. package/dist/src/autoDownloader/factory/nodeAutoDownloaderFactoryOptions.d.ts.map +1 -1
  21. package/dist/src/autoDownloader/factory/nodeAutoDownloaderFactoryOptions.js.map +1 -1
  22. package/dist/src/autoDownloader/newInboxTransfersRetriever/newInboxTransfer.js.map +1 -1
  23. package/dist/src/autoDownloader/newInboxTransfersRetriever/newInboxTransfersRetriever.js.map +1 -1
  24. package/dist/src/autoDownloader/node/nodeAutoDownloaderStateSerializer.js.map +1 -1
  25. package/dist/src/autoDownloader/node/nodeTransferDownloaderFactory.js.map +1 -1
  26. package/dist/src/autoDownloader/state/autoDownloaderRecoverableState.js.map +1 -1
  27. package/dist/src/autoDownloader/state/autoDownloaderState.js.map +1 -1
  28. package/dist/src/autoDownloader/state/autoDownloaderStateRecoverableTransfer.js.map +1 -1
  29. package/dist/src/autoDownloader/state/autoDownloaderStateRunningTransfer.js.map +1 -1
  30. package/dist/src/autoDownloader/state/autoDownloaderStateSnapshot.js.map +1 -1
  31. package/dist/src/autoDownloader/transferDownloaderFactory.js.map +1 -1
  32. package/dist/src/autoDownloader/transferHandler/autoDownloaderNewTransferHandler.js.map +1 -1
  33. package/dist/src/autoDownloader/transferHandler/autoDownloaderRecoverableTransferHandler.js.map +1 -1
  34. package/dist/src/autoDownloader/transferHandler/autoDownloaderTransferHandlerBase.js.map +1 -1
  35. package/dist/src/client/downloader/downloaderCore.d.ts +2 -1
  36. package/dist/src/client/downloader/downloaderCore.d.ts.map +1 -1
  37. package/dist/src/client/downloader/downloaderCore.js +19 -9
  38. package/dist/src/client/downloader/downloaderCore.js.map +1 -1
  39. package/dist/src/client/downloader/node/nodeTransferDownloader.d.ts.map +1 -1
  40. package/dist/src/client/downloader/node/nodeTransferDownloader.js +4 -2
  41. package/dist/src/client/downloader/node/nodeTransferDownloader.js.map +1 -1
  42. package/dist/src/client/downloader/transferDownloader.js.map +1 -1
  43. package/dist/src/client/environmentVariables.js.map +1 -1
  44. package/dist/src/client/healthMonitor/events/eventArgs/healthMonitorHealthyEventArgs.js.map +1 -1
  45. package/dist/src/client/healthMonitor/events/eventArgs/healthMonitorUnhealthyEventArgs.js.map +1 -1
  46. package/dist/src/client/healthMonitor/events/transferHealthMonitorEvent.js.map +1 -1
  47. package/dist/src/client/healthMonitor/onlineChecker/nodeOnlineChecker.js.map +1 -1
  48. package/dist/src/client/healthMonitor/onlineChecker/onlineChecker.js.map +1 -1
  49. package/dist/src/client/healthMonitor/onlineChecker/webOnlineChecker.js.map +1 -1
  50. package/dist/src/client/healthMonitor/transferDownloaderHealthMonitor.js.map +1 -1
  51. package/dist/src/client/healthMonitor/transferHealthMonitorBase.js.map +1 -1
  52. package/dist/src/client/healthMonitor/transferUploaderHealthMonitor.js.map +1 -1
  53. package/dist/src/client/loggers/dummyLogger.js.map +1 -1
  54. package/dist/src/client/loggers/logger.js.map +1 -1
  55. package/dist/src/client/loggers/utils/logHealthyStatus.js.map +1 -1
  56. package/dist/src/client/node/nodeFileDetailsProvider.js.map +1 -1
  57. package/dist/src/client/uploader/node/nodeTransferUploader.d.ts.map +1 -1
  58. package/dist/src/client/uploader/node/nodeTransferUploader.js +10 -4
  59. package/dist/src/client/uploader/node/nodeTransferUploader.js.map +1 -1
  60. package/dist/src/client/uploader/transferUploader.js.map +1 -1
  61. package/dist/src/client/uploader/transferUploaderBase.js +1 -1
  62. package/dist/src/client/uploader/transferUploaderBase.js.map +1 -1
  63. package/dist/src/client/uploader/transferUploaderConfig.js.map +1 -1
  64. package/dist/src/client/uploader/utils/uploaderUtils.js.map +1 -1
  65. package/dist/src/client/uploader/web/webTransferUploader.d.ts +2 -2
  66. package/dist/src/client/uploader/web/webTransferUploader.d.ts.map +1 -1
  67. package/dist/src/client/uploader/web/webTransferUploader.js +7 -2
  68. package/dist/src/client/uploader/web/webTransferUploader.js.map +1 -1
  69. package/dist/src/client/uploader/web/webTransferUploaderConfig.d.ts +7 -0
  70. package/dist/src/client/uploader/web/webTransferUploaderConfig.d.ts.map +1 -0
  71. package/dist/src/client/uploader/web/webTransferUploaderConfig.js +2 -0
  72. package/dist/src/client/uploader/web/webTransferUploaderConfig.js.map +1 -0
  73. package/dist/src/downloader/api/fileServerDownloadClient.d.ts +2 -2
  74. package/dist/src/downloader/api/fileServerDownloadClient.d.ts.map +1 -1
  75. package/dist/src/downloader/api/fileServerDownloadClient.js.map +1 -1
  76. package/dist/src/downloader/api/fileServerDownloadStatusClient.d.ts +6 -0
  77. package/dist/src/downloader/api/fileServerDownloadStatusClient.d.ts.map +1 -0
  78. package/dist/src/downloader/api/fileServerDownloadStatusClient.js +2 -0
  79. package/dist/src/downloader/api/fileServerDownloadStatusClient.js.map +1 -0
  80. package/dist/src/downloader/api/node/nodeFileServerDownloadClient.d.ts.map +1 -1
  81. package/dist/src/downloader/api/node/nodeFileServerDownloadClient.js +8 -6
  82. package/dist/src/downloader/api/node/nodeFileServerDownloadClient.js.map +1 -1
  83. package/dist/src/downloader/api/node/nodeFileServerDownloadStatusClient.d.ts +10 -0
  84. package/dist/src/downloader/api/node/nodeFileServerDownloadStatusClient.d.ts.map +1 -0
  85. package/dist/src/downloader/api/node/nodeFileServerDownloadStatusClient.js +39 -0
  86. package/dist/src/downloader/api/node/nodeFileServerDownloadStatusClient.js.map +1 -0
  87. package/dist/src/downloader/chunkDownloader.d.ts +3 -2
  88. package/dist/src/downloader/chunkDownloader.d.ts.map +1 -1
  89. package/dist/src/downloader/chunkDownloader.js +6 -3
  90. package/dist/src/downloader/chunkDownloader.js.map +1 -1
  91. package/dist/src/downloader/downloadFolderResolver.js.map +1 -1
  92. package/dist/src/downloader/downloadLogger.js.map +1 -1
  93. package/dist/src/downloader/downloadOptions.d.ts +5 -0
  94. package/dist/src/downloader/downloadOptions.d.ts.map +1 -1
  95. package/dist/src/downloader/downloadOptions.js +5 -0
  96. package/dist/src/downloader/downloadOptions.js.map +1 -1
  97. package/dist/src/downloader/downloadStatus/downloadFileChunkProgress.js.map +1 -1
  98. package/dist/src/downloader/downloadStatus/downloadFileProgress.js.map +1 -1
  99. package/dist/src/downloader/downloadStatus/downloadFilePromise.js.map +1 -1
  100. package/dist/src/downloader/downloadStatus/downloadState.js.map +1 -1
  101. package/dist/src/downloader/downloadTracker.d.ts +2 -1
  102. package/dist/src/downloader/downloadTracker.d.ts.map +1 -1
  103. package/dist/src/downloader/downloadTracker.js +5 -4
  104. package/dist/src/downloader/downloadTracker.js.map +1 -1
  105. package/dist/src/downloader/dtos/downloadCommand.js.map +1 -1
  106. package/dist/src/downloader/dtos/downloadError.js.map +1 -1
  107. package/dist/src/downloader/dtos/downloadErrorCode.js.map +1 -1
  108. package/dist/src/downloader/dtos/downloadEvent.js.map +1 -1
  109. package/dist/src/downloader/dtos/downloadFileChunkInfo.js.map +1 -1
  110. package/dist/src/downloader/dtos/downloadFileInfo.js.map +1 -1
  111. package/dist/src/downloader/dtos/downloadFilesCommand.js.map +1 -1
  112. package/dist/src/downloader/dtos/downloadInfo.js.map +1 -1
  113. package/dist/src/downloader/dtos/downloadRegistrationMode.d.ts +2 -1
  114. package/dist/src/downloader/dtos/downloadRegistrationMode.d.ts.map +1 -1
  115. package/dist/src/downloader/dtos/downloadRegistrationMode.js +1 -0
  116. package/dist/src/downloader/dtos/downloadRegistrationMode.js.map +1 -1
  117. package/dist/src/downloader/dtos/downloadTrackerFileInfo.js.map +1 -1
  118. package/dist/src/downloader/dtos/downloadTrackerFileProgressInfo.js.map +1 -1
  119. package/dist/src/downloader/dtos/downloadTrackerProgressInfo.js.map +1 -1
  120. package/dist/src/downloader/dtos/downloadTrackingMetadata.d.ts +2 -0
  121. package/dist/src/downloader/dtos/downloadTrackingMetadata.d.ts.map +1 -1
  122. package/dist/src/downloader/dtos/downloadTrackingMetadata.js.map +1 -1
  123. package/dist/src/downloader/dtos/downloaderRestoredState.js.map +1 -1
  124. package/dist/src/downloader/eventArgs/chunkDownloadEventArgs.js.map +1 -1
  125. package/dist/src/downloader/eventArgs/chunkDownloadFailedEventArgs.js.map +1 -1
  126. package/dist/src/downloader/eventArgs/downloadCompletedEventArgs.js.map +1 -1
  127. package/dist/src/downloader/eventArgs/downloadEventArgs.js.map +1 -1
  128. package/dist/src/downloader/eventArgs/downloadMetadataDeterminedEventArgs.js.map +1 -1
  129. package/dist/src/downloader/eventArgs/downloadPauseEventArgs.js.map +1 -1
  130. package/dist/src/downloader/eventArgs/downloadTrackingFailedEventArgs.js.map +1 -1
  131. package/dist/src/downloader/eventArgs/fileDownloadEventArgs.js.map +1 -1
  132. package/dist/src/downloader/eventArgs/fileDownloadFailedEventArgs.js.map +1 -1
  133. package/dist/src/downloader/filesDownloader.d.ts +2 -1
  134. package/dist/src/downloader/filesDownloader.d.ts.map +1 -1
  135. package/dist/src/downloader/filesDownloader.js +30 -2
  136. package/dist/src/downloader/filesDownloader.js.map +1 -1
  137. package/dist/src/downloader/filesPreparer.js.map +1 -1
  138. package/dist/src/downloader/md5Provider/downloaderChunkMD5Provider.d.ts +6 -0
  139. package/dist/src/downloader/md5Provider/downloaderChunkMD5Provider.d.ts.map +1 -0
  140. package/dist/src/downloader/md5Provider/downloaderChunkMD5Provider.js +2 -0
  141. package/dist/src/downloader/md5Provider/downloaderChunkMD5Provider.js.map +1 -0
  142. package/dist/src/downloader/md5Provider/downloaderChunkMD5ProviderFactory.d.ts +7 -0
  143. package/dist/src/downloader/md5Provider/downloaderChunkMD5ProviderFactory.d.ts.map +1 -0
  144. package/dist/src/downloader/md5Provider/downloaderChunkMD5ProviderFactory.js +2 -0
  145. package/dist/src/downloader/md5Provider/downloaderChunkMD5ProviderFactory.js.map +1 -0
  146. package/dist/src/downloader/md5Provider/node/nodeOnDemandMD5Provider.d.ts +10 -0
  147. package/dist/src/downloader/md5Provider/node/nodeOnDemandMD5Provider.d.ts.map +1 -0
  148. package/dist/src/downloader/md5Provider/node/nodeOnDemandMD5Provider.js +36 -0
  149. package/dist/src/downloader/md5Provider/node/nodeOnDemandMD5Provider.js.map +1 -0
  150. package/dist/src/downloader/md5Provider/node/nodeOnDemandMD5ProviderFactory.d.ts +10 -0
  151. package/dist/src/downloader/md5Provider/node/nodeOnDemandMD5ProviderFactory.d.ts.map +1 -0
  152. package/dist/src/downloader/md5Provider/node/nodeOnDemandMD5ProviderFactory.js +14 -0
  153. package/dist/src/downloader/md5Provider/node/nodeOnDemandMD5ProviderFactory.js.map +1 -0
  154. package/dist/src/index.d.ts +11 -0
  155. package/dist/src/index.d.ts.map +1 -1
  156. package/dist/src/index.js +1 -0
  157. package/dist/src/index.js.map +1 -1
  158. package/dist/src/index.node.d.ts +5 -0
  159. package/dist/src/index.node.d.ts.map +1 -1
  160. package/dist/src/index.node.js +5 -0
  161. package/dist/src/index.node.js.map +1 -1
  162. package/dist/src/index.web.d.ts +5 -0
  163. package/dist/src/index.web.d.ts.map +1 -1
  164. package/dist/src/index.web.js +4 -0
  165. package/dist/src/index.web.js.map +1 -1
  166. package/dist/src/uploader/api/fileServerUploadClient.js.map +1 -1
  167. package/dist/src/uploader/api/node/nodeFileServerUploadClient.d.ts.map +1 -1
  168. package/dist/src/uploader/api/node/nodeFileServerUploadClient.js +1 -2
  169. package/dist/src/uploader/api/node/nodeFileServerUploadClient.js.map +1 -1
  170. package/dist/src/uploader/api/web/utils/axiosIdleTimeoutManager.js.map +1 -1
  171. package/dist/src/uploader/api/web/webFileServerUploadClient.d.ts.map +1 -1
  172. package/dist/src/uploader/api/web/webFileServerUploadClient.js +1 -2
  173. package/dist/src/uploader/api/web/webFileServerUploadClient.js.map +1 -1
  174. package/dist/src/uploader/chunkStreamProviderFactory/node/nodeFileDetailsUploaderChunkStreamProviderFactory.d.ts +9 -0
  175. package/dist/src/uploader/chunkStreamProviderFactory/node/nodeFileDetailsUploaderChunkStreamProviderFactory.d.ts.map +1 -0
  176. package/dist/src/uploader/chunkStreamProviderFactory/{nodeFileDetailsUploaderChunkStreamProviderFactory.js → node/nodeFileDetailsUploaderChunkStreamProviderFactory.js} +1 -1
  177. package/dist/src/uploader/chunkStreamProviderFactory/node/nodeFileDetailsUploaderChunkStreamProviderFactory.js.map +1 -0
  178. package/dist/src/uploader/chunkStreamProviderFactory/uploaderChunkStreamProviderFactory.d.ts +2 -2
  179. package/dist/src/uploader/chunkStreamProviderFactory/uploaderChunkStreamProviderFactory.d.ts.map +1 -1
  180. package/dist/src/uploader/chunkStreamProviderFactory/uploaderChunkStreamProviderFactory.js.map +1 -1
  181. package/dist/src/uploader/chunkStreamProviderFactory/web/webFileDetailsUploaderChunkStreamProviderFactory.d.ts +9 -0
  182. package/dist/src/uploader/chunkStreamProviderFactory/web/webFileDetailsUploaderChunkStreamProviderFactory.d.ts.map +1 -0
  183. package/dist/src/uploader/chunkStreamProviderFactory/{webFileDetailsUploaderChunkStreamProviderFactory.js → web/webFileDetailsUploaderChunkStreamProviderFactory.js} +1 -1
  184. package/dist/src/uploader/chunkStreamProviderFactory/web/webFileDetailsUploaderChunkStreamProviderFactory.js.map +1 -0
  185. package/dist/src/uploader/chunksIterator/chunksIterator.js.map +1 -1
  186. package/dist/src/uploader/eventArgs/fileAckFailedEventArgs.js.map +1 -1
  187. package/dist/src/uploader/eventArgs/fileChunkUploadCompletedEventArgs.js.map +1 -1
  188. package/dist/src/uploader/eventArgs/fileChunkUploadCompletedPartiallyEventArgs.js.map +1 -1
  189. package/dist/src/uploader/eventArgs/fileChunkUploadEventArgs.js.map +1 -1
  190. package/dist/src/uploader/eventArgs/fileChunkUploadFailedEventArgs.js.map +1 -1
  191. package/dist/src/uploader/eventArgs/fileChunkUploadProgressedEventArgs.js.map +1 -1
  192. package/dist/src/uploader/eventArgs/fileUploadEventArgs.js.map +1 -1
  193. package/dist/src/uploader/eventArgs/fileUploadFailedEventArgs.js.map +1 -1
  194. package/dist/src/uploader/eventArgs/filesBatchAckFailedEventArgs.js.map +1 -1
  195. package/dist/src/uploader/eventArgs/filesRegistrationBatchFailedEventArgs.js.map +1 -1
  196. package/dist/src/uploader/eventArgs/transferMetadataDeterminedEventArgs.js.map +1 -1
  197. package/dist/src/uploader/eventArgs/transferUploadCompletedEventArgs.js.map +1 -1
  198. package/dist/src/uploader/eventArgs/transferUploadProgressedEventArgs.js.map +1 -1
  199. package/dist/src/uploader/export/transferUploadExportData.js.map +1 -1
  200. package/dist/src/uploader/export/transferUploadExportState.js.map +1 -1
  201. package/dist/src/uploader/export/transferUploadMetadata.js.map +1 -1
  202. package/dist/src/uploader/fileChunksPlan.d.ts +8 -0
  203. package/dist/src/uploader/fileChunksPlan.d.ts.map +1 -0
  204. package/dist/src/uploader/fileChunksPlan.js +2 -0
  205. package/dist/src/uploader/fileChunksPlan.js.map +1 -0
  206. package/dist/src/uploader/md5Provider/md5ComputationStrategies/defaultMD5ComputationStrategyFactory.d.ts +10 -0
  207. package/dist/src/uploader/md5Provider/md5ComputationStrategies/defaultMD5ComputationStrategyFactory.d.ts.map +1 -0
  208. package/dist/src/uploader/md5Provider/md5ComputationStrategies/defaultMD5ComputationStrategyFactory.js +12 -0
  209. package/dist/src/uploader/md5Provider/md5ComputationStrategies/defaultMD5ComputationStrategyFactory.js.map +1 -0
  210. package/dist/src/uploader/md5Provider/md5ComputationStrategies/md5ComputationSession.d.ts +7 -0
  211. package/dist/src/uploader/md5Provider/md5ComputationStrategies/md5ComputationSession.d.ts.map +1 -0
  212. package/dist/src/uploader/md5Provider/md5ComputationStrategies/md5ComputationSession.js +2 -0
  213. package/dist/src/uploader/md5Provider/md5ComputationStrategies/md5ComputationSession.js.map +1 -0
  214. package/dist/src/uploader/md5Provider/md5ComputationStrategies/md5ComputationStrategy.d.ts +6 -0
  215. package/dist/src/uploader/md5Provider/md5ComputationStrategies/md5ComputationStrategy.d.ts.map +1 -0
  216. package/dist/src/uploader/md5Provider/md5ComputationStrategies/md5ComputationStrategy.js +2 -0
  217. package/dist/src/uploader/md5Provider/md5ComputationStrategies/md5ComputationStrategy.js.map +1 -0
  218. package/dist/src/uploader/md5Provider/md5ComputationStrategies/md5ComputationStrategyFactory.d.ts +6 -0
  219. package/dist/src/uploader/md5Provider/md5ComputationStrategies/md5ComputationStrategyFactory.d.ts.map +1 -0
  220. package/dist/src/uploader/md5Provider/md5ComputationStrategies/md5ComputationStrategyFactory.js +2 -0
  221. package/dist/src/uploader/md5Provider/md5ComputationStrategies/md5ComputationStrategyFactory.js.map +1 -0
  222. package/dist/src/uploader/md5Provider/md5ComputationStrategies/node/nodeAsyncMD5ComputationStrategy.d.ts +7 -0
  223. package/dist/src/uploader/md5Provider/md5ComputationStrategies/node/nodeAsyncMD5ComputationStrategy.d.ts.map +1 -0
  224. package/dist/src/uploader/md5Provider/md5ComputationStrategies/node/nodeAsyncMD5ComputationStrategy.js +14 -0
  225. package/dist/src/uploader/md5Provider/md5ComputationStrategies/node/nodeAsyncMD5ComputationStrategy.js.map +1 -0
  226. package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/computeBlobMD5.d.ts +2 -0
  227. package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/computeBlobMD5.d.ts.map +1 -0
  228. package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/computeBlobMD5.js +27 -0
  229. package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/computeBlobMD5.js.map +1 -0
  230. package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5.worker.d.ts +2 -0
  231. package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5.worker.d.ts.map +1 -0
  232. package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5.worker.js +5 -0
  233. package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5.worker.js.map +1 -0
  234. package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5WorkerMessages.d.ts +14 -0
  235. package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5WorkerMessages.d.ts.map +1 -0
  236. package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5WorkerMessages.js +2 -0
  237. package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5WorkerMessages.js.map +1 -0
  238. package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5WorkersManager.d.ts +17 -0
  239. package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5WorkersManager.d.ts.map +1 -0
  240. package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5WorkersManager.js +113 -0
  241. package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5WorkersManager.js.map +1 -0
  242. package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/registerMD5Worker.d.ts +7 -0
  243. package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/registerMD5Worker.d.ts.map +1 -0
  244. package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/registerMD5Worker.js +17 -0
  245. package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/registerMD5Worker.js.map +1 -0
  246. package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/webAsyncWebWorkerMD5ComputationStrategy.d.ts +9 -0
  247. package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/webAsyncWebWorkerMD5ComputationStrategy.d.ts.map +1 -0
  248. package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/webAsyncWebWorkerMD5ComputationStrategy.js +62 -0
  249. package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/webAsyncWebWorkerMD5ComputationStrategy.js.map +1 -0
  250. package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/webMD5ComputationStrategyFactory.d.ts +9 -0
  251. package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/webMD5ComputationStrategyFactory.d.ts.map +1 -0
  252. package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/webMD5ComputationStrategyFactory.js +41 -0
  253. package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/webMD5ComputationStrategyFactory.js.map +1 -0
  254. package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/webSyncMD5ComputationStrategy.d.ts +6 -0
  255. package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/webSyncMD5ComputationStrategy.d.ts.map +1 -0
  256. package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/webSyncMD5ComputationStrategy.js +9 -0
  257. package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/webSyncMD5ComputationStrategy.js.map +1 -0
  258. package/dist/src/uploader/md5Provider/precomputedMD5Provider.d.ts +27 -0
  259. package/dist/src/uploader/md5Provider/precomputedMD5Provider.d.ts.map +1 -0
  260. package/dist/src/uploader/md5Provider/precomputedMD5Provider.js +189 -0
  261. package/dist/src/uploader/md5Provider/precomputedMD5Provider.js.map +1 -0
  262. package/dist/src/uploader/md5Provider/uploaderMD5Provider.d.ts +28 -0
  263. package/dist/src/uploader/md5Provider/uploaderMD5Provider.d.ts.map +1 -0
  264. package/dist/src/uploader/md5Provider/uploaderMD5Provider.js +2 -0
  265. package/dist/src/uploader/md5Provider/uploaderMD5Provider.js.map +1 -0
  266. package/dist/src/uploader/options/transferUploadAppendInfo.js.map +1 -1
  267. package/dist/src/uploader/options/transferUploadConfig.js.map +1 -1
  268. package/dist/src/uploader/options/transferUploadInfo.js.map +1 -1
  269. package/dist/src/uploader/options/transferUploadInfoBase.js.map +1 -1
  270. package/dist/src/uploader/pauseController.js.map +1 -1
  271. package/dist/src/uploader/pendingFileAck.js.map +1 -1
  272. package/dist/src/uploader/registeredTransferFile.js.map +1 -1
  273. package/dist/src/uploader/state/continuousChunksCalculator.js.map +1 -1
  274. package/dist/src/uploader/state/readonlyTransferUploadStateFile.js.map +1 -1
  275. package/dist/src/uploader/state/readonlyTransferUploadStateFiles.js.map +1 -1
  276. package/dist/src/uploader/state/transferUploadProgressCalculator.js.map +1 -1
  277. package/dist/src/uploader/state/transferUploadState.js.map +1 -1
  278. package/dist/src/uploader/state/transferUploadStateFile.js.map +1 -1
  279. package/dist/src/uploader/state/transferUploadStateFiles.js.map +1 -1
  280. package/dist/src/uploader/transferFailureAbortReason.js.map +1 -1
  281. package/dist/src/uploader/transferFilesRegistrar.js.map +1 -1
  282. package/dist/src/uploader/transferUpload.d.ts +4 -2
  283. package/dist/src/uploader/transferUpload.d.ts.map +1 -1
  284. package/dist/src/uploader/transferUpload.js +27 -9
  285. package/dist/src/uploader/transferUpload.js.map +1 -1
  286. package/dist/src/uploader/transferUploadAcker.js.map +1 -1
  287. package/dist/src/uploader/transferUploadError.js.map +1 -1
  288. package/dist/src/uploader/transferUploadEvent.js.map +1 -1
  289. package/dist/src/utils/api/apiClient.js.map +1 -1
  290. package/dist/src/utils/api/apiClientBase.js.map +1 -1
  291. package/dist/src/utils/api/apiError.js.map +1 -1
  292. package/dist/src/utils/api/apiFilemail449Error.js.map +1 -1
  293. package/dist/src/utils/api/apiFilemailError.js.map +1 -1
  294. package/dist/src/utils/api/dtos/ackTransferFilesRequest.js.map +1 -1
  295. package/dist/src/utils/api/dtos/ackTransferFilesResponse.js.map +1 -1
  296. package/dist/src/utils/api/dtos/baseResponse.js.map +1 -1
  297. package/dist/src/utils/api/dtos/cancelTransferRequest.js.map +1 -1
  298. package/dist/src/utils/api/dtos/finalizeTransferRequest.js.map +1 -1
  299. package/dist/src/utils/api/dtos/finalizeTransferResponse.js.map +1 -1
  300. package/dist/src/utils/api/dtos/getCompanyResponse.js.map +1 -1
  301. package/dist/src/utils/api/dtos/getCompressedFileMetadataResponse.js.map +1 -1
  302. package/dist/src/utils/api/dtos/getInboxTransfersRequest.js.map +1 -1
  303. package/dist/src/utils/api/dtos/getInboxTransfersResponse.js.map +1 -1
  304. package/dist/src/utils/api/dtos/getRangehashResponse.js.map +1 -1
  305. package/dist/src/utils/api/dtos/getTransferRequest.js.map +1 -1
  306. package/dist/src/utils/api/dtos/getTransferResponse.d.ts +1 -0
  307. package/dist/src/utils/api/dtos/getTransferResponse.d.ts.map +1 -1
  308. package/dist/src/utils/api/dtos/getTransferResponse.js.map +1 -1
  309. package/dist/src/utils/api/dtos/initializeTransferRequest.js.map +1 -1
  310. package/dist/src/utils/api/dtos/initializeTransferResponse.js.map +1 -1
  311. package/dist/src/utils/api/dtos/loginRequest.js.map +1 -1
  312. package/dist/src/utils/api/dtos/loginResponse.js.map +1 -1
  313. package/dist/src/utils/api/dtos/registerFileDownloadRequest.js.map +1 -1
  314. package/dist/src/utils/api/dtos/registerTransferDownloadRequest.js.map +1 -1
  315. package/dist/src/utils/api/dtos/registerTransferFilesRequest.js.map +1 -1
  316. package/dist/src/utils/api/dtos/registerTransferFilesResponse.js.map +1 -1
  317. package/dist/src/utils/api/dtos/resetTransferRequest.js.map +1 -1
  318. package/dist/src/utils/api/dtos/sendFileChunkRequest.d.ts +1 -0
  319. package/dist/src/utils/api/dtos/sendFileChunkRequest.d.ts.map +1 -1
  320. package/dist/src/utils/api/dtos/sendFileChunkRequest.js.map +1 -1
  321. package/dist/src/utils/api/dtos/transferCustomFieldDto.js.map +1 -1
  322. package/dist/src/utils/api/dtos/transferFileDto.js.map +1 -1
  323. package/dist/src/utils/api/fileServerClientFactory.d.ts +2 -0
  324. package/dist/src/utils/api/fileServerClientFactory.d.ts.map +1 -1
  325. package/dist/src/utils/api/fileServerClientFactory.js.map +1 -1
  326. package/dist/src/utils/api/node/gotWorkarounds.js.map +1 -1
  327. package/dist/src/utils/api/node/nodeApiClient.js.map +1 -1
  328. package/dist/src/utils/api/node/nodeClientBase.js.map +1 -1
  329. package/dist/src/utils/api/node/nodeFileServerClientFactory.d.ts +2 -0
  330. package/dist/src/utils/api/node/nodeFileServerClientFactory.d.ts.map +1 -1
  331. package/dist/src/utils/api/node/nodeFileServerClientFactory.js +4 -0
  332. package/dist/src/utils/api/node/nodeFileServerClientFactory.js.map +1 -1
  333. package/dist/src/utils/api/node/nodeFileserverClientBase.js.map +1 -1
  334. package/dist/src/utils/api/urlUtil.js.map +1 -1
  335. package/dist/src/utils/api/web/webApiClient.js.map +1 -1
  336. package/dist/src/utils/api/web/webClientBase.js.map +1 -1
  337. package/dist/src/utils/api/web/webFileServerClientFactory.d.ts +2 -0
  338. package/dist/src/utils/api/web/webFileServerClientFactory.d.ts.map +1 -1
  339. package/dist/src/utils/api/web/webFileServerClientFactory.js +3 -0
  340. package/dist/src/utils/api/web/webFileServerClientFactory.js.map +1 -1
  341. package/dist/src/utils/api/web/webFileserverClientBase.js.map +1 -1
  342. package/dist/src/utils/concurrencyController/concurrencyController.js.map +1 -1
  343. package/dist/src/utils/concurrencyController/concurrencyReleaser.js.map +1 -1
  344. package/dist/src/utils/concurrencyController/transferConcurrencyController.js.map +1 -1
  345. package/dist/src/utils/crypto/cryptographyProvider.js.map +1 -1
  346. package/dist/src/utils/crypto/node/nodeCryptographyProvider.js.map +1 -1
  347. package/dist/src/utils/crypto/web/webCryptographyProvider.js.map +1 -1
  348. package/dist/src/utils/dateAndTime/simpleDateFormatter.js.map +1 -1
  349. package/dist/src/utils/events/chunkProgressEvent.js.map +1 -1
  350. package/dist/src/utils/events/eventsEngine.js.map +1 -1
  351. package/dist/src/utils/events/node/nodeEventsEngine.js.map +1 -1
  352. package/dist/src/utils/events/web/webEventsEngine.js.map +1 -1
  353. package/dist/src/utils/fileSystem/chunkStreamEncryptionData.d.ts +6 -0
  354. package/dist/src/utils/fileSystem/chunkStreamEncryptionData.d.ts.map +1 -0
  355. package/dist/src/utils/fileSystem/chunkStreamEncryptionData.js +2 -0
  356. package/dist/src/utils/fileSystem/chunkStreamEncryptionData.js.map +1 -0
  357. package/dist/src/utils/fileSystem/chunkStreamProvider.d.ts +0 -5
  358. package/dist/src/utils/fileSystem/chunkStreamProvider.d.ts.map +1 -1
  359. package/dist/src/utils/fileSystem/chunkStreamProvider.js.map +1 -1
  360. package/dist/src/utils/fileSystem/chunkStreamProviderFactory.d.ts +2 -2
  361. package/dist/src/utils/fileSystem/chunkStreamProviderFactory.d.ts.map +1 -1
  362. package/dist/src/utils/fileSystem/chunkStreamProviderFactory.js.map +1 -1
  363. package/dist/src/utils/fileSystem/fileDetails.js.map +1 -1
  364. package/dist/src/utils/fileSystem/fileSystemService.js.map +1 -1
  365. package/dist/src/utils/fileSystem/fsError.js.map +1 -1
  366. package/dist/src/utils/fileSystem/node/nodeChunkStreamProvider.d.ts +2 -3
  367. package/dist/src/utils/fileSystem/node/nodeChunkStreamProvider.d.ts.map +1 -1
  368. package/dist/src/utils/fileSystem/node/nodeChunkStreamProvider.js +9 -28
  369. package/dist/src/utils/fileSystem/node/nodeChunkStreamProvider.js.map +1 -1
  370. package/dist/src/utils/fileSystem/node/nodeChunkStreamProviderFactory.d.ts +2 -2
  371. package/dist/src/utils/fileSystem/node/nodeChunkStreamProviderFactory.d.ts.map +1 -1
  372. package/dist/src/utils/fileSystem/node/nodeChunkStreamProviderFactory.js +1 -1
  373. package/dist/src/utils/fileSystem/node/nodeChunkStreamProviderFactory.js.map +1 -1
  374. package/dist/src/utils/fileSystem/node/nodeFileDetails.js.map +1 -1
  375. package/dist/src/utils/fileSystem/node/nodeFileSystemService.js.map +1 -1
  376. package/dist/src/utils/fileSystem/parsedPath.js.map +1 -1
  377. package/dist/src/utils/fileSystem/web/chunkStreamProvider/webChunkStreamEncrypter.js.map +1 -1
  378. package/dist/src/utils/fileSystem/web/chunkStreamProvider/webChunkStreamProvider.d.ts +2 -3
  379. package/dist/src/utils/fileSystem/web/chunkStreamProvider/webChunkStreamProvider.d.ts.map +1 -1
  380. package/dist/src/utils/fileSystem/web/chunkStreamProvider/webChunkStreamProvider.js +0 -19
  381. package/dist/src/utils/fileSystem/web/chunkStreamProvider/webChunkStreamProvider.js.map +1 -1
  382. package/dist/src/utils/fileSystem/web/webChunkStreamProviderFactory.d.ts +2 -2
  383. package/dist/src/utils/fileSystem/web/webChunkStreamProviderFactory.d.ts.map +1 -1
  384. package/dist/src/utils/fileSystem/web/webChunkStreamProviderFactory.js +1 -1
  385. package/dist/src/utils/fileSystem/web/webChunkStreamProviderFactory.js.map +1 -1
  386. package/dist/src/utils/fileSystem/web/webFileDetails.js.map +1 -1
  387. package/dist/src/utils/jsonParsing.js.map +1 -1
  388. package/dist/src/utils/logging/logEventPropertyNames.js.map +1 -1
  389. package/dist/src/utils/mergeAbortAndPauseSignals.js.map +1 -1
  390. package/dist/src/utils/networking/throttlingOptions.js.map +1 -1
  391. package/dist/src/utils/promiseAll.js.map +1 -1
  392. package/dist/src/utils/types/transferStatus.js.map +1 -1
  393. package/dist/src/utils/uint8ArrayUtils.js.map +1 -1
  394. package/package.json +80 -79
  395. package/readme.md +27 -27
  396. package/dist/src/uploader/chunkStreamProviderFactory/nodeFileDetailsUploaderChunkStreamProviderFactory.d.ts +0 -9
  397. package/dist/src/uploader/chunkStreamProviderFactory/nodeFileDetailsUploaderChunkStreamProviderFactory.d.ts.map +0 -1
  398. package/dist/src/uploader/chunkStreamProviderFactory/nodeFileDetailsUploaderChunkStreamProviderFactory.js.map +0 -1
  399. package/dist/src/uploader/chunkStreamProviderFactory/webFileDetailsUploaderChunkStreamProviderFactory.d.ts +0 -9
  400. package/dist/src/uploader/chunkStreamProviderFactory/webFileDetailsUploaderChunkStreamProviderFactory.d.ts.map +0 -1
  401. package/dist/src/uploader/chunkStreamProviderFactory/webFileDetailsUploaderChunkStreamProviderFactory.js.map +0 -1
@@ -0,0 +1,41 @@
1
+ import WebAsyncWebWorkerMD5ComputationStrategy from "./webAsyncWebWorkerMD5ComputationStrategy.js";
2
+ import WebSyncMD5ComputationStrategy from "./webSyncMD5ComputationStrategy.js";
3
+ import MD5WebWorkersManager from "./md5WebWorker/md5WorkersManager.js";
4
+ export default class WebMD5ComputationStrategyFactory {
5
+ #createWorker;
6
+ #workersCount;
7
+ #onFallback;
8
+ constructor(createWorker, workersCount, onFallback) {
9
+ if (!Number.isSafeInteger(workersCount) || workersCount < 1)
10
+ throw new Error(`MD5 workers count must be a positive integer`);
11
+ this.#createWorker = createWorker;
12
+ this.#workersCount = workersCount;
13
+ this.#onFallback = onFallback;
14
+ }
15
+ async createSession(abortSignal) {
16
+ abortSignal?.throwIfAborted();
17
+ let workersManager;
18
+ const dispose = () => {
19
+ workersManager?.dispose();
20
+ workersManager = undefined;
21
+ };
22
+ try {
23
+ workersManager = new MD5WebWorkersManager(this.#createWorker);
24
+ await workersManager.createWorkers(this.#workersCount, abortSignal);
25
+ abortSignal?.throwIfAborted();
26
+ const strategy = new WebAsyncWebWorkerMD5ComputationStrategy(workersManager);
27
+ return { strategy, dispose };
28
+ }
29
+ catch (error) {
30
+ dispose();
31
+ if (abortSignal?.aborted)
32
+ throw abortSignal.reason ?? new Error(`Aborted`);
33
+ this.#onFallback(error instanceof Error ? error : new Error(String(error)));
34
+ return this.getSyncStrategy();
35
+ }
36
+ }
37
+ getSyncStrategy() {
38
+ return { strategy: new WebSyncMD5ComputationStrategy(), dispose: () => { } };
39
+ }
40
+ }
41
+ //# sourceMappingURL=webMD5ComputationStrategyFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webMD5ComputationStrategyFactory.js","sourceRoot":"","sources":["../../../../../../src/uploader/md5Provider/md5ComputationStrategies/web/webMD5ComputationStrategyFactory.ts"],"names":[],"mappings":"AAAA,OAAO,uCAAuC,MAAM,8CAA8C,CAAC;AACnG,OAAO,6BAA6B,MAAM,oCAAoC,CAAC;AAC/E,OAAO,oBAAoB,MAAM,qCAAqC,CAAC;AAKvE,MAAM,CAAC,OAAO,OAAO,gCAAgC;IACxC,aAAa,CAAe;IAC5B,aAAa,CAAS;IACtB,WAAW,CAAyB;IAE7C,YAAY,YAA0B,EAAE,YAAoB,EAAE,UAAkC;QAC5F,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,YAAY,GAAG,CAAC;YACvD,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAEpE,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAClC,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAClC,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,WAAyB;QACzC,WAAW,EAAE,cAAc,EAAE,CAAC;QAE9B,IAAI,cAAgD,CAAC;QAErD,MAAM,OAAO,GAAG,GAAG,EAAE;YACjB,cAAc,EAAE,OAAO,EAAE,CAAC;YAC1B,cAAc,GAAG,SAAS,CAAC;QAC/B,CAAC,CAAC;QAEF,IAAI,CAAC;YACD,cAAc,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAE9D,MAAM,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;YAEpE,WAAW,EAAE,cAAc,EAAE,CAAC;YAE9B,MAAM,QAAQ,GAAG,IAAI,uCAAuC,CAAC,cAAc,CAAC,CAAC;YAE7E,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;QACjC,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YACX,OAAO,EAAE,CAAC;YAEV,IAAI,WAAW,EAAE,OAAO;gBACpB,MAAM,WAAW,CAAC,MAAM,IAAI,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;YAErD,IAAI,CAAC,WAAW,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAE5E,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;QAClC,CAAC;IACL,CAAC;IAEO,eAAe;QACnB,OAAO,EAAE,QAAQ,EAAE,IAAI,6BAA6B,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;IACjF,CAAC;CACJ","sourcesContent":["import WebAsyncWebWorkerMD5ComputationStrategy from \"./webAsyncWebWorkerMD5ComputationStrategy.js\";\r\nimport WebSyncMD5ComputationStrategy from \"./webSyncMD5ComputationStrategy.js\";\r\nimport MD5WebWorkersManager from \"./md5WebWorker/md5WorkersManager.js\";\r\n\r\nimport type MD5ComputationStrategyFactory from \"../md5ComputationStrategyFactory.js\";\r\nimport type MD5ComputationSession from \"../md5ComputationSession.js\";\r\n\r\nexport default class WebMD5ComputationStrategyFactory implements MD5ComputationStrategyFactory {\r\n readonly #createWorker: () => Worker;\r\n readonly #workersCount: number;\r\n readonly #onFallback: (error: Error) => void;\r\n\r\n constructor(createWorker: () => Worker, workersCount: number, onFallback: (error: Error) => void) {\r\n if (!Number.isSafeInteger(workersCount) || workersCount < 1)\r\n throw new Error(`MD5 workers count must be a positive integer`);\r\n\r\n this.#createWorker = createWorker;\r\n this.#workersCount = workersCount;\r\n this.#onFallback = onFallback;\r\n }\r\n\r\n async createSession(abortSignal?: AbortSignal): Promise<MD5ComputationSession> {\r\n abortSignal?.throwIfAborted();\r\n\r\n let workersManager: MD5WebWorkersManager | undefined;\r\n\r\n const dispose = () => {\r\n workersManager?.dispose();\r\n workersManager = undefined;\r\n };\r\n\r\n try {\r\n workersManager = new MD5WebWorkersManager(this.#createWorker);\r\n\r\n await workersManager.createWorkers(this.#workersCount, abortSignal);\r\n\r\n abortSignal?.throwIfAborted();\r\n\r\n const strategy = new WebAsyncWebWorkerMD5ComputationStrategy(workersManager);\r\n\r\n return { strategy, dispose };\r\n }\r\n catch (error) {\r\n dispose();\r\n\r\n if (abortSignal?.aborted)\r\n throw abortSignal.reason ?? new Error(`Aborted`);\r\n\r\n this.#onFallback(error instanceof Error ? error : new Error(String(error)));\r\n\r\n return this.getSyncStrategy();\r\n }\r\n }\r\n\r\n private getSyncStrategy(): MD5ComputationSession | PromiseLike<MD5ComputationSession> {\r\n return { strategy: new WebSyncMD5ComputationStrategy(), dispose: () => { } };\r\n }\r\n}"]}
@@ -0,0 +1,6 @@
1
+ import type MD5ComputationStrategy from "../md5ComputationStrategy.js";
2
+ import type ChunkStreamProvider from "../../../../utils/fileSystem/chunkStreamProvider.js";
3
+ export default class WebSyncMD5ComputationStrategy implements MD5ComputationStrategy {
4
+ computeMD5(chunkStreamProvider: ChunkStreamProvider, format: string, _abortSignal?: AbortSignal): Promise<string>;
5
+ }
6
+ //# sourceMappingURL=webSyncMD5ComputationStrategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webSyncMD5ComputationStrategy.d.ts","sourceRoot":"","sources":["../../../../../../src/uploader/md5Provider/md5ComputationStrategies/web/webSyncMD5ComputationStrategy.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,sBAAsB,MAAM,8BAA8B,CAAC;AACvE,OAAO,KAAK,mBAAmB,MAAM,qDAAqD,CAAC;AAE3F,MAAM,CAAC,OAAO,OAAO,6BAA8B,YAAW,sBAAsB;IAE1E,UAAU,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;CAK1H"}
@@ -0,0 +1,9 @@
1
+ import computeBlobMD5 from "./computeBlobMD5.js";
2
+ export default class WebSyncMD5ComputationStrategy {
3
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
4
+ async computeMD5(chunkStreamProvider, format, _abortSignal) {
5
+ const chunkBlob = await chunkStreamProvider.getChunkBlob();
6
+ return await computeBlobMD5(chunkBlob, format);
7
+ }
8
+ }
9
+ //# sourceMappingURL=webSyncMD5ComputationStrategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webSyncMD5ComputationStrategy.js","sourceRoot":"","sources":["../../../../../../src/uploader/md5Provider/md5ComputationStrategies/web/webSyncMD5ComputationStrategy.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,qBAAqB,CAAC;AAKjD,MAAM,CAAC,OAAO,OAAO,6BAA6B;IAC9C,6DAA6D;IAC7D,KAAK,CAAC,UAAU,CAAC,mBAAwC,EAAE,MAAc,EAAE,YAA0B;QACjG,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAC,YAAY,EAAE,CAAC;QAE3D,OAAO,MAAM,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;CACJ","sourcesContent":["import computeBlobMD5 from \"./computeBlobMD5.js\";\r\n\r\nimport type MD5ComputationStrategy from \"../md5ComputationStrategy.js\";\r\nimport type ChunkStreamProvider from \"../../../../utils/fileSystem/chunkStreamProvider.js\";\r\n\r\nexport default class WebSyncMD5ComputationStrategy implements MD5ComputationStrategy {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n async computeMD5(chunkStreamProvider: ChunkStreamProvider, format: string, _abortSignal?: AbortSignal): Promise<string> {\r\n const chunkBlob = await chunkStreamProvider.getChunkBlob();\r\n\r\n return await computeBlobMD5(chunkBlob, format);\r\n }\r\n}"]}
@@ -0,0 +1,27 @@
1
+ import UploaderChunkStreamProviderFactory from "../chunkStreamProviderFactory/uploaderChunkStreamProviderFactory.js";
2
+ import UploaderMD5Provider, { UploaderMD5ProviderFileToBeMD5Hashed } from "./uploaderMD5Provider.js";
3
+ import ChunkStreamEncryptionData from "../../utils/fileSystem/chunkStreamEncryptionData.js";
4
+ import ConcurrencyController from "../../utils/concurrencyController/concurrencyController.js";
5
+ import FileDetails from "../../utils/fileSystem/fileDetails.js";
6
+ import type MD5ComputationStrategyFactory from "./md5ComputationStrategies/md5ComputationStrategyFactory.js";
7
+ export default class PrecomputedMD5Provider<T extends FileDetails> implements UploaderMD5Provider<T> {
8
+ #private;
9
+ constructor(md5ComputationStrategyFactory: MD5ComputationStrategyFactory, format: string, chunkStreamProviderFactory: UploaderChunkStreamProviderFactory<T>, concurrencyController: ConcurrencyController);
10
+ start(files: UploaderMD5ProviderFileToBeMD5Hashed<T>[], encryptionData: ChunkStreamEncryptionData | undefined, abortSignal?: AbortSignal): Promise<void>;
11
+ private clear;
12
+ private addAbortSignalListener;
13
+ private throwIfEncryptionDataIsNotValid;
14
+ private precomputeAllFiles;
15
+ private precomputeChunks;
16
+ private precomputeChunkMd5;
17
+ private getChunkError;
18
+ private createAbortError;
19
+ private setComputationResult;
20
+ private shouldStopProcessing;
21
+ stop(): Promise<void>;
22
+ private notifyObservers;
23
+ private notifyAndRemoveObserverIfResultExists;
24
+ private removeObserver;
25
+ getMd5Checksum(file: T, chunkStartPosition: number): Promise<string>;
26
+ }
27
+ //# sourceMappingURL=precomputedMD5Provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"precomputedMD5Provider.d.ts","sourceRoot":"","sources":["../../../../src/uploader/md5Provider/precomputedMD5Provider.ts"],"names":[],"mappings":"AAAA,OAAO,kCAAkC,MAAM,qEAAqE,CAAC;AACrH,OAAO,mBAAmB,EAAE,EAA6C,oCAAoC,EAAE,MAAM,0BAA0B,CAAC;AAChJ,OAAO,yBAAyB,MAAM,qDAAqD,CAAC;AAC5F,OAAO,qBAAqB,MAAM,4DAA4D,CAAC;AAI/F,OAAO,WAAW,MAAM,uCAAuC,CAAC;AAIhE,OAAO,KAAK,6BAA6B,MAAM,6DAA6D,CAAC;AAG7G,MAAM,CAAC,OAAO,OAAO,sBAAsB,CAAC,CAAC,SAAS,WAAW,CAAE,YAAW,mBAAmB,CAAC,CAAC,CAAC;;gBAoBpF,6BAA6B,EAAE,6BAA6B,EAAE,MAAM,EAAE,MAAM,EAAE,0BAA0B,EAAE,kCAAkC,CAAC,CAAC,CAAC,EAAE,qBAAqB,EAAE,qBAAqB;IAgBnM,KAAK,CAAC,KAAK,EAAE,oCAAoC,CAAC,CAAC,CAAC,EAAE,EAAE,cAAc,EAAE,yBAAyB,GAAG,SAAS,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IA8B9J,OAAO,CAAC,KAAK;IAMb,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,+BAA+B;YAUzB,kBAAkB;YAoBlB,gBAAgB;YAkChB,kBAAkB;IAyBhC,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,oBAAoB;IAItB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,qCAAqC;IA2B7C,OAAO,CAAC,cAAc;IAIhB,cAAc,CAAC,IAAI,EAAE,CAAC,EAAE,kBAAkB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAW7E"}
@@ -0,0 +1,189 @@
1
+ import FsError from "../../utils/fileSystem/fsError.js";
2
+ import { promiseAllSettled } from "../../utils/promiseAll.js";
3
+ export default class PrecomputedMD5Provider {
4
+ #md5ComputationStrategyFactory;
5
+ #format;
6
+ #isRunning = false;
7
+ #isFinished = false;
8
+ #isError = undefined;
9
+ #mainLoopPromise;
10
+ #internalAbortController;
11
+ #computedMD5s = new Map();
12
+ #observers = new Set();
13
+ #encryptionData;
14
+ #chunkStreamProviderFactory;
15
+ #concurrencyController;
16
+ constructor(md5ComputationStrategyFactory, format, chunkStreamProviderFactory, concurrencyController) {
17
+ if (!md5ComputationStrategyFactory)
18
+ throw new Error(`MD5 computation strategy factory is undefined`);
19
+ if (!format || format.length === 0)
20
+ throw new Error(`MD5 format is incorrect`);
21
+ if (!chunkStreamProviderFactory)
22
+ throw new Error(`Chunk stream provider factory is undefined`);
23
+ if (!concurrencyController)
24
+ throw new Error(`Concurrency controller is undefined`);
25
+ this.#md5ComputationStrategyFactory = md5ComputationStrategyFactory;
26
+ this.#format = format;
27
+ this.#chunkStreamProviderFactory = chunkStreamProviderFactory;
28
+ this.#concurrencyController = concurrencyController;
29
+ }
30
+ async start(files, encryptionData, abortSignal) {
31
+ try {
32
+ this.clear();
33
+ this.#encryptionData = encryptionData;
34
+ this.throwIfEncryptionDataIsNotValid();
35
+ this.#isRunning = true;
36
+ this.#internalAbortController = new AbortController();
37
+ this.addAbortSignalListener(abortSignal);
38
+ this.#mainLoopPromise = this.precomputeAllFiles(files);
39
+ await this.#mainLoopPromise;
40
+ this.#isFinished = !this.#internalAbortController.signal.aborted;
41
+ }
42
+ catch (error) {
43
+ this.#isError = new Error(`Unhandled error occured in WebPrecomputedMD5Provider. See 'cause' for more details`, { cause: error });
44
+ }
45
+ finally {
46
+ this.#isRunning = false;
47
+ this.notifyObservers();
48
+ }
49
+ }
50
+ clear() {
51
+ this.#computedMD5s.clear();
52
+ this.#isFinished = false;
53
+ this.#isError = undefined;
54
+ }
55
+ addAbortSignalListener(abortSignal) {
56
+ const internalAbortController = this.#internalAbortController;
57
+ if (abortSignal?.aborted)
58
+ internalAbortController.abort();
59
+ else
60
+ abortSignal?.addEventListener(`abort`, () => internalAbortController.abort(), { once: true });
61
+ }
62
+ throwIfEncryptionDataIsNotValid() {
63
+ if (!this.#encryptionData)
64
+ return;
65
+ if (this.#encryptionData.iv.length !== 16)
66
+ throw new FsError(`Encryption IV must be 16 bytes long`);
67
+ if (this.#encryptionData.key.length !== 32)
68
+ throw new FsError(`Encryption key must be 32 bytes long`);
69
+ }
70
+ async precomputeAllFiles(files) {
71
+ let session;
72
+ try {
73
+ if (this.shouldStopProcessing())
74
+ return;
75
+ session = await this.#md5ComputationStrategyFactory.createSession(this.#internalAbortController?.signal);
76
+ await this.precomputeChunks(files, session.strategy);
77
+ }
78
+ catch (error) {
79
+ if (!this.#internalAbortController?.signal.aborted)
80
+ throw error;
81
+ }
82
+ finally {
83
+ session?.dispose();
84
+ }
85
+ }
86
+ async precomputeChunks(files, strategy) {
87
+ const ongoingChunkMD5Computations = new Set();
88
+ try {
89
+ for (const file of files) {
90
+ for (const chunk of file.chunksIterator) {
91
+ const releaseSemaphore = await this.#concurrencyController.acquire();
92
+ if (this.shouldStopProcessing()) {
93
+ releaseSemaphore();
94
+ break;
95
+ }
96
+ const chunkMD5ComputingPromise = this.precomputeChunkMd5(file.file, chunk.startPosition, chunk.sizeInBytes, releaseSemaphore, strategy);
97
+ const trackedChunkUploadPromise = chunkMD5ComputingPromise.finally(() => {
98
+ ongoingChunkMD5Computations.delete(trackedChunkUploadPromise);
99
+ });
100
+ ongoingChunkMD5Computations.add(trackedChunkUploadPromise);
101
+ if (this.shouldStopProcessing())
102
+ break;
103
+ }
104
+ if (this.shouldStopProcessing())
105
+ break;
106
+ }
107
+ }
108
+ finally {
109
+ await promiseAllSettled(Array.from(ongoingChunkMD5Computations));
110
+ }
111
+ }
112
+ async precomputeChunkMd5(file, chunkStartPosition, chunkSizeInBytes, releaseSemaphore, strategy) {
113
+ let chunkStreamProvider;
114
+ try {
115
+ chunkStreamProvider = this.#chunkStreamProviderFactory.createChunkStreamProvider(file, chunkStartPosition, chunkSizeInBytes, this.#encryptionData);
116
+ const md5 = await strategy.computeMD5(chunkStreamProvider, this.#format, this.#internalAbortController?.signal);
117
+ this.setComputationResult(file.externalId, chunkStartPosition, { isSuccess: true, md5 });
118
+ }
119
+ catch (error) {
120
+ const chunkError = this.getChunkError(error);
121
+ this.setComputationResult(file.externalId, chunkStartPosition, { isSuccess: false, error: chunkError });
122
+ }
123
+ finally {
124
+ releaseSemaphore();
125
+ if (chunkStreamProvider && !chunkStreamProvider.isReleased)
126
+ await chunkStreamProvider.release().catch(() => { });
127
+ this.notifyObservers();
128
+ }
129
+ }
130
+ getChunkError(error) {
131
+ if (this.#internalAbortController?.signal?.aborted)
132
+ return this.createAbortError(this.#internalAbortController?.signal);
133
+ if (error instanceof FsError)
134
+ return error;
135
+ return new FsError(`ComputingFileMd5ChecksumException`, { cause: error });
136
+ }
137
+ createAbortError(abortSignal) {
138
+ if (abortSignal.reason instanceof Error)
139
+ return abortSignal.reason;
140
+ return new Error(`Aborted`);
141
+ }
142
+ setComputationResult(fileId, chunkStartPosition, result) {
143
+ if (!this.#computedMD5s.has(fileId))
144
+ this.#computedMD5s.set(fileId, new Map());
145
+ this.#computedMD5s.get(fileId).set(chunkStartPosition, result);
146
+ }
147
+ shouldStopProcessing() {
148
+ return this.#internalAbortController?.signal.aborted === true || this.#isError;
149
+ }
150
+ async stop() {
151
+ this.#internalAbortController?.abort();
152
+ await this.#mainLoopPromise;
153
+ }
154
+ notifyObservers() {
155
+ this.#observers.forEach(observer => this.notifyAndRemoveObserverIfResultExists(observer));
156
+ }
157
+ notifyAndRemoveObserverIfResultExists(observer) {
158
+ const result = this.#computedMD5s.get(observer.fileId)?.get(observer.chunkStartPosition);
159
+ if (result) {
160
+ if (result.isSuccess)
161
+ observer.resolve(result.md5);
162
+ else
163
+ observer.reject(result.error);
164
+ this.removeObserver(observer);
165
+ return;
166
+ }
167
+ if (this.#isRunning)
168
+ return;
169
+ if (this.#isError)
170
+ observer.reject(this.#isError);
171
+ else if (this.#isFinished)
172
+ observer.reject(new Error(`MD5 provider has never computed MD5 for this chunk`));
173
+ else
174
+ observer.reject(new Error(`MD5s precomputing failed`));
175
+ this.removeObserver(observer);
176
+ }
177
+ removeObserver(observer) {
178
+ this.#observers.delete(observer);
179
+ }
180
+ async getMd5Checksum(file, chunkStartPosition) {
181
+ const promise = new Promise((resolve, reject) => {
182
+ const observer = { fileId: file.externalId, chunkStartPosition, resolve, reject };
183
+ this.#observers.add(observer);
184
+ this.notifyAndRemoveObserverIfResultExists(observer);
185
+ });
186
+ return promise;
187
+ }
188
+ }
189
+ //# sourceMappingURL=precomputedMD5Provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"precomputedMD5Provider.js","sourceRoot":"","sources":["../../../../src/uploader/md5Provider/precomputedMD5Provider.ts"],"names":[],"mappings":"AAIA,OAAO,OAAO,MAAM,mCAAmC,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAS9D,MAAM,CAAC,OAAO,OAAO,sBAAsB;IAC9B,8BAA8B,CAAgC;IAC9D,OAAO,CAAS;IAEzB,UAAU,GAAG,KAAK,CAAC;IACnB,WAAW,GAAG,KAAK,CAAC;IACpB,QAAQ,GAAsB,SAAS,CAAC;IAExC,gBAAgB,CAA4B;IAE5C,wBAAwB,CAA8B;IAEtD,aAAa,GAAG,IAAI,GAAG,EAAsD,CAAC;IAC9E,UAAU,GAA6B,IAAI,GAAG,EAAE,CAAC;IAEjD,eAAe,CAA6B;IAEnC,2BAA2B,CAAwC;IACnE,sBAAsB,CAAwB;IAEvD,YAAY,6BAA4D,EAAE,MAAc,EAAE,0BAAiE,EAAE,qBAA4C;QACrM,IAAI,CAAC,6BAA6B;YAC9B,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACrE,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC/C,IAAI,CAAC,0BAA0B;YAC3B,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAClE,IAAI,CAAC,qBAAqB;YACtB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAE3D,IAAI,CAAC,8BAA8B,GAAG,6BAA6B,CAAC;QACpE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,2BAA2B,GAAG,0BAA0B,CAAC;QAC9D,IAAI,CAAC,sBAAsB,GAAG,qBAAqB,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAgD,EAAE,cAAqD,EAAE,WAAyB;QAC1I,IAAI,CAAC;YACD,IAAI,CAAC,KAAK,EAAE,CAAC;YAEb,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;YAEtC,IAAI,CAAC,+BAA+B,EAAE,CAAC;YAEvC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YAEvB,IAAI,CAAC,wBAAwB,GAAG,IAAI,eAAe,EAAE,CAAC;YAEtD,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC;YAEzC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAEvD,MAAM,IAAI,CAAC,gBAAgB,CAAC;YAE5B,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,OAAO,CAAC;QACrE,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,QAAQ,GAAG,IAAI,KAAK,CAAC,oFAAoF,EAAE,EAAE,KAAK,EAAE,KAAc,EAAE,CAAC,CAAC;QAC/I,CAAC;gBACO,CAAC;YACL,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YAExB,IAAI,CAAC,eAAe,EAAE,CAAC;QAC3B,CAAC;IACL,CAAC;IAEO,KAAK;QACT,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;IAC9B,CAAC;IAEO,sBAAsB,CAAC,WAAoC;QAC/D,MAAM,uBAAuB,GAAG,IAAI,CAAC,wBAAyB,CAAC;QAE/D,IAAI,WAAW,EAAE,OAAO;YACpB,uBAAuB,CAAC,KAAK,EAAE,CAAC;;YAEhC,WAAW,EAAE,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,uBAAuB,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACtG,CAAC;IAEO,+BAA+B;QACnC,IAAI,CAAC,IAAI,CAAC,eAAe;YACrB,OAAO;QAEX,IAAI,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,MAAM,KAAK,EAAE;YACrC,MAAM,IAAI,OAAO,CAAC,qCAAqC,CAAC,CAAC;QAC7D,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,KAAK,EAAE;YACtC,MAAM,IAAI,OAAO,CAAC,sCAAsC,CAAC,CAAC;IAClE,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,KAAgD;QAC7E,IAAI,OAA0C,CAAC;QAE/C,IAAI,CAAC;YACD,IAAI,IAAI,CAAC,oBAAoB,EAAE;gBAC3B,OAAO;YAEX,OAAO,GAAG,MAAM,IAAI,CAAC,8BAA8B,CAAC,aAAa,CAAC,IAAI,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;YAEzG,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,MAAM,CAAC,OAAO;gBAC9C,MAAM,KAAK,CAAC;QACpB,CAAC;gBACO,CAAC;YACL,OAAO,EAAE,OAAO,EAAE,CAAC;QACvB,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,KAAgD,EAAE,QAAgC;QAC7G,MAAM,2BAA2B,GAAG,IAAI,GAAG,EAAiB,CAAC;QAE7D,IAAI,CAAC;YACD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACvB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;oBACtC,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,CAAC;oBAErE,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE,CAAC;wBAC9B,gBAAgB,EAAE,CAAC;wBACnB,MAAM;oBACV,CAAC;oBAED,MAAM,wBAAwB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,WAAW,EAAE,gBAAgB,EAAE,QAAQ,CAAC,CAAC;oBAExI,MAAM,yBAAyB,GAAG,wBAAwB,CAAC,OAAO,CAAC,GAAG,EAAE;wBACpE,2BAA2B,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;oBAClE,CAAC,CAAC,CAAC;oBAEH,2BAA2B,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;oBAE3D,IAAI,IAAI,CAAC,oBAAoB,EAAE;wBAC3B,MAAM;gBACd,CAAC;gBAED,IAAI,IAAI,CAAC,oBAAoB,EAAE;oBAC3B,MAAM;YACd,CAAC;QACL,CAAC;gBACO,CAAC;YACL,MAAM,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;QACrE,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,IAAO,EAAE,kBAA0B,EAAE,gBAAwB,EAAE,gBAAqC,EAAE,QAAgC;QACnK,IAAI,mBAAoD,CAAC;QAEzD,IAAI,CAAC;YACD,mBAAmB,GAAG,IAAI,CAAC,2BAA2B,CAAC,yBAAyB,CAAC,IAAI,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;YAEnJ,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,mBAAmB,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;YAEhH,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,EAAE,kBAAkB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QAC7F,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YACX,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAE7C,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,EAAE,kBAAkB,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;QAC5G,CAAC;gBACO,CAAC;YACL,gBAAgB,EAAE,CAAC;YAEnB,IAAI,mBAAmB,IAAI,CAAC,mBAAmB,CAAC,UAAU;gBACtD,MAAM,mBAAmB,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAA0D,CAAC,CAAC,CAAC;YAEhH,IAAI,CAAC,eAAe,EAAE,CAAC;QAC3B,CAAC;IACL,CAAC;IAEO,aAAa,CAAC,KAAc;QAChC,IAAI,IAAI,CAAC,wBAAwB,EAAE,MAAM,EAAE,OAAO;YAC9C,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;QAExE,IAAI,KAAK,YAAY,OAAO;YACxB,OAAO,KAAK,CAAC;QAEjB,OAAO,IAAI,OAAO,CAAC,mCAAmC,EAAE,EAAE,KAAK,EAAE,KAAc,EAAE,CAAC,CAAC;IACvF,CAAC;IAEO,gBAAgB,CAAC,WAAwB;QAC7C,IAAI,WAAW,CAAC,MAAM,YAAY,KAAK;YACnC,OAAO,WAAW,CAAC,MAAM,CAAC;QAE9B,OAAO,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;IAChC,CAAC;IAEO,oBAAoB,CAAC,MAAuB,EAAE,kBAA0B,EAAE,MAA4B;QAC1G,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC;YAC/B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QAE9C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IACpE,CAAC;IAEO,oBAAoB;QACxB,OAAO,IAAI,CAAC,wBAAwB,EAAE,MAAM,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC;IACnF,CAAC;IAED,KAAK,CAAC,IAAI;QACN,IAAI,CAAC,wBAAwB,EAAE,KAAK,EAAE,CAAC;QAEvC,MAAM,IAAI,CAAC,gBAAgB,CAAC;IAChC,CAAC;IAEO,eAAe;QACnB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,qCAAqC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC9F,CAAC;IAEO,qCAAqC,CAAC,QAA6B;QACvE,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;QAEzF,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,MAAM,CAAC,SAAS;gBAChB,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;;gBAE7B,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAElC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAE9B,OAAO;QACX,CAAC;QAED,IAAI,IAAI,CAAC,UAAU;YACf,OAAO;QAEX,IAAI,IAAI,CAAC,QAAQ;YACb,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC9B,IAAI,IAAI,CAAC,WAAW;YACrB,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC,CAAC;;YAEjF,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC;QAE3D,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;IAEO,cAAc,CAAC,QAA6B;QAChD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,IAAO,EAAE,kBAA0B;QACpD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACpD,MAAM,QAAQ,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;YAElF,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAE9B,IAAI,CAAC,qCAAqC,CAAC,QAAQ,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACnB,CAAC;CACJ","sourcesContent":["import UploaderChunkStreamProviderFactory from \"../chunkStreamProviderFactory/uploaderChunkStreamProviderFactory.js\";\r\nimport UploaderMD5Provider, { MD5ComputationResult, MD5ProviderObserver, UploaderMD5ProviderFileToBeMD5Hashed } from \"./uploaderMD5Provider.js\";\r\nimport ChunkStreamEncryptionData from \"../../utils/fileSystem/chunkStreamEncryptionData.js\";\r\nimport ConcurrencyController from \"../../utils/concurrencyController/concurrencyController.js\";\r\nimport FsError from \"../../utils/fileSystem/fsError.js\";\r\nimport { promiseAllSettled } from \"../../utils/promiseAll.js\";\r\nimport ConcurrencyReleaser from \"../../utils/concurrencyController/concurrencyReleaser.js\";\r\nimport FileDetails from \"../../utils/fileSystem/fileDetails.js\";\r\n\r\nimport type ChunkStreamProvider from \"../../utils/fileSystem/chunkStreamProvider.js\";\r\nimport type MD5ComputationStrategy from \"./md5ComputationStrategies/md5ComputationStrategy.js\";\r\nimport type MD5ComputationStrategyFactory from \"./md5ComputationStrategies/md5ComputationStrategyFactory.js\";\r\nimport type MD5ComputationSession from \"./md5ComputationStrategies/md5ComputationSession.js\";\r\n\r\nexport default class PrecomputedMD5Provider<T extends FileDetails> implements UploaderMD5Provider<T> {\r\n readonly #md5ComputationStrategyFactory: MD5ComputationStrategyFactory;\r\n readonly #format: string;\r\n\r\n #isRunning = false;\r\n #isFinished = false;\r\n #isError: Error | undefined = undefined;\r\n\r\n #mainLoopPromise: Promise<void> | undefined;\r\n\r\n #internalAbortController: AbortController | undefined;\r\n\r\n #computedMD5s = new Map<string | number, Map<number, MD5ComputationResult>>();\r\n #observers: Set<MD5ProviderObserver> = new Set();\r\n\r\n #encryptionData?: ChunkStreamEncryptionData;\r\n\r\n readonly #chunkStreamProviderFactory: UploaderChunkStreamProviderFactory<T>;\r\n readonly #concurrencyController: ConcurrencyController;\r\n\r\n constructor(md5ComputationStrategyFactory: MD5ComputationStrategyFactory, format: string, chunkStreamProviderFactory: UploaderChunkStreamProviderFactory<T>, concurrencyController: ConcurrencyController) {\r\n if (!md5ComputationStrategyFactory)\r\n throw new Error(`MD5 computation strategy factory is undefined`);\r\n if (!format || format.length === 0)\r\n throw new Error(`MD5 format is incorrect`);\r\n if (!chunkStreamProviderFactory)\r\n throw new Error(`Chunk stream provider factory is undefined`);\r\n if (!concurrencyController)\r\n throw new Error(`Concurrency controller is undefined`);\r\n\r\n this.#md5ComputationStrategyFactory = md5ComputationStrategyFactory;\r\n this.#format = format;\r\n this.#chunkStreamProviderFactory = chunkStreamProviderFactory;\r\n this.#concurrencyController = concurrencyController;\r\n }\r\n\r\n async start(files: UploaderMD5ProviderFileToBeMD5Hashed<T>[], encryptionData: ChunkStreamEncryptionData | undefined, abortSignal?: AbortSignal): Promise<void> {\r\n try {\r\n this.clear();\r\n\r\n this.#encryptionData = encryptionData;\r\n\r\n this.throwIfEncryptionDataIsNotValid();\r\n\r\n this.#isRunning = true;\r\n\r\n this.#internalAbortController = new AbortController();\r\n\r\n this.addAbortSignalListener(abortSignal);\r\n\r\n this.#mainLoopPromise = this.precomputeAllFiles(files);\r\n\r\n await this.#mainLoopPromise;\r\n\r\n this.#isFinished = !this.#internalAbortController.signal.aborted;\r\n }\r\n catch (error) {\r\n this.#isError = new Error(`Unhandled error occured in WebPrecomputedMD5Provider. See 'cause' for more details`, { cause: error as Error });\r\n }\r\n finally {\r\n this.#isRunning = false;\r\n\r\n this.notifyObservers();\r\n }\r\n }\r\n\r\n private clear() {\r\n this.#computedMD5s.clear();\r\n this.#isFinished = false;\r\n this.#isError = undefined;\r\n }\r\n\r\n private addAbortSignalListener(abortSignal: AbortSignal | undefined) {\r\n const internalAbortController = this.#internalAbortController!;\r\n\r\n if (abortSignal?.aborted)\r\n internalAbortController.abort();\r\n else\r\n abortSignal?.addEventListener(`abort`, () => internalAbortController.abort(), { once: true });\r\n }\r\n\r\n private throwIfEncryptionDataIsNotValid() {\r\n if (!this.#encryptionData)\r\n return;\r\n\r\n if (this.#encryptionData.iv.length !== 16)\r\n throw new FsError(`Encryption IV must be 16 bytes long`);\r\n if (this.#encryptionData.key.length !== 32)\r\n throw new FsError(`Encryption key must be 32 bytes long`);\r\n }\r\n\r\n private async precomputeAllFiles(files: UploaderMD5ProviderFileToBeMD5Hashed<T>[]) {\r\n let session: MD5ComputationSession | undefined;\r\n\r\n try {\r\n if (this.shouldStopProcessing())\r\n return;\r\n\r\n session = await this.#md5ComputationStrategyFactory.createSession(this.#internalAbortController?.signal);\r\n\r\n await this.precomputeChunks(files, session.strategy);\r\n }\r\n catch (error) {\r\n if (!this.#internalAbortController?.signal.aborted)\r\n throw error;\r\n }\r\n finally {\r\n session?.dispose();\r\n }\r\n }\r\n\r\n private async precomputeChunks(files: UploaderMD5ProviderFileToBeMD5Hashed<T>[], strategy: MD5ComputationStrategy) {\r\n const ongoingChunkMD5Computations = new Set<Promise<void>>();\r\n\r\n try {\r\n for (const file of files) {\r\n for (const chunk of file.chunksIterator) {\r\n const releaseSemaphore = await this.#concurrencyController.acquire();\r\n\r\n if (this.shouldStopProcessing()) {\r\n releaseSemaphore();\r\n break;\r\n }\r\n\r\n const chunkMD5ComputingPromise = this.precomputeChunkMd5(file.file, chunk.startPosition, chunk.sizeInBytes, releaseSemaphore, strategy);\r\n\r\n const trackedChunkUploadPromise = chunkMD5ComputingPromise.finally(() => {\r\n ongoingChunkMD5Computations.delete(trackedChunkUploadPromise);\r\n });\r\n\r\n ongoingChunkMD5Computations.add(trackedChunkUploadPromise);\r\n\r\n if (this.shouldStopProcessing())\r\n break;\r\n }\r\n\r\n if (this.shouldStopProcessing())\r\n break;\r\n }\r\n }\r\n finally {\r\n await promiseAllSettled(Array.from(ongoingChunkMD5Computations));\r\n }\r\n }\r\n\r\n private async precomputeChunkMd5(file: T, chunkStartPosition: number, chunkSizeInBytes: number, releaseSemaphore: ConcurrencyReleaser, strategy: MD5ComputationStrategy) {\r\n let chunkStreamProvider: ChunkStreamProvider | undefined;\r\n\r\n try {\r\n chunkStreamProvider = this.#chunkStreamProviderFactory.createChunkStreamProvider(file, chunkStartPosition, chunkSizeInBytes, this.#encryptionData);\r\n\r\n const md5 = await strategy.computeMD5(chunkStreamProvider, this.#format, this.#internalAbortController?.signal);\r\n\r\n this.setComputationResult(file.externalId, chunkStartPosition, { isSuccess: true, md5 });\r\n }\r\n catch (error) {\r\n const chunkError = this.getChunkError(error);\r\n\r\n this.setComputationResult(file.externalId, chunkStartPosition, { isSuccess: false, error: chunkError });\r\n }\r\n finally {\r\n releaseSemaphore();\r\n\r\n if (chunkStreamProvider && !chunkStreamProvider.isReleased)\r\n await chunkStreamProvider.release().catch(() => { /* Cleanup failure must not replace the MD5 result. */ });\r\n\r\n this.notifyObservers();\r\n }\r\n }\r\n\r\n private getChunkError(error: unknown): Error {\r\n if (this.#internalAbortController?.signal?.aborted)\r\n return this.createAbortError(this.#internalAbortController?.signal);\r\n\r\n if (error instanceof FsError)\r\n return error;\r\n\r\n return new FsError(`ComputingFileMd5ChecksumException`, { cause: error as Error });\r\n }\r\n\r\n private createAbortError(abortSignal: AbortSignal) {\r\n if (abortSignal.reason instanceof Error)\r\n return abortSignal.reason;\r\n\r\n return new Error(`Aborted`);\r\n }\r\n\r\n private setComputationResult(fileId: string | number, chunkStartPosition: number, result: MD5ComputationResult) {\r\n if (!this.#computedMD5s.has(fileId))\r\n this.#computedMD5s.set(fileId, new Map());\r\n\r\n this.#computedMD5s.get(fileId)!.set(chunkStartPosition, result);\r\n }\r\n\r\n private shouldStopProcessing() {\r\n return this.#internalAbortController?.signal.aborted === true || this.#isError;\r\n }\r\n\r\n async stop(): Promise<void> {\r\n this.#internalAbortController?.abort();\r\n\r\n await this.#mainLoopPromise;\r\n }\r\n\r\n private notifyObservers() {\r\n this.#observers.forEach(observer => this.notifyAndRemoveObserverIfResultExists(observer));\r\n }\r\n\r\n private notifyAndRemoveObserverIfResultExists(observer: MD5ProviderObserver) {\r\n const result = this.#computedMD5s.get(observer.fileId)?.get(observer.chunkStartPosition);\r\n\r\n if (result) {\r\n if (result.isSuccess)\r\n observer.resolve(result.md5);\r\n else\r\n observer.reject(result.error);\r\n\r\n this.removeObserver(observer);\r\n\r\n return;\r\n }\r\n\r\n if (this.#isRunning)\r\n return;\r\n\r\n if (this.#isError)\r\n observer.reject(this.#isError);\r\n else if (this.#isFinished)\r\n observer.reject(new Error(`MD5 provider has never computed MD5 for this chunk`));\r\n else\r\n observer.reject(new Error(`MD5s precomputing failed`));\r\n\r\n this.removeObserver(observer);\r\n }\r\n\r\n private removeObserver(observer: MD5ProviderObserver) {\r\n this.#observers.delete(observer);\r\n }\r\n\r\n async getMd5Checksum(file: T, chunkStartPosition: number): Promise<string> {\r\n const promise = new Promise<string>((resolve, reject) => {\r\n const observer = { fileId: file.externalId, chunkStartPosition, resolve, reject };\r\n\r\n this.#observers.add(observer);\r\n\r\n this.notifyAndRemoveObserverIfResultExists(observer);\r\n });\r\n\r\n return promise;\r\n }\r\n}"]}
@@ -0,0 +1,28 @@
1
+ import ChunkStreamEncryptionData from "../../utils/fileSystem/chunkStreamEncryptionData.js";
2
+ interface UploaderMD5Provider<T> {
3
+ start(files: UploaderMD5ProviderFileToBeMD5Hashed<T>[], encryptionData: ChunkStreamEncryptionData | undefined, abortSignal?: AbortSignal): Promise<void>;
4
+ stop(): Promise<void>;
5
+ getMd5Checksum(file: T, chunkStartPosition: number): Promise<string>;
6
+ }
7
+ export default UploaderMD5Provider;
8
+ export type MD5ComputationResult = ({
9
+ isSuccess: true;
10
+ md5: string;
11
+ } | {
12
+ isSuccess: false;
13
+ error: Error;
14
+ });
15
+ export type UploaderMD5ProviderFileToBeMD5Hashed<T> = {
16
+ file: Readonly<T>;
17
+ chunksIterator: IterableIterator<{
18
+ startPosition: number;
19
+ sizeInBytes: number;
20
+ }>;
21
+ };
22
+ export type MD5ProviderObserver = {
23
+ fileId: string | number;
24
+ chunkStartPosition: number;
25
+ resolve: (md5: string) => void;
26
+ reject: (error: Error) => void;
27
+ };
28
+ //# sourceMappingURL=uploaderMD5Provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uploaderMD5Provider.d.ts","sourceRoot":"","sources":["../../../../src/uploader/md5Provider/uploaderMD5Provider.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,MAAM,qDAAqD,CAAC;AAE5F,UAAU,mBAAmB,CAAC,CAAC;IAC3B,KAAK,CAAC,KAAK,EAAE,oCAAoC,CAAC,CAAC,CAAC,EAAE,EAAE,cAAc,EAAE,yBAAyB,GAAG,SAAS,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzJ,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtB,cAAc,CAAC,IAAI,EAAE,CAAC,EAAE,kBAAkB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACxE;AAED,eAAe,mBAAmB,CAAC;AAEnC,MAAM,MAAM,oBAAoB,GAAG,CAAC;IAChC,SAAS,EAAE,IAAI,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;CACf,GAAG;IACA,SAAS,EAAE,KAAK,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;CAChB,CAAC,CAAC;AAEH,MAAM,MAAM,oCAAoC,CAAC,CAAC,IAAI;IAClD,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAClB,cAAc,EAAE,gBAAgB,CAAC;QAC7B,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;KACvB,CAAC,CAAC;CACN,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAC9B,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=uploaderMD5Provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uploaderMD5Provider.js","sourceRoot":"","sources":["../../../../src/uploader/md5Provider/uploaderMD5Provider.ts"],"names":[],"mappings":"","sourcesContent":["import ChunkStreamEncryptionData from \"../../utils/fileSystem/chunkStreamEncryptionData.js\";\r\n\r\ninterface UploaderMD5Provider<T> {\r\n start(files: UploaderMD5ProviderFileToBeMD5Hashed<T>[], encryptionData: ChunkStreamEncryptionData | undefined, abortSignal?: AbortSignal): Promise<void>;\r\n\r\n stop(): Promise<void>;\r\n\r\n getMd5Checksum(file: T, chunkStartPosition: number): Promise<string>;\r\n}\r\n\r\nexport default UploaderMD5Provider;\r\n\r\nexport type MD5ComputationResult = ({\r\n isSuccess: true;\r\n md5: string;\r\n} | {\r\n isSuccess: false;\r\n error: Error;\r\n});\r\n\r\nexport type UploaderMD5ProviderFileToBeMD5Hashed<T> = {\r\n file: Readonly<T>;\r\n chunksIterator: IterableIterator<{\r\n startPosition: number;\r\n sizeInBytes: number;\r\n }>;\r\n};\r\n\r\nexport type MD5ProviderObserver = {\r\n fileId: string | number;\r\n chunkStartPosition: number;\r\n resolve: (md5: string) => void;\r\n reject: (error: Error) => void;\r\n};"]}
@@ -1 +1 @@
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
+ {"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 +1 @@
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
+ {"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 +1 @@
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
+ {"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 dataRegion?: `auto` | `eu` | `us` | `no`,\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;\r\n"]}
@@ -1 +1 @@
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
+ {"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 +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 */\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
+ {"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 +1 @@
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
+ {"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 +1 @@
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
+ {"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 +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 {\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
+ {"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 +1 @@
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
+ {"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 +1 @@
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
+ {"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 +1 @@
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
+ {"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;"]}