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
@@ -1 +1 @@
1
- {"version":3,"file":"transferUploadExportData.js","sourceRoot":"","sources":["../../../../src/uploader/export/transferUploadExportData.ts"],"names":[],"mappings":"","sourcesContent":["import type FileDetails from \"../../utils/fileSystem/fileDetails.js\";\nimport type { TransferUploadAppendInfo } from \"../options/transferUploadAppendInfo.js\";\nimport type TransferUploadInfo from \"../options/transferUploadInfo.js\";\nimport type RegisteredTransferFile from \"../registeredTransferFile.js\";\nimport type TransferUploadExportState from \"./transferUploadExportState.js\";\nimport type TransferUploadMetadata from \"./transferUploadMetadata.js\";\n\nexport interface TransferUploadExportData<T extends FileDetails> {\n transferMetadata?: TransferUploadExportDataMetadata,\n info: Readonly<TransferUploadInfo<T> | TransferUploadExportDataAppendInfo<T>>,\n state: TransferUploadExportState,\n registeredFiles?: (readonly [string | number, RegisteredTransferFile])[],\n}\n\n// The raw e2ee key and iv are never exported with the append info - the exported metadata carries them as hex.\nexport type TransferUploadExportDataAppendInfo<T> = Omit<TransferUploadAppendInfo<T>, `e2eeData`>;\n\nexport type TransferUploadExportDataMetadata = Readonly<Omit<TransferUploadMetadata, `encryptionData`> & {\n encryptionData?: {\n ivHex: string,\n keyHex: string,\n },\n}>;\n"]}
1
+ {"version":3,"file":"transferUploadExportData.js","sourceRoot":"","sources":["../../../../src/uploader/export/transferUploadExportData.ts"],"names":[],"mappings":"","sourcesContent":["import type FileDetails from \"../../utils/fileSystem/fileDetails.js\";\r\nimport type { TransferUploadAppendInfo } from \"../options/transferUploadAppendInfo.js\";\r\nimport type TransferUploadInfo from \"../options/transferUploadInfo.js\";\r\nimport type RegisteredTransferFile from \"../registeredTransferFile.js\";\r\nimport type TransferUploadExportState from \"./transferUploadExportState.js\";\r\nimport type TransferUploadMetadata from \"./transferUploadMetadata.js\";\r\n\r\nexport interface TransferUploadExportData<T extends FileDetails> {\r\n transferMetadata?: TransferUploadExportDataMetadata,\r\n info: Readonly<TransferUploadInfo<T> | TransferUploadExportDataAppendInfo<T>>,\r\n state: TransferUploadExportState,\r\n registeredFiles?: (readonly [string | number, RegisteredTransferFile])[],\r\n}\r\n\r\n// The raw e2ee key and iv are never exported with the append info - the exported metadata carries them as hex.\r\nexport type TransferUploadExportDataAppendInfo<T> = Omit<TransferUploadAppendInfo<T>, `e2eeData`>;\r\n\r\nexport type TransferUploadExportDataMetadata = Readonly<Omit<TransferUploadMetadata, `encryptionData`> & {\r\n encryptionData?: {\r\n ivHex: string,\r\n keyHex: string,\r\n },\r\n}>;\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"transferUploadExportState.js","sourceRoot":"","sources":["../../../../src/uploader/export/transferUploadExportState.ts"],"names":[],"mappings":"","sourcesContent":["import type { ContinuousChunksCalculatorState } from \"../state/continuousChunksCalculator.js\";\n\ntype TransferUploadExportState = {\n continuousChunksCalculatorState: ContinuousChunksCalculatorState;\n completedFiles: (string | number)[];\n};\n\nexport default TransferUploadExportState;\n"]}
1
+ {"version":3,"file":"transferUploadExportState.js","sourceRoot":"","sources":["../../../../src/uploader/export/transferUploadExportState.ts"],"names":[],"mappings":"","sourcesContent":["import type { ContinuousChunksCalculatorState } from \"../state/continuousChunksCalculator.js\";\r\n\r\ntype TransferUploadExportState = {\r\n continuousChunksCalculatorState: ContinuousChunksCalculatorState;\r\n completedFiles: (string | number)[];\r\n};\r\n\r\nexport default TransferUploadExportState;\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"transferUploadMetadata.js","sourceRoot":"","sources":["../../../../src/uploader/export/transferUploadMetadata.ts"],"names":[],"mappings":"","sourcesContent":["interface TransferUploadMetadata {\n transferId: string,\n transferKey: string,\n transferFileServerUrl: string,\n transferRegion?: string,\n encryptionData?: {\n iv: Uint8Array,\n key: Uint8Array,\n },\n}\n\nexport default TransferUploadMetadata;"]}
1
+ {"version":3,"file":"transferUploadMetadata.js","sourceRoot":"","sources":["../../../../src/uploader/export/transferUploadMetadata.ts"],"names":[],"mappings":"","sourcesContent":["interface TransferUploadMetadata {\r\n transferId: string,\r\n transferKey: string,\r\n transferFileServerUrl: string,\r\n transferRegion?: string,\r\n encryptionData?: {\r\n iv: Uint8Array,\r\n key: Uint8Array,\r\n },\r\n}\r\n\r\nexport default TransferUploadMetadata;"]}
@@ -0,0 +1,8 @@
1
+ import type FileDetails from "../utils/fileSystem/fileDetails.js";
2
+ import type { ContinuousChunk } from "./state/continuousChunksCalculator.js";
3
+ type FileChunksPlan<T extends FileDetails> = {
4
+ file: Readonly<T>;
5
+ createChunksIterator: () => IterableIterator<ContinuousChunk>;
6
+ };
7
+ export default FileChunksPlan;
8
+ //# sourceMappingURL=fileChunksPlan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileChunksPlan.d.ts","sourceRoot":"","sources":["../../../src/uploader/fileChunksPlan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,oCAAoC,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAE7E,KAAK,cAAc,CAAC,CAAC,SAAS,WAAW,IAAI;IACzC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAClB,oBAAoB,EAAE,MAAM,gBAAgB,CAAC,eAAe,CAAC,CAAC;CACjE,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=fileChunksPlan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileChunksPlan.js","sourceRoot":"","sources":["../../../src/uploader/fileChunksPlan.ts"],"names":[],"mappings":"","sourcesContent":["import type FileDetails from \"../utils/fileSystem/fileDetails.js\";\r\nimport type { ContinuousChunk } from \"./state/continuousChunksCalculator.js\";\r\n\r\ntype FileChunksPlan<T extends FileDetails> = {\r\n file: Readonly<T>;\r\n createChunksIterator: () => IterableIterator<ContinuousChunk>;\r\n};\r\n\r\nexport default FileChunksPlan;"]}
@@ -0,0 +1,10 @@
1
+ import type MD5ComputationStrategy from "./md5ComputationStrategy.js";
2
+ import type MD5ComputationStrategyFactory from "./md5ComputationStrategyFactory.js";
3
+ import type MD5ComputationSession from "./md5ComputationSession.js";
4
+ /** For strategies that do not require resources scoped to a precomputation run. */
5
+ export default class DefaultMD5ComputationStrategyFactory implements MD5ComputationStrategyFactory {
6
+ #private;
7
+ constructor(strategy: MD5ComputationStrategy);
8
+ createSession(abortSignal?: AbortSignal): Promise<MD5ComputationSession>;
9
+ }
10
+ //# sourceMappingURL=defaultMD5ComputationStrategyFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaultMD5ComputationStrategyFactory.d.ts","sourceRoot":"","sources":["../../../../../src/uploader/md5Provider/md5ComputationStrategies/defaultMD5ComputationStrategyFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,sBAAsB,MAAM,6BAA6B,CAAC;AACtE,OAAO,KAAK,6BAA6B,MAAM,oCAAoC,CAAC;AACpF,OAAO,KAAK,qBAAqB,MAAM,4BAA4B,CAAC;AAEpE,mFAAmF;AACnF,MAAM,CAAC,OAAO,OAAO,oCAAqC,YAAW,6BAA6B;;gBAGlF,QAAQ,EAAE,sBAAsB;IAItC,aAAa,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,qBAAqB,CAAC;CAIjF"}
@@ -0,0 +1,12 @@
1
+ /** For strategies that do not require resources scoped to a precomputation run. */
2
+ export default class DefaultMD5ComputationStrategyFactory {
3
+ #strategy;
4
+ constructor(strategy) {
5
+ this.#strategy = strategy;
6
+ }
7
+ async createSession(abortSignal) {
8
+ abortSignal?.throwIfAborted();
9
+ return { strategy: this.#strategy, dispose: () => { } };
10
+ }
11
+ }
12
+ //# sourceMappingURL=defaultMD5ComputationStrategyFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaultMD5ComputationStrategyFactory.js","sourceRoot":"","sources":["../../../../../src/uploader/md5Provider/md5ComputationStrategies/defaultMD5ComputationStrategyFactory.ts"],"names":[],"mappings":"AAIA,mFAAmF;AACnF,MAAM,CAAC,OAAO,OAAO,oCAAoC;IAC5C,SAAS,CAAyB;IAE3C,YAAY,QAAgC;QACxC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,WAAyB;QACzC,WAAW,EAAE,cAAc,EAAE,CAAC;QAC9B,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,GAAkC,CAAC,EAAE,CAAC;IAC3F,CAAC;CACJ","sourcesContent":["import type MD5ComputationStrategy from \"./md5ComputationStrategy.js\";\r\nimport type MD5ComputationStrategyFactory from \"./md5ComputationStrategyFactory.js\";\r\nimport type MD5ComputationSession from \"./md5ComputationSession.js\";\r\n\r\n/** For strategies that do not require resources scoped to a precomputation run. */\r\nexport default class DefaultMD5ComputationStrategyFactory implements MD5ComputationStrategyFactory {\r\n readonly #strategy: MD5ComputationStrategy;\r\n\r\n constructor(strategy: MD5ComputationStrategy) {\r\n this.#strategy = strategy;\r\n }\r\n\r\n async createSession(abortSignal?: AbortSignal): Promise<MD5ComputationSession> {\r\n abortSignal?.throwIfAborted();\r\n return { strategy: this.#strategy, dispose: () => { /* No resources to release. */ } };\r\n }\r\n}"]}
@@ -0,0 +1,7 @@
1
+ import type MD5ComputationStrategy from "./md5ComputationStrategy.js";
2
+ interface MD5ComputationSession {
3
+ strategy: MD5ComputationStrategy;
4
+ dispose(): void;
5
+ }
6
+ export default MD5ComputationSession;
7
+ //# sourceMappingURL=md5ComputationSession.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"md5ComputationSession.d.ts","sourceRoot":"","sources":["../../../../../src/uploader/md5Provider/md5ComputationStrategies/md5ComputationSession.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,sBAAsB,MAAM,6BAA6B,CAAC;AAEtE,UAAU,qBAAqB;IAC3B,QAAQ,EAAE,sBAAsB,CAAC;IACjC,OAAO,IAAI,IAAI,CAAC;CACnB;AAED,eAAe,qBAAqB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=md5ComputationSession.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"md5ComputationSession.js","sourceRoot":"","sources":["../../../../../src/uploader/md5Provider/md5ComputationStrategies/md5ComputationSession.ts"],"names":[],"mappings":"","sourcesContent":["import type MD5ComputationStrategy from \"./md5ComputationStrategy.js\";\r\n\r\ninterface MD5ComputationSession {\r\n strategy: MD5ComputationStrategy;\r\n dispose(): void;\r\n}\r\n\r\nexport default MD5ComputationSession;"]}
@@ -0,0 +1,6 @@
1
+ import type ChunkStreamProvider from "../../../utils/fileSystem/chunkStreamProvider.js";
2
+ interface MD5ComputationStrategy {
3
+ computeMD5(chunkStreamProvider: ChunkStreamProvider, format: string, abortSignal?: AbortSignal): Promise<string>;
4
+ }
5
+ export default MD5ComputationStrategy;
6
+ //# sourceMappingURL=md5ComputationStrategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"md5ComputationStrategy.d.ts","sourceRoot":"","sources":["../../../../../src/uploader/md5Provider/md5ComputationStrategies/md5ComputationStrategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,mBAAmB,MAAM,kDAAkD,CAAC;AAExF,UAAU,sBAAsB;IAC5B,UAAU,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;CACnH;AAED,eAAe,sBAAsB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=md5ComputationStrategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"md5ComputationStrategy.js","sourceRoot":"","sources":["../../../../../src/uploader/md5Provider/md5ComputationStrategies/md5ComputationStrategy.ts"],"names":[],"mappings":"","sourcesContent":["import type ChunkStreamProvider from \"../../../utils/fileSystem/chunkStreamProvider.js\";\r\n\r\ninterface MD5ComputationStrategy {\r\n computeMD5(chunkStreamProvider: ChunkStreamProvider, format: string, abortSignal?: AbortSignal): Promise<string>\r\n}\r\n\r\nexport default MD5ComputationStrategy;"]}
@@ -0,0 +1,6 @@
1
+ import type MD5ComputationSession from "./md5ComputationSession.js";
2
+ interface MD5ComputationStrategyFactory {
3
+ createSession(abortSignal?: AbortSignal): Promise<MD5ComputationSession>;
4
+ }
5
+ export default MD5ComputationStrategyFactory;
6
+ //# sourceMappingURL=md5ComputationStrategyFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"md5ComputationStrategyFactory.d.ts","sourceRoot":"","sources":["../../../../../src/uploader/md5Provider/md5ComputationStrategies/md5ComputationStrategyFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,qBAAqB,MAAM,4BAA4B,CAAC;AAEpE,UAAU,6BAA6B;IACnC,aAAa,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;CAC5E;AAED,eAAe,6BAA6B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=md5ComputationStrategyFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"md5ComputationStrategyFactory.js","sourceRoot":"","sources":["../../../../../src/uploader/md5Provider/md5ComputationStrategies/md5ComputationStrategyFactory.ts"],"names":[],"mappings":"","sourcesContent":["import type MD5ComputationSession from \"./md5ComputationSession.js\";\r\n\r\ninterface MD5ComputationStrategyFactory {\r\n createSession(abortSignal?: AbortSignal): Promise<MD5ComputationSession>;\r\n}\r\n\r\nexport default MD5ComputationStrategyFactory;"]}
@@ -0,0 +1,7 @@
1
+ import type MD5ComputationStrategy from "../md5ComputationStrategy.js";
2
+ import type ChunkStreamProvider from "../../../../utils/fileSystem/chunkStreamProvider.js";
3
+ export default class NodeAsyncMD5ComputationStrategy implements MD5ComputationStrategy {
4
+ computeMD5(chunkStreamProvider: ChunkStreamProvider, format: string, abortSignal?: AbortSignal): Promise<string>;
5
+ private computeMd5ChecksumForChunk;
6
+ }
7
+ //# sourceMappingURL=nodeAsyncMD5ComputationStrategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodeAsyncMD5ComputationStrategy.d.ts","sourceRoot":"","sources":["../../../../../../src/uploader/md5Provider/md5ComputationStrategies/node/nodeAsyncMD5ComputationStrategy.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,sBAAsB,MAAM,8BAA8B,CAAC;AACvE,OAAO,KAAK,mBAAmB,MAAM,qDAAqD,CAAC;AAE3F,MAAM,CAAC,OAAO,OAAO,+BAAgC,YAAW,sBAAsB;IAC5E,UAAU,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;YAMxG,0BAA0B;CAO3C"}
@@ -0,0 +1,14 @@
1
+ import crypto from "crypto";
2
+ import { pipeline } from "stream/promises";
3
+ export default class NodeAsyncMD5ComputationStrategy {
4
+ async computeMD5(chunkStreamProvider, format, abortSignal) {
5
+ const fileStream = await chunkStreamProvider.getChunkReadStream(undefined, abortSignal);
6
+ return await this.computeMd5ChecksumForChunk(fileStream, format);
7
+ }
8
+ async computeMd5ChecksumForChunk(fileStream, format) {
9
+ const hash = crypto.createHash(`md5`);
10
+ await pipeline(fileStream, hash);
11
+ return hash.digest(format);
12
+ }
13
+ }
14
+ //# sourceMappingURL=nodeAsyncMD5ComputationStrategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodeAsyncMD5ComputationStrategy.js","sourceRoot":"","sources":["../../../../../../src/uploader/md5Provider/md5ComputationStrategies/node/nodeAsyncMD5ComputationStrategy.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAO3C,MAAM,CAAC,OAAO,OAAO,+BAA+B;IAChD,KAAK,CAAC,UAAU,CAAC,mBAAwC,EAAE,MAAc,EAAE,WAAyB;QAChG,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC,kBAAkB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAExF,OAAO,MAAM,IAAI,CAAC,0BAA0B,CAAC,UAA4B,EAAE,MAA8B,CAAC,CAAC;IAC/G,CAAC;IAEO,KAAK,CAAC,0BAA0B,CAAC,UAA0B,EAAE,MAA4B;QAC7F,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAEtC,MAAM,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAEjC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;CACJ","sourcesContent":["import crypto from \"crypto\";\r\nimport { pipeline } from \"stream/promises\";\r\nimport { ReadableStream } from \"node:stream/web\";\r\nimport { BinaryToTextEncoding } from \"node:crypto\";\r\n\r\nimport type MD5ComputationStrategy from \"../md5ComputationStrategy.js\";\r\nimport type ChunkStreamProvider from \"../../../../utils/fileSystem/chunkStreamProvider.js\";\r\n\r\nexport default class NodeAsyncMD5ComputationStrategy implements MD5ComputationStrategy {\r\n async computeMD5(chunkStreamProvider: ChunkStreamProvider, format: string, abortSignal?: AbortSignal): Promise<string> {\r\n const fileStream = await chunkStreamProvider.getChunkReadStream(undefined, abortSignal);\r\n\r\n return await this.computeMd5ChecksumForChunk(fileStream as ReadableStream, format as BinaryToTextEncoding);\r\n }\r\n\r\n private async computeMd5ChecksumForChunk(fileStream: ReadableStream, format: BinaryToTextEncoding): Promise<string> {\r\n const hash = crypto.createHash(`md5`);\r\n\r\n await pipeline(fileStream, hash);\r\n\r\n return hash.digest(format);\r\n }\r\n}"]}
@@ -0,0 +1,2 @@
1
+ export default function computeBlobMD5(chunkBlob: Blob, format: string): Promise<string>;
2
+ //# sourceMappingURL=computeBlobMD5.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"computeBlobMD5.d.ts","sourceRoot":"","sources":["../../../../../../src/uploader/md5Provider/md5ComputationStrategies/web/computeBlobMD5.ts"],"names":[],"mappings":"AAKA,wBAA8B,cAAc,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQ7F"}
@@ -0,0 +1,27 @@
1
+ import SparkMD5 from "spark-md5";
2
+ import { createMD5 } from "hash-wasm";
3
+ let wasmHasherPromise;
4
+ export default async function computeBlobMD5(chunkBlob, format) {
5
+ const buffer = await chunkBlob.arrayBuffer();
6
+ const hashHex = await computeMD5(buffer);
7
+ if (format === `hex`)
8
+ return hashHex;
9
+ return btoa(hashHex.match(/\w{2}/g).map(byte => String.fromCharCode(parseInt(byte, 16))).join(``));
10
+ }
11
+ async function computeMD5(buffer) {
12
+ try {
13
+ // Share initialization across concurrent reads, once per main thread or worker.
14
+ wasmHasherPromise ??= createMD5();
15
+ const hasher = await wasmHasherPromise;
16
+ if (hasher) {
17
+ hasher.init();
18
+ hasher.update(new Uint8Array(buffer));
19
+ return hasher.digest(`hex`);
20
+ }
21
+ }
22
+ catch {
23
+ wasmHasherPromise = Promise.resolve(undefined);
24
+ }
25
+ return SparkMD5.ArrayBuffer.hash(buffer);
26
+ }
27
+ //# sourceMappingURL=computeBlobMD5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"computeBlobMD5.js","sourceRoot":"","sources":["../../../../../../src/uploader/md5Provider/md5ComputationStrategies/web/computeBlobMD5.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAgB,MAAM,WAAW,CAAC;AAEpD,IAAI,iBAA2D,CAAC;AAEhE,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,cAAc,CAAC,SAAe,EAAE,MAAc;IACxE,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,WAAW,EAAE,CAAC;IAC7C,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;IAEzC,IAAI,MAAM,KAAK,KAAK;QAChB,OAAO,OAAO,CAAC;IAEnB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AACxG,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,MAAmB;IACzC,IAAI,CAAC;QACD,gFAAgF;QAChF,iBAAiB,KAAK,SAAS,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC;QAEvC,IAAI,MAAM,EAAE,CAAC;YACT,MAAM,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;YACtC,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACL,CAAC;IACD,MAAM,CAAC;QACH,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7C,CAAC","sourcesContent":["import SparkMD5 from \"spark-md5\";\r\nimport { createMD5, type IHasher } from \"hash-wasm\";\r\n\r\nlet wasmHasherPromise: Promise<IHasher | undefined> | undefined;\r\n\r\nexport default async function computeBlobMD5(chunkBlob: Blob, format: string): Promise<string> {\r\n const buffer = await chunkBlob.arrayBuffer();\r\n const hashHex = await computeMD5(buffer);\r\n\r\n if (format === `hex`)\r\n return hashHex;\r\n\r\n return btoa(hashHex.match(/\\w{2}/g)!.map(byte => String.fromCharCode(parseInt(byte, 16))).join(``));\r\n}\r\n\r\nasync function computeMD5(buffer: ArrayBuffer): Promise<string> {\r\n try {\r\n // Share initialization across concurrent reads, once per main thread or worker.\r\n wasmHasherPromise ??= createMD5();\r\n const hasher = await wasmHasherPromise;\r\n\r\n if (hasher) {\r\n hasher.init();\r\n hasher.update(new Uint8Array(buffer));\r\n return hasher.digest(`hex`);\r\n }\r\n }\r\n catch {\r\n wasmHasherPromise = Promise.resolve(undefined);\r\n }\r\n\r\n return SparkMD5.ArrayBuffer.hash(buffer);\r\n}"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=md5.worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"md5.worker.d.ts","sourceRoot":"","sources":["../../../../../../../src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5.worker.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import registerMD5Worker from "./registerMD5Worker.js";
2
+ // This only calls the proper worker for easier worker testability sake
3
+ registerMD5Worker(globalThis);
4
+ globalThis.postMessage({ type: `md5-ready` });
5
+ //# sourceMappingURL=md5.worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"md5.worker.js","sourceRoot":"","sources":["../../../../../../../src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5.worker.ts"],"names":[],"mappings":"AAAA,OAAO,iBAA0C,MAAM,wBAAwB,CAAC;AAIhF,uEAAuE;AACvE,iBAAiB,CAAC,UAAuC,CAAC,CAAC;AAE3D,UAAU,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,WAAW,EAA2B,CAAC,CAAC","sourcesContent":["import registerMD5Worker, { type MD5WorkerScope } from \"./registerMD5Worker.js\";\r\n\r\nimport type { MD5WorkerReady } from \"./md5WorkerMessages.js\";\r\n\r\n// This only calls the proper worker for easier worker testability sake\r\nregisterMD5Worker(globalThis as unknown as MD5WorkerScope);\r\n\r\nglobalThis.postMessage({ type: `md5-ready` } satisfies MD5WorkerReady);"]}
@@ -0,0 +1,14 @@
1
+ import type { MD5ComputationResult } from "../../../uploaderMD5Provider.js";
2
+ export type MD5WorkerRequest = {
3
+ workId: string;
4
+ chunkBlob: Blob;
5
+ format: string;
6
+ };
7
+ export type MD5WorkerResponse = {
8
+ workId: string;
9
+ result: MD5ComputationResult;
10
+ };
11
+ export type MD5WorkerReady = {
12
+ type: `md5-ready`;
13
+ };
14
+ //# sourceMappingURL=md5WorkerMessages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"md5WorkerMessages.d.ts","sourceRoot":"","sources":["../../../../../../../src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5WorkerMessages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAE5E,MAAM,MAAM,gBAAgB,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,oBAAoB,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IACzB,IAAI,EAAE,WAAW,CAAC;CACrB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=md5WorkerMessages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"md5WorkerMessages.js","sourceRoot":"","sources":["../../../../../../../src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5WorkerMessages.ts"],"names":[],"mappings":"","sourcesContent":["import type { MD5ComputationResult } from \"../../../uploaderMD5Provider.js\";\r\n\r\nexport type MD5WorkerRequest = {\r\n workId: string;\r\n chunkBlob: Blob;\r\n format: string;\r\n};\r\n\r\nexport type MD5WorkerResponse = {\r\n workId: string;\r\n result: MD5ComputationResult;\r\n};\r\n\r\nexport type MD5WorkerReady = {\r\n type: `md5-ready`;\r\n};"]}
@@ -0,0 +1,17 @@
1
+ export default class MD5WebWorkersManager {
2
+ #private;
3
+ constructor(createWorker: () => Worker);
4
+ hasAvailableWorkers(): boolean;
5
+ getWorker(): Worker;
6
+ createWorkers(workersCount: number, abortSignal?: AbortSignal): Promise<void>;
7
+ private createWorker;
8
+ private addWorkerFailureListeners;
9
+ private workerErrorHandler;
10
+ private workerMessageErrorHandler;
11
+ private removeWorkerFailureListeners;
12
+ private workerFailureCleanup;
13
+ private deleteWorker;
14
+ private waitUntilWorkerReady;
15
+ dispose(): void;
16
+ }
17
+ //# sourceMappingURL=md5WorkersManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"md5WorkersManager.d.ts","sourceRoot":"","sources":["../../../../../../../src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5WorkersManager.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,OAAO,OAAO,oBAAoB;;gBAOzB,YAAY,EAAE,MAAM,MAAM;IAOtC,mBAAmB,IAAI,OAAO;IAI9B,SAAS,IAAI,MAAM;IAWb,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;YASrE,YAAY;IAkB1B,OAAO,CAAC,yBAAyB;IAKjC,OAAO,CAAC,kBAAkB,CAExB;IAEF,OAAO,CAAC,yBAAyB,CAE/B;IAEF,OAAO,CAAC,4BAA4B;IAKpC,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,YAAY;IAmBpB,OAAO,CAAC,oBAAoB;IAuC5B,OAAO;CASV"}
@@ -0,0 +1,113 @@
1
+ const WorkerStartupTimeoutInMs = 10_000;
2
+ export default class MD5WebWorkersManager {
3
+ #createWorker;
4
+ #workers = [];
5
+ #roundRobinCounter = 0;
6
+ constructor(createWorker) {
7
+ if (!createWorker)
8
+ throw new Error(`CreateWorker method is not defined`);
9
+ this.#createWorker = createWorker;
10
+ }
11
+ hasAvailableWorkers() {
12
+ return this.#workers.length > 0;
13
+ }
14
+ getWorker() {
15
+ if (!this.hasAvailableWorkers())
16
+ throw new Error(`There are no available MD5 Web Workers`);
17
+ const workerIndex = this.#roundRobinCounter % this.#workers.length;
18
+ this.#roundRobinCounter = (this.#roundRobinCounter + 1) % this.#workers.length;
19
+ return this.#workers[workerIndex];
20
+ }
21
+ async createWorkers(workersCount, abortSignal) {
22
+ for (let i = 0; i < workersCount; i++) {
23
+ abortSignal?.throwIfAborted();
24
+ const worker = await this.createWorker(abortSignal);
25
+ this.#workers.push(worker);
26
+ }
27
+ }
28
+ async createWorker(abortSignal) {
29
+ const worker = this.#createWorker();
30
+ try {
31
+ await this.waitUntilWorkerReady(worker, abortSignal);
32
+ abortSignal?.throwIfAborted();
33
+ this.addWorkerFailureListeners(worker);
34
+ return worker;
35
+ }
36
+ catch (error) {
37
+ worker.terminate();
38
+ throw error;
39
+ }
40
+ }
41
+ addWorkerFailureListeners(worker) {
42
+ worker.addEventListener(`error`, this.workerErrorHandler);
43
+ worker.addEventListener(`messageerror`, this.workerMessageErrorHandler);
44
+ }
45
+ workerErrorHandler = (event) => {
46
+ this.workerFailureCleanup(event.currentTarget);
47
+ };
48
+ workerMessageErrorHandler = (event) => {
49
+ this.workerFailureCleanup(event.currentTarget);
50
+ };
51
+ removeWorkerFailureListeners(worker) {
52
+ worker.removeEventListener(`error`, this.workerErrorHandler);
53
+ worker.removeEventListener(`messageerror`, this.workerMessageErrorHandler);
54
+ }
55
+ workerFailureCleanup(worker) {
56
+ this.removeWorkerFailureListeners(worker);
57
+ this.deleteWorker(worker);
58
+ worker.terminate();
59
+ }
60
+ deleteWorker(worker) {
61
+ const index = this.#workers.indexOf(worker);
62
+ if (index === -1)
63
+ return;
64
+ this.#workers.splice(index, 1);
65
+ if (this.#workers.length === 0) {
66
+ this.#roundRobinCounter = 0;
67
+ return;
68
+ }
69
+ if (index < this.#roundRobinCounter)
70
+ this.#roundRobinCounter -= 1;
71
+ this.#roundRobinCounter %= this.#workers.length;
72
+ }
73
+ waitUntilWorkerReady(worker, abortSignal) {
74
+ return new Promise((resolve, reject) => {
75
+ const cleanup = () => {
76
+ clearTimeout(timeout);
77
+ worker.removeEventListener(`message`, readyListener);
78
+ worker.removeEventListener(`error`, errorListener);
79
+ worker.removeEventListener(`messageerror`, messageErrorListener);
80
+ abortSignal?.removeEventListener(`abort`, abortListener);
81
+ };
82
+ const fail = (error) => {
83
+ cleanup();
84
+ reject(error);
85
+ };
86
+ const readyListener = (event) => {
87
+ if (event.data?.type !== `md5-ready`)
88
+ return;
89
+ cleanup();
90
+ resolve();
91
+ };
92
+ const errorListener = (event) => fail(event.error instanceof Error ? event.error : new Error(event.message || `MD5 worker failed to start`));
93
+ const messageErrorListener = () => fail(new Error(`Cannot deserialize MD5 worker startup response`));
94
+ const abortListener = () => fail(abortSignal?.reason ?? new Error(`Aborted`));
95
+ const timeout = setTimeout(() => fail(new Error(`MD5 worker startup timed out`)), WorkerStartupTimeoutInMs);
96
+ worker.addEventListener(`message`, readyListener);
97
+ worker.addEventListener(`error`, errorListener, { once: true });
98
+ worker.addEventListener(`messageerror`, messageErrorListener, { once: true });
99
+ abortSignal?.addEventListener(`abort`, abortListener, { once: true });
100
+ if (abortSignal?.aborted)
101
+ abortListener();
102
+ });
103
+ }
104
+ dispose() {
105
+ this.#workers.forEach(worker => {
106
+ this.removeWorkerFailureListeners(worker);
107
+ worker.terminate();
108
+ });
109
+ this.#workers = [];
110
+ this.#roundRobinCounter = 0;
111
+ }
112
+ }
113
+ //# sourceMappingURL=md5WorkersManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"md5WorkersManager.js","sourceRoot":"","sources":["../../../../../../../src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5WorkersManager.ts"],"names":[],"mappings":"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","sourcesContent":["import { MD5WorkerReady } from \"./md5WorkerMessages.js\";\r\n\r\nconst WorkerStartupTimeoutInMs = 10_000;\r\n\r\nexport default class MD5WebWorkersManager {\r\n #createWorker: () => Worker;\r\n\r\n #workers: Worker[] = [];\r\n\r\n #roundRobinCounter = 0;\r\n\r\n constructor(createWorker: () => Worker) {\r\n if (!createWorker)\r\n throw new Error(`CreateWorker method is not defined`);\r\n\r\n this.#createWorker = createWorker;\r\n }\r\n\r\n hasAvailableWorkers(): boolean {\r\n return this.#workers.length > 0;\r\n }\r\n\r\n getWorker(): Worker {\r\n if (!this.hasAvailableWorkers())\r\n throw new Error(`There are no available MD5 Web Workers`);\r\n\r\n const workerIndex = this.#roundRobinCounter % this.#workers.length;\r\n\r\n this.#roundRobinCounter = (this.#roundRobinCounter + 1) % this.#workers.length;\r\n\r\n return this.#workers[workerIndex];\r\n }\r\n\r\n async createWorkers(workersCount: number, abortSignal?: AbortSignal): Promise<void> {\r\n for (let i = 0; i < workersCount; i++) {\r\n abortSignal?.throwIfAborted();\r\n\r\n const worker = await this.createWorker(abortSignal);\r\n this.#workers.push(worker);\r\n }\r\n }\r\n\r\n private async createWorker(abortSignal?: AbortSignal): Promise<Worker> {\r\n const worker = this.#createWorker();\r\n\r\n try {\r\n await this.waitUntilWorkerReady(worker, abortSignal);\r\n\r\n abortSignal?.throwIfAborted();\r\n\r\n this.addWorkerFailureListeners(worker);\r\n\r\n return worker;\r\n }\r\n catch (error) {\r\n worker.terminate();\r\n throw error;\r\n }\r\n }\r\n\r\n private addWorkerFailureListeners(worker: Worker) {\r\n worker.addEventListener(`error`, this.workerErrorHandler);\r\n worker.addEventListener(`messageerror`, this.workerMessageErrorHandler);\r\n }\r\n\r\n private workerErrorHandler = (event: ErrorEvent) => {\r\n this.workerFailureCleanup(event.currentTarget as Worker);\r\n };\r\n\r\n private workerMessageErrorHandler = (event: MessageEvent) => {\r\n this.workerFailureCleanup(event.currentTarget as Worker);\r\n };\r\n\r\n private removeWorkerFailureListeners(worker: Worker) {\r\n worker.removeEventListener(`error`, this.workerErrorHandler);\r\n worker.removeEventListener(`messageerror`, this.workerMessageErrorHandler);\r\n }\r\n\r\n private workerFailureCleanup(worker: Worker) {\r\n this.removeWorkerFailureListeners(worker);\r\n this.deleteWorker(worker);\r\n worker.terminate();\r\n }\r\n\r\n private deleteWorker(worker: Worker) {\r\n const index = this.#workers.indexOf(worker);\r\n\r\n if (index === -1)\r\n return;\r\n\r\n this.#workers.splice(index, 1);\r\n\r\n if (this.#workers.length === 0) {\r\n this.#roundRobinCounter = 0;\r\n return;\r\n }\r\n\r\n if (index < this.#roundRobinCounter)\r\n this.#roundRobinCounter -= 1;\r\n\r\n this.#roundRobinCounter %= this.#workers.length;\r\n }\r\n\r\n private waitUntilWorkerReady(worker: Worker, abortSignal?: AbortSignal): Promise<void> {\r\n return new Promise((resolve, reject) => {\r\n const cleanup = () => {\r\n clearTimeout(timeout);\r\n\r\n worker.removeEventListener(`message`, readyListener);\r\n worker.removeEventListener(`error`, errorListener);\r\n worker.removeEventListener(`messageerror`, messageErrorListener);\r\n abortSignal?.removeEventListener(`abort`, abortListener);\r\n };\r\n\r\n const fail = (error: unknown) => {\r\n cleanup();\r\n reject(error);\r\n };\r\n\r\n const readyListener = (event: MessageEvent<MD5WorkerReady>) => {\r\n if (event.data?.type !== `md5-ready`)\r\n return;\r\n\r\n cleanup();\r\n resolve();\r\n };\r\n\r\n const errorListener = (event: ErrorEvent) => fail(event.error instanceof Error ? event.error : new Error(event.message || `MD5 worker failed to start`));\r\n const messageErrorListener = () => fail(new Error(`Cannot deserialize MD5 worker startup response`));\r\n const abortListener = () => fail(abortSignal?.reason ?? new Error(`Aborted`));\r\n const timeout = setTimeout(() => fail(new Error(`MD5 worker startup timed out`)), WorkerStartupTimeoutInMs);\r\n\r\n worker.addEventListener(`message`, readyListener);\r\n worker.addEventListener(`error`, errorListener, { once: true });\r\n worker.addEventListener(`messageerror`, messageErrorListener, { once: true });\r\n abortSignal?.addEventListener(`abort`, abortListener, { once: true });\r\n\r\n if (abortSignal?.aborted)\r\n abortListener();\r\n });\r\n }\r\n\r\n dispose() {\r\n this.#workers.forEach(worker => {\r\n this.removeWorkerFailureListeners(worker);\r\n worker.terminate();\r\n });\r\n\r\n this.#workers = [];\r\n this.#roundRobinCounter = 0;\r\n }\r\n}"]}
@@ -0,0 +1,7 @@
1
+ import type { MD5WorkerRequest, MD5WorkerResponse } from "./md5WorkerMessages.js";
2
+ export default function registerMD5Worker(worker: MD5WorkerScope): void;
3
+ export interface MD5WorkerScope {
4
+ addEventListener(type: `message`, listener: (event: MessageEvent<MD5WorkerRequest>) => void): void;
5
+ postMessage(message: MD5WorkerResponse): void;
6
+ }
7
+ //# sourceMappingURL=registerMD5Worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerMD5Worker.d.ts","sourceRoot":"","sources":["../../../../../../../src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/registerMD5Worker.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAElF,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAetE;AAED,MAAM,WAAW,cAAc;IAC3B,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,gBAAgB,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;IACnG,WAAW,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAC;CACjD"}
@@ -0,0 +1,17 @@
1
+ import computeBlobMD5 from "../computeBlobMD5.js";
2
+ export default function registerMD5Worker(worker) {
3
+ const compute = async ({ workId, chunkBlob, format }) => {
4
+ try {
5
+ const md5 = await computeBlobMD5(chunkBlob, format);
6
+ worker.postMessage({ workId, result: { isSuccess: true, md5 } });
7
+ }
8
+ catch (error) {
9
+ const responseError = new Error(error instanceof Error ? error.message : String(error));
10
+ worker.postMessage({ workId, result: { isSuccess: false, error: responseError } });
11
+ }
12
+ };
13
+ worker.addEventListener(`message`, (event) => {
14
+ compute(event.data);
15
+ });
16
+ }
17
+ //# sourceMappingURL=registerMD5Worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerMD5Worker.js","sourceRoot":"","sources":["../../../../../../../src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/registerMD5Worker.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,sBAAsB,CAAC;AAIlD,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,MAAsB;IAC5D,MAAM,OAAO,GAAG,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAoB,EAAE,EAAE;QACtE,IAAI,CAAC;YACD,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACpD,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QACrE,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YACX,MAAM,aAAa,GAAG,IAAI,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACxF,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC;QACvF,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,KAAqC,EAAE,EAAE;QACzE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;AACP,CAAC","sourcesContent":["import computeBlobMD5 from \"../computeBlobMD5.js\";\r\n\r\nimport type { MD5WorkerRequest, MD5WorkerResponse } from \"./md5WorkerMessages.js\";\r\n\r\nexport default function registerMD5Worker(worker: MD5WorkerScope): void {\r\n const compute = async ({ workId, chunkBlob, format }: MD5WorkerRequest) => {\r\n try {\r\n const md5 = await computeBlobMD5(chunkBlob, format);\r\n worker.postMessage({ workId, result: { isSuccess: true, md5 } });\r\n }\r\n catch (error) {\r\n const responseError = new Error(error instanceof Error ? error.message : String(error));\r\n worker.postMessage({ workId, result: { isSuccess: false, error: responseError } });\r\n }\r\n };\r\n\r\n worker.addEventListener(`message`, (event: MessageEvent<MD5WorkerRequest>) => {\r\n compute(event.data);\r\n });\r\n}\r\n\r\nexport interface MD5WorkerScope {\r\n addEventListener(type: `message`, listener: (event: MessageEvent<MD5WorkerRequest>) => void): void;\r\n postMessage(message: MD5WorkerResponse): void;\r\n}"]}
@@ -0,0 +1,9 @@
1
+ import type MD5ComputationStrategy from "../md5ComputationStrategy.js";
2
+ import type ChunkStreamProvider from "../../../../utils/fileSystem/chunkStreamProvider.js";
3
+ import type MD5WebWorkersManager from "./md5WebWorker/md5WorkersManager.js";
4
+ export default class WebAsyncWebWorkerMD5ComputationStrategy implements MD5ComputationStrategy {
5
+ #private;
6
+ constructor(workersManager: MD5WebWorkersManager);
7
+ computeMD5(chunkStreamProvider: ChunkStreamProvider, format: string, abortSignal?: AbortSignal): Promise<string>;
8
+ }
9
+ //# sourceMappingURL=webAsyncWebWorkerMD5ComputationStrategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webAsyncWebWorkerMD5ComputationStrategy.d.ts","sourceRoot":"","sources":["../../../../../../src/uploader/md5Provider/md5ComputationStrategies/web/webAsyncWebWorkerMD5ComputationStrategy.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,sBAAsB,MAAM,8BAA8B,CAAC;AACvE,OAAO,KAAK,mBAAmB,MAAM,qDAAqD,CAAC;AAE3F,OAAO,KAAK,oBAAoB,MAAM,qCAAqC,CAAC;AAE5E,MAAM,CAAC,OAAO,OAAO,uCAAwC,YAAW,sBAAsB;;gBAG9E,cAAc,EAAE,oBAAoB;IAO1C,UAAU,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;CAqEzH"}
@@ -0,0 +1,62 @@
1
+ import { v4 as guid } from "uuid";
2
+ export default class WebAsyncWebWorkerMD5ComputationStrategy {
3
+ #workersManager;
4
+ constructor(workersManager) {
5
+ if (!workersManager)
6
+ throw new Error(`Workers manager is not defined`);
7
+ this.#workersManager = workersManager;
8
+ }
9
+ async computeMD5(chunkStreamProvider, format, abortSignal) {
10
+ abortSignal?.throwIfAborted();
11
+ if (!this.#workersManager.hasAvailableWorkers())
12
+ throw new Error(`There are no available MD5 Web Workers`);
13
+ return new Promise((resolve, reject) => {
14
+ let worker;
15
+ const workId = guid();
16
+ const cleanup = () => {
17
+ worker?.removeEventListener(`message`, resultListener);
18
+ worker?.removeEventListener(`error`, errorListener);
19
+ worker?.removeEventListener(`messageerror`, messageErrorListener);
20
+ abortSignal?.removeEventListener(`abort`, abortListener);
21
+ };
22
+ const succeed = (md5) => {
23
+ cleanup();
24
+ resolve(md5);
25
+ };
26
+ const fail = (error) => {
27
+ cleanup();
28
+ reject(error);
29
+ };
30
+ const errorListener = (event) => {
31
+ fail(event.error instanceof Error ? event.error : new Error(event.message || `MD5 worker failed`));
32
+ };
33
+ const messageErrorListener = () => fail(new Error(`Cannot deserialize MD5 worker response`));
34
+ const abortListener = () => fail(abortSignal?.reason ?? new Error(`Aborted`));
35
+ const resultListener = (event) => {
36
+ if (event.data?.workId !== workId)
37
+ return;
38
+ if (event.data.result.isSuccess)
39
+ succeed(event.data.result.md5);
40
+ else
41
+ fail(event.data.result.error);
42
+ };
43
+ abortSignal?.addEventListener(`abort`, abortListener, { once: true });
44
+ const dispatchWorkToWebWorker = async () => {
45
+ try {
46
+ const chunkBlob = await chunkStreamProvider.getChunkBlob();
47
+ abortSignal?.throwIfAborted();
48
+ worker = this.#workersManager.getWorker();
49
+ worker.addEventListener(`message`, resultListener);
50
+ worker.addEventListener(`error`, errorListener, { once: true });
51
+ worker.addEventListener(`messageerror`, messageErrorListener, { once: true });
52
+ worker.postMessage({ workId, chunkBlob, format });
53
+ }
54
+ catch (error) {
55
+ fail(error);
56
+ }
57
+ };
58
+ dispatchWorkToWebWorker();
59
+ });
60
+ }
61
+ }
62
+ //# sourceMappingURL=webAsyncWebWorkerMD5ComputationStrategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webAsyncWebWorkerMD5ComputationStrategy.js","sourceRoot":"","sources":["../../../../../../src/uploader/md5Provider/md5ComputationStrategies/web/webAsyncWebWorkerMD5ComputationStrategy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,MAAM,MAAM,CAAC;AAOlC,MAAM,CAAC,OAAO,OAAO,uCAAuC;IACxD,eAAe,CAAuB;IAEtC,YAAY,cAAoC;QAC5C,IAAI,CAAC,cAAc;YACf,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAEtD,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,mBAAwC,EAAE,MAAc,EAAE,WAAyB;QAChG,WAAW,EAAE,cAAc,EAAE,CAAC;QAE9B,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,mBAAmB,EAAE;YAC3C,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAE9D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,IAAI,MAA0B,CAAC;YAE/B,MAAM,MAAM,GAAG,IAAI,EAAE,CAAC;YAEtB,MAAM,OAAO,GAAG,GAAG,EAAE;gBACjB,MAAM,EAAE,mBAAmB,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;gBACvD,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;gBACpD,MAAM,EAAE,mBAAmB,CAAC,cAAc,EAAE,oBAAoB,CAAC,CAAC;gBAClE,WAAW,EAAE,mBAAmB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YAC7D,CAAC,CAAC;YAEF,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,EAAE;gBAC5B,OAAO,EAAE,CAAC;gBACV,OAAO,CAAC,GAAG,CAAC,CAAC;YACjB,CAAC,CAAC;YAEF,MAAM,IAAI,GAAG,CAAC,KAAc,EAAE,EAAE;gBAC5B,OAAO,EAAE,CAAC;gBACV,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC;YAEF,MAAM,aAAa,GAAG,CAAC,KAAiB,EAAE,EAAE;gBACxC,IAAI,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,mBAAmB,CAAC,CAAC,CAAC;YACvG,CAAC,CAAC;YAEF,MAAM,oBAAoB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC,CAAC;YAC7F,MAAM,aAAa,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,IAAI,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;YAE9E,MAAM,cAAc,GAAG,CAAC,KAAsC,EAAE,EAAE;gBAC9D,IAAI,KAAK,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM;oBAC7B,OAAO;gBAEX,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS;oBAC3B,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;;oBAE/B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACtC,CAAC,CAAC;YAEF,WAAW,EAAE,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAEtE,MAAM,uBAAuB,GAAG,KAAK,IAAI,EAAE;gBACvC,IAAI,CAAC;oBACD,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAC,YAAY,EAAE,CAAC;oBAE3D,WAAW,EAAE,cAAc,EAAE,CAAC;oBAE9B,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC;oBAE1C,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;oBACnD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;oBAChE,MAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE,oBAAoB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;oBAE9E,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAA6B,CAAC,CAAC;gBACjF,CAAC;gBACD,OAAO,KAAK,EAAE,CAAC;oBACX,IAAI,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC;YACL,CAAC,CAAC;YAEF,uBAAuB,EAAE,CAAC;QAC9B,CAAC,CAAC,CAAC;IACP,CAAC;CACJ","sourcesContent":["import { v4 as guid } from \"uuid\";\r\n\r\nimport type MD5ComputationStrategy from \"../md5ComputationStrategy.js\";\r\nimport type ChunkStreamProvider from \"../../../../utils/fileSystem/chunkStreamProvider.js\";\r\nimport type { MD5WorkerRequest, MD5WorkerResponse } from \"./md5WebWorker/md5WorkerMessages.js\";\r\nimport type MD5WebWorkersManager from \"./md5WebWorker/md5WorkersManager.js\";\r\n\r\nexport default class WebAsyncWebWorkerMD5ComputationStrategy implements MD5ComputationStrategy {\r\n #workersManager: MD5WebWorkersManager;\r\n\r\n constructor(workersManager: MD5WebWorkersManager) {\r\n if (!workersManager)\r\n throw new Error(`Workers manager is not defined`);\r\n\r\n this.#workersManager = workersManager;\r\n }\r\n\r\n async computeMD5(chunkStreamProvider: ChunkStreamProvider, format: string, abortSignal?: AbortSignal): Promise<string> {\r\n abortSignal?.throwIfAborted();\r\n\r\n if (!this.#workersManager.hasAvailableWorkers())\r\n throw new Error(`There are no available MD5 Web Workers`);\r\n\r\n return new Promise((resolve, reject) => {\r\n let worker: Worker | undefined;\r\n\r\n const workId = guid();\r\n\r\n const cleanup = () => {\r\n worker?.removeEventListener(`message`, resultListener);\r\n worker?.removeEventListener(`error`, errorListener);\r\n worker?.removeEventListener(`messageerror`, messageErrorListener);\r\n abortSignal?.removeEventListener(`abort`, abortListener);\r\n };\r\n\r\n const succeed = (md5: string) => {\r\n cleanup();\r\n resolve(md5);\r\n };\r\n\r\n const fail = (error: unknown) => {\r\n cleanup();\r\n reject(error);\r\n };\r\n\r\n const errorListener = (event: ErrorEvent) => {\r\n fail(event.error instanceof Error ? event.error : new Error(event.message || `MD5 worker failed`));\r\n };\r\n\r\n const messageErrorListener = () => fail(new Error(`Cannot deserialize MD5 worker response`));\r\n const abortListener = () => fail(abortSignal?.reason ?? new Error(`Aborted`));\r\n\r\n const resultListener = (event: MessageEvent<MD5WorkerResponse>) => {\r\n if (event.data?.workId !== workId)\r\n return;\r\n\r\n if (event.data.result.isSuccess)\r\n succeed(event.data.result.md5);\r\n else\r\n fail(event.data.result.error);\r\n };\r\n\r\n abortSignal?.addEventListener(`abort`, abortListener, { once: true });\r\n\r\n const dispatchWorkToWebWorker = async () => {\r\n try {\r\n const chunkBlob = await chunkStreamProvider.getChunkBlob();\r\n\r\n abortSignal?.throwIfAborted();\r\n\r\n worker = this.#workersManager.getWorker();\r\n\r\n worker.addEventListener(`message`, resultListener);\r\n worker.addEventListener(`error`, errorListener, { once: true });\r\n worker.addEventListener(`messageerror`, messageErrorListener, { once: true });\r\n\r\n worker.postMessage({ workId, chunkBlob, format } satisfies MD5WorkerRequest);\r\n }\r\n catch (error) {\r\n fail(error);\r\n }\r\n };\r\n\r\n dispatchWorkToWebWorker();\r\n });\r\n }\r\n}"]}
@@ -0,0 +1,9 @@
1
+ import type MD5ComputationStrategyFactory from "../md5ComputationStrategyFactory.js";
2
+ import type MD5ComputationSession from "../md5ComputationSession.js";
3
+ export default class WebMD5ComputationStrategyFactory implements MD5ComputationStrategyFactory {
4
+ #private;
5
+ constructor(createWorker: () => Worker, workersCount: number, onFallback: (error: Error) => void);
6
+ createSession(abortSignal?: AbortSignal): Promise<MD5ComputationSession>;
7
+ private getSyncStrategy;
8
+ }
9
+ //# sourceMappingURL=webMD5ComputationStrategyFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webMD5ComputationStrategyFactory.d.ts","sourceRoot":"","sources":["../../../../../../src/uploader/md5Provider/md5ComputationStrategies/web/webMD5ComputationStrategyFactory.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,6BAA6B,MAAM,qCAAqC,CAAC;AACrF,OAAO,KAAK,qBAAqB,MAAM,6BAA6B,CAAC;AAErE,MAAM,CAAC,OAAO,OAAO,gCAAiC,YAAW,6BAA6B;;gBAK9E,YAAY,EAAE,MAAM,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI;IAS1F,aAAa,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAiC9E,OAAO,CAAC,eAAe;CAG1B"}