filemail-sdk 9.4.9 → 10.0.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 (205) hide show
  1. package/dist/src/client/downloader/downloaderCore.js +1 -1
  2. package/dist/src/client/downloader/downloaderCore.js.map +1 -1
  3. package/dist/src/client/uploader/node/nodeTransferUploader.d.ts.map +1 -1
  4. package/dist/src/client/uploader/node/nodeTransferUploader.js +6 -5
  5. package/dist/src/client/uploader/node/nodeTransferUploader.js.map +1 -1
  6. package/dist/src/client/uploader/transferUploaderBase.d.ts +1 -0
  7. package/dist/src/client/uploader/transferUploaderBase.d.ts.map +1 -1
  8. package/dist/src/client/uploader/transferUploaderBase.js +23 -28
  9. package/dist/src/client/uploader/transferUploaderBase.js.map +1 -1
  10. package/dist/src/client/uploader/transferUploaderConfig.d.ts +3 -4
  11. package/dist/src/client/uploader/transferUploaderConfig.d.ts.map +1 -1
  12. package/dist/src/client/uploader/transferUploaderConfig.js.map +1 -1
  13. package/dist/src/client/uploader/utils/uploaderUtils.d.ts.map +1 -1
  14. package/dist/src/client/uploader/utils/uploaderUtils.js +1 -2
  15. package/dist/src/client/uploader/utils/uploaderUtils.js.map +1 -1
  16. package/dist/src/client/uploader/web/webTransferUploader.d.ts.map +1 -1
  17. package/dist/src/client/uploader/web/webTransferUploader.js +5 -4
  18. package/dist/src/client/uploader/web/webTransferUploader.js.map +1 -1
  19. package/dist/src/downloader/chunkDownloader.js +2 -2
  20. package/dist/src/downloader/chunkDownloader.js.map +1 -1
  21. package/dist/src/index.d.ts +2 -1
  22. package/dist/src/index.d.ts.map +1 -1
  23. package/dist/src/index.js.map +1 -1
  24. package/dist/src/uploader/api/node/nodeFileServerUploadClient.d.ts +1 -1
  25. package/dist/src/uploader/api/node/nodeFileServerUploadClient.d.ts.map +1 -1
  26. package/dist/src/uploader/api/node/nodeFileServerUploadClient.js +5 -4
  27. package/dist/src/uploader/api/node/nodeFileServerUploadClient.js.map +1 -1
  28. package/dist/src/uploader/api/web/webFileServerUploadClient.d.ts +1 -1
  29. package/dist/src/uploader/api/web/webFileServerUploadClient.d.ts.map +1 -1
  30. package/dist/src/uploader/api/web/webFileServerUploadClient.js +5 -4
  31. package/dist/src/uploader/api/web/webFileServerUploadClient.js.map +1 -1
  32. package/dist/src/uploader/chunksIterator/chunksIterator.d.ts +1 -3
  33. package/dist/src/uploader/chunksIterator/chunksIterator.d.ts.map +1 -1
  34. package/dist/src/uploader/chunksIterator/chunksIterator.js +4 -4
  35. package/dist/src/uploader/chunksIterator/chunksIterator.js.map +1 -1
  36. package/dist/src/uploader/eventArgs/fileAckFailedEventArgs.d.ts +8 -0
  37. package/dist/src/uploader/eventArgs/fileAckFailedEventArgs.d.ts.map +1 -0
  38. package/dist/src/uploader/eventArgs/fileAckFailedEventArgs.js +2 -0
  39. package/dist/src/uploader/eventArgs/fileAckFailedEventArgs.js.map +1 -0
  40. package/dist/src/uploader/eventArgs/fileChunkUploadCompletedEventArgs.d.ts +1 -1
  41. package/dist/src/uploader/eventArgs/fileChunkUploadCompletedEventArgs.d.ts.map +1 -1
  42. package/dist/src/uploader/eventArgs/fileChunkUploadCompletedEventArgs.js.map +1 -1
  43. package/dist/src/uploader/eventArgs/fileChunkUploadEventArgs.d.ts +1 -0
  44. package/dist/src/uploader/eventArgs/fileChunkUploadEventArgs.d.ts.map +1 -1
  45. package/dist/src/uploader/eventArgs/fileChunkUploadEventArgs.js.map +1 -1
  46. package/dist/src/uploader/eventArgs/fileChunkUploadProgressedEventArgs.d.ts +1 -0
  47. package/dist/src/uploader/eventArgs/fileChunkUploadProgressedEventArgs.d.ts.map +1 -1
  48. package/dist/src/uploader/eventArgs/fileChunkUploadProgressedEventArgs.js.map +1 -1
  49. package/dist/src/uploader/eventArgs/fileUploadEventArgs.d.ts +1 -0
  50. package/dist/src/uploader/eventArgs/fileUploadEventArgs.d.ts.map +1 -1
  51. package/dist/src/uploader/eventArgs/fileUploadEventArgs.js.map +1 -1
  52. package/dist/src/uploader/eventArgs/filesBatchAckFailedEventArgs.d.ts +6 -0
  53. package/dist/src/uploader/eventArgs/filesBatchAckFailedEventArgs.d.ts.map +1 -0
  54. package/dist/src/uploader/eventArgs/filesBatchAckFailedEventArgs.js +2 -0
  55. package/dist/src/uploader/eventArgs/filesBatchAckFailedEventArgs.js.map +1 -0
  56. package/dist/src/uploader/eventArgs/transferUploadCompletedEventArgs.d.ts +1 -0
  57. package/dist/src/uploader/eventArgs/transferUploadCompletedEventArgs.d.ts.map +1 -1
  58. package/dist/src/uploader/eventArgs/transferUploadCompletedEventArgs.js.map +1 -1
  59. package/dist/src/uploader/export/transferUploadExportData.d.ts +3 -1
  60. package/dist/src/uploader/export/transferUploadExportData.d.ts.map +1 -1
  61. package/dist/src/uploader/export/transferUploadExportData.js.map +1 -1
  62. package/dist/src/uploader/export/transferUploadExportState.d.ts +4 -1
  63. package/dist/src/uploader/export/transferUploadExportState.d.ts.map +1 -1
  64. package/dist/src/uploader/export/transferUploadExportState.js.map +1 -1
  65. package/dist/src/uploader/export/transferUploadMetadata.d.ts +2 -9
  66. package/dist/src/uploader/export/transferUploadMetadata.d.ts.map +1 -1
  67. package/dist/src/uploader/export/transferUploadMetadata.js.map +1 -1
  68. package/dist/src/uploader/options/transferUploadConfig.d.ts +1 -2
  69. package/dist/src/uploader/options/transferUploadConfig.d.ts.map +1 -1
  70. package/dist/src/uploader/options/transferUploadConfig.js.map +1 -1
  71. package/dist/src/uploader/pendingFileAck.d.ts +7 -0
  72. package/dist/src/uploader/pendingFileAck.d.ts.map +1 -0
  73. package/dist/src/uploader/pendingFileAck.js +2 -0
  74. package/dist/src/uploader/pendingFileAck.js.map +1 -0
  75. package/dist/src/uploader/registeredTransferFile.d.ts +6 -0
  76. package/dist/src/uploader/registeredTransferFile.d.ts.map +1 -0
  77. package/dist/src/uploader/registeredTransferFile.js +2 -0
  78. package/dist/src/uploader/registeredTransferFile.js.map +1 -0
  79. package/dist/src/uploader/state/transferUploadState.d.ts +12 -9
  80. package/dist/src/uploader/state/transferUploadState.d.ts.map +1 -1
  81. package/dist/src/uploader/state/transferUploadState.js +56 -27
  82. package/dist/src/uploader/state/transferUploadState.js.map +1 -1
  83. package/dist/src/uploader/state/transferUploadStateFile.d.ts +1 -0
  84. package/dist/src/uploader/state/transferUploadStateFile.d.ts.map +1 -1
  85. package/dist/src/uploader/state/transferUploadStateFile.js +1 -0
  86. package/dist/src/uploader/state/transferUploadStateFile.js.map +1 -1
  87. package/dist/src/uploader/transferUpload.d.ts +17 -14
  88. package/dist/src/uploader/transferUpload.d.ts.map +1 -1
  89. package/dist/src/uploader/transferUpload.js +112 -124
  90. package/dist/src/uploader/transferUpload.js.map +1 -1
  91. package/dist/src/uploader/transferUploadAcker.d.ts +19 -0
  92. package/dist/src/uploader/transferUploadAcker.d.ts.map +1 -0
  93. package/dist/src/uploader/transferUploadAcker.js +119 -0
  94. package/dist/src/uploader/transferUploadAcker.js.map +1 -0
  95. package/dist/src/uploader/transferUploadEvent.d.ts +3 -1
  96. package/dist/src/uploader/transferUploadEvent.d.ts.map +1 -1
  97. package/dist/src/uploader/transferUploadEvent.js +3 -1
  98. package/dist/src/uploader/transferUploadEvent.js.map +1 -1
  99. package/dist/src/utils/api/apiClient.d.ts +6 -0
  100. package/dist/src/utils/api/apiClient.d.ts.map +1 -1
  101. package/dist/src/utils/api/apiClient.js.map +1 -1
  102. package/dist/src/utils/api/apiClientBase.d.ts +0 -2
  103. package/dist/src/utils/api/apiClientBase.d.ts.map +1 -1
  104. package/dist/src/utils/api/apiClientBase.js +6 -13
  105. package/dist/src/utils/api/apiClientBase.js.map +1 -1
  106. package/dist/src/utils/api/dtos/ackTransferFilesRequest.d.ts +9 -0
  107. package/dist/src/utils/api/dtos/ackTransferFilesRequest.d.ts.map +1 -0
  108. package/dist/src/utils/api/dtos/ackTransferFilesRequest.js +2 -0
  109. package/dist/src/utils/api/dtos/ackTransferFilesRequest.js.map +1 -0
  110. package/dist/src/utils/api/dtos/ackTransferFilesResponse.d.ts +7 -0
  111. package/dist/src/utils/api/dtos/ackTransferFilesResponse.d.ts.map +1 -0
  112. package/dist/src/utils/api/dtos/ackTransferFilesResponse.js +2 -0
  113. package/dist/src/utils/api/dtos/ackTransferFilesResponse.js.map +1 -0
  114. package/dist/src/utils/api/dtos/finalizeTransferRequest.d.ts +1 -1
  115. package/dist/src/utils/api/dtos/finalizeTransferRequest.d.ts.map +1 -1
  116. package/dist/src/utils/api/dtos/finalizeTransferRequest.js.map +1 -1
  117. package/dist/src/utils/api/dtos/finalizeTransferResponse.d.ts +2 -0
  118. package/dist/src/utils/api/dtos/finalizeTransferResponse.d.ts.map +1 -1
  119. package/dist/src/utils/api/dtos/finalizeTransferResponse.js.map +1 -1
  120. package/dist/src/utils/api/dtos/initializeTransferRequest.d.ts +1 -0
  121. package/dist/src/utils/api/dtos/initializeTransferRequest.d.ts.map +1 -1
  122. package/dist/src/utils/api/dtos/initializeTransferRequest.js.map +1 -1
  123. package/dist/src/utils/api/dtos/initializeTransferResponse.d.ts +0 -9
  124. package/dist/src/utils/api/dtos/initializeTransferResponse.d.ts.map +1 -1
  125. package/dist/src/utils/api/dtos/initializeTransferResponse.js.map +1 -1
  126. package/dist/src/utils/api/dtos/registerTransferFilesRequest.d.ts +18 -0
  127. package/dist/src/utils/api/dtos/registerTransferFilesRequest.d.ts.map +1 -0
  128. package/dist/src/utils/api/dtos/registerTransferFilesRequest.js +2 -0
  129. package/dist/src/utils/api/dtos/registerTransferFilesRequest.js.map +1 -0
  130. package/dist/src/utils/api/dtos/registerTransferFilesResponse.d.ts +9 -0
  131. package/dist/src/utils/api/dtos/registerTransferFilesResponse.d.ts.map +1 -0
  132. package/dist/src/utils/api/dtos/registerTransferFilesResponse.js +2 -0
  133. package/dist/src/utils/api/dtos/registerTransferFilesResponse.js.map +1 -0
  134. package/dist/src/utils/api/fileServerClientFactory.d.ts +2 -4
  135. package/dist/src/utils/api/fileServerClientFactory.d.ts.map +1 -1
  136. package/dist/src/utils/api/fileServerClientFactory.js.map +1 -1
  137. package/dist/src/utils/api/node/nodeApiClient.d.ts +6 -0
  138. package/dist/src/utils/api/node/nodeApiClient.d.ts.map +1 -1
  139. package/dist/src/utils/api/node/nodeApiClient.js +27 -2
  140. package/dist/src/utils/api/node/nodeApiClient.js.map +1 -1
  141. package/dist/src/utils/api/node/nodeFileServerClientFactory.d.ts +2 -4
  142. package/dist/src/utils/api/node/nodeFileServerClientFactory.d.ts.map +1 -1
  143. package/dist/src/utils/api/node/nodeFileServerClientFactory.js +3 -7
  144. package/dist/src/utils/api/node/nodeFileServerClientFactory.js.map +1 -1
  145. package/dist/src/utils/api/web/webApiClient.d.ts +6 -0
  146. package/dist/src/utils/api/web/webApiClient.d.ts.map +1 -1
  147. package/dist/src/utils/api/web/webApiClient.js +25 -2
  148. package/dist/src/utils/api/web/webApiClient.js.map +1 -1
  149. package/dist/src/utils/api/web/webFileServerClientFactory.d.ts +2 -4
  150. package/dist/src/utils/api/web/webFileServerClientFactory.d.ts.map +1 -1
  151. package/dist/src/utils/api/web/webFileServerClientFactory.js +3 -6
  152. package/dist/src/utils/api/web/webFileServerClientFactory.js.map +1 -1
  153. package/package.json +1 -2
  154. package/dist/src/uploader/api/dtos/handshakeRequest.d.ts +0 -6
  155. package/dist/src/uploader/api/dtos/handshakeRequest.d.ts.map +0 -1
  156. package/dist/src/uploader/api/dtos/handshakeRequest.js +0 -2
  157. package/dist/src/uploader/api/dtos/handshakeRequest.js.map +0 -1
  158. package/dist/src/uploader/api/dtos/handshakeResponse.d.ts +0 -6
  159. package/dist/src/uploader/api/dtos/handshakeResponse.d.ts.map +0 -1
  160. package/dist/src/uploader/api/dtos/handshakeResponse.js +0 -2
  161. package/dist/src/uploader/api/dtos/handshakeResponse.js.map +0 -1
  162. package/dist/src/uploader/api/dtos/pingResponse.d.ts +0 -5
  163. package/dist/src/uploader/api/dtos/pingResponse.d.ts.map +0 -1
  164. package/dist/src/uploader/api/dtos/pingResponse.js +0 -2
  165. package/dist/src/uploader/api/dtos/pingResponse.js.map +0 -1
  166. package/dist/src/uploader/api/dtos/sendChunkRequest.d.ts +0 -10
  167. package/dist/src/uploader/api/dtos/sendChunkRequest.d.ts.map +0 -1
  168. package/dist/src/uploader/api/dtos/sendChunkRequest.js +0 -2
  169. package/dist/src/uploader/api/dtos/sendChunkRequest.js.map +0 -1
  170. package/dist/src/uploader/api/fileServerUdpClient.d.ts +0 -19
  171. package/dist/src/uploader/api/fileServerUdpClient.d.ts.map +0 -1
  172. package/dist/src/uploader/api/fileServerUdpClient.js +0 -2
  173. package/dist/src/uploader/api/fileServerUdpClient.js.map +0 -1
  174. package/dist/src/uploader/api/node/nodeFileServerUdpClient.d.ts +0 -39
  175. package/dist/src/uploader/api/node/nodeFileServerUdpClient.d.ts.map +0 -1
  176. package/dist/src/uploader/api/node/nodeFileServerUdpClient.js +0 -264
  177. package/dist/src/uploader/api/node/nodeFileServerUdpClient.js.map +0 -1
  178. package/dist/src/uploader/eventArgs/transferUploadModeChosenEventArgs.d.ts +0 -7
  179. package/dist/src/uploader/eventArgs/transferUploadModeChosenEventArgs.d.ts.map +0 -1
  180. package/dist/src/uploader/eventArgs/transferUploadModeChosenEventArgs.js +0 -2
  181. package/dist/src/uploader/eventArgs/transferUploadModeChosenEventArgs.js.map +0 -1
  182. package/dist/src/uploader/optimizer/optimizationValues.d.ts +0 -9
  183. package/dist/src/uploader/optimizer/optimizationValues.d.ts.map +0 -1
  184. package/dist/src/uploader/optimizer/optimizationValues.js +0 -2
  185. package/dist/src/uploader/optimizer/optimizationValues.js.map +0 -1
  186. package/dist/src/uploader/optimizer/strategies/udpConcurrencyBasedOptimizationStrategy.d.ts +0 -33
  187. package/dist/src/uploader/optimizer/strategies/udpConcurrencyBasedOptimizationStrategy.d.ts.map +0 -1
  188. package/dist/src/uploader/optimizer/strategies/udpConcurrencyBasedOptimizationStrategy.js +0 -135
  189. package/dist/src/uploader/optimizer/strategies/udpConcurrencyBasedOptimizationStrategy.js.map +0 -1
  190. package/dist/src/uploader/optimizer/strategies/udpSleepBasedOptimizationStrategy.d.ts +0 -30
  191. package/dist/src/uploader/optimizer/strategies/udpSleepBasedOptimizationStrategy.d.ts.map +0 -1
  192. package/dist/src/uploader/optimizer/strategies/udpSleepBasedOptimizationStrategy.js +0 -106
  193. package/dist/src/uploader/optimizer/strategies/udpSleepBasedOptimizationStrategy.js.map +0 -1
  194. package/dist/src/uploader/optimizer/transferUploadOptimizationStrategy.d.ts +0 -20
  195. package/dist/src/uploader/optimizer/transferUploadOptimizationStrategy.d.ts.map +0 -1
  196. package/dist/src/uploader/optimizer/transferUploadOptimizationStrategy.js +0 -2
  197. package/dist/src/uploader/optimizer/transferUploadOptimizationStrategy.js.map +0 -1
  198. package/dist/src/uploader/optimizer/transferUploadOptimizer.d.ts +0 -27
  199. package/dist/src/uploader/optimizer/transferUploadOptimizer.d.ts.map +0 -1
  200. package/dist/src/uploader/optimizer/transferUploadOptimizer.js +0 -169
  201. package/dist/src/uploader/optimizer/transferUploadOptimizer.js.map +0 -1
  202. package/dist/src/uploader/optimizer/uploadOptimizer.d.ts +0 -11
  203. package/dist/src/uploader/optimizer/uploadOptimizer.d.ts.map +0 -1
  204. package/dist/src/uploader/optimizer/uploadOptimizer.js +0 -2
  205. package/dist/src/uploader/optimizer/uploadOptimizer.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"uploaderUtils.js","sourceRoot":"","sources":["../../../../../src/client/uploader/utils/uploaderUtils.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,iBAAiB,CAAC,MAA8B;IAC5D,OAAO;QACH,2BAA2B,EAAE,MAAM,CAAC,2BAA2B;QAC/D,wBAAwB,EAAE,MAAM,CAAC,wBAAwB;QACzD,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,UAAU,EAAE,MAAM,CAAC,UAAU;KAChC,CAAC;AACN,CAAC;AAED,sCAAsC;AACtC,MAAM,UAAU,eAAe,CAAI,YAAiE;IAChG,IAAI,4BAA4B,CAAC,YAAY,CAAC;QAC1C,YAAY,CAAC,qBAAqB,GAAG,IAAI,GAAG,CAAC,eAAe,EAAE,YAAY,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC;AAC/G,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAI,IAAyD;IACrG,OAAQ,IAAoC,CAAC,WAAW,KAAK,SAAS,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,cAAc,CAAwB,wBAA6G;IAC/J,MAAM,oBAAoB,GAAG,wBAA+E,CAAC;IAC7G,OAAO,oBAAoB,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACjG,CAAC","sourcesContent":["import type { TransferUploadExportData } from \"../../../uploader/export/transferUploadExportData.js\";\nimport type { TransferUploadAppendInfo } from \"../../../uploader/options/transferUploadAppendInfo.js\";\nimport type TransferUploadConfig from \"../../../uploader/options/transferUploadConfig.js\";\nimport type TransferUploadInfo from \"../../../uploader/options/transferUploadInfo.js\";\nimport type FileDetails from \"../../../utils/fileSystem/fileDetails.js\";\nimport type TransferUploaderConfig from \"../transferUploaderConfig.js\";\n\nexport function buildUploadConfig(config: TransferUploaderConfig): TransferUploadConfig {\n return {\n progressEventThrottlingInMs: config.progressEventThrottlingInMs,\n currentRatesTimespanInMs: config.currentRatesTimespanInMs,\n forceUdp: config.forceUdp,\n turnOffUdp: config.turnOffUdp,\n };\n}\n\n/* eslint-disable no-param-reassign */\nexport function fixTransferInfo<T>(transferInfo: TransferUploadInfo<T> | TransferUploadAppendInfo<T>): void {\n if (isTransferUploaderAppendInfo(transferInfo))\n transferInfo.transferFileServerUrl = new URL(`savefile.ashx`, transferInfo.transferFileServerUrl).href;\n}\n\nexport function isTransferUploaderAppendInfo<T>(info: TransferUploadInfo<T> | TransferUploadAppendInfo<T>): info is TransferUploadAppendInfo<T> {\n return (info as TransferUploadAppendInfo<T>).transferKey !== undefined;\n}\n\nexport function isTransferInfo<T extends FileDetails>(transferInfoOrExportData: (TransferUploadInfo<T> | TransferUploadAppendInfo<T>) | TransferUploadExportData<T>): transferInfoOrExportData is TransferUploadInfo<T> | TransferUploadAppendInfo<T> {\n const possiblyTransferInfo = transferInfoOrExportData as TransferUploadInfo<T> | TransferUploadAppendInfo<T>;\n return possiblyTransferInfo.files !== undefined && Array.isArray(possiblyTransferInfo.files);\n}"]}
1
+ {"version":3,"file":"uploaderUtils.js","sourceRoot":"","sources":["../../../../../src/client/uploader/utils/uploaderUtils.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,iBAAiB,CAAC,MAA8B;IAC5D,OAAO;QACH,2BAA2B,EAAE,MAAM,CAAC,2BAA2B;QAC/D,wBAAwB,EAAE,MAAM,CAAC,wBAAwB;QACzD,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;KAC5C,CAAC;AACN,CAAC;AAED,sCAAsC;AACtC,MAAM,UAAU,eAAe,CAAI,YAAiE;IAChG,IAAI,4BAA4B,CAAC,YAAY,CAAC;QAC1C,YAAY,CAAC,qBAAqB,GAAG,IAAI,GAAG,CAAC,eAAe,EAAE,YAAY,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC;AAC/G,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAI,IAAyD;IACrG,OAAQ,IAAoC,CAAC,WAAW,KAAK,SAAS,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,cAAc,CAAwB,wBAA6G;IAC/J,MAAM,oBAAoB,GAAG,wBAA+E,CAAC;IAC7G,OAAO,oBAAoB,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACjG,CAAC","sourcesContent":["import type { TransferUploadExportData } from \"../../../uploader/export/transferUploadExportData.js\";\nimport type { TransferUploadAppendInfo } from \"../../../uploader/options/transferUploadAppendInfo.js\";\nimport type TransferUploadConfig from \"../../../uploader/options/transferUploadConfig.js\";\nimport type TransferUploadInfo from \"../../../uploader/options/transferUploadInfo.js\";\nimport type FileDetails from \"../../../utils/fileSystem/fileDetails.js\";\nimport type TransferUploaderConfig from \"../transferUploaderConfig.js\";\n\nexport function buildUploadConfig(config: TransferUploaderConfig): TransferUploadConfig {\n return {\n progressEventThrottlingInMs: config.progressEventThrottlingInMs,\n currentRatesTimespanInMs: config.currentRatesTimespanInMs,\n chunkSizeInBytes: config.chunkSizeInBytes,\n };\n}\n\n/* eslint-disable no-param-reassign */\nexport function fixTransferInfo<T>(transferInfo: TransferUploadInfo<T> | TransferUploadAppendInfo<T>): void {\n if (isTransferUploaderAppendInfo(transferInfo))\n transferInfo.transferFileServerUrl = new URL(`savefile.ashx`, transferInfo.transferFileServerUrl).href;\n}\n\nexport function isTransferUploaderAppendInfo<T>(info: TransferUploadInfo<T> | TransferUploadAppendInfo<T>): info is TransferUploadAppendInfo<T> {\n return (info as TransferUploadAppendInfo<T>).transferKey !== undefined;\n}\n\nexport function isTransferInfo<T extends FileDetails>(transferInfoOrExportData: (TransferUploadInfo<T> | TransferUploadAppendInfo<T>) | TransferUploadExportData<T>): transferInfoOrExportData is TransferUploadInfo<T> | TransferUploadAppendInfo<T> {\n const possiblyTransferInfo = transferInfoOrExportData as TransferUploadInfo<T> | TransferUploadAppendInfo<T>;\n return possiblyTransferInfo.files !== undefined && Array.isArray(possiblyTransferInfo.files);\n}"]}
@@ -1 +1 @@
1
- {"version":3,"file":"webTransferUploader.d.ts","sourceRoot":"","sources":["../../../../../src/client/uploader/web/webTransferUploader.ts"],"names":[],"mappings":"AAMA,OAAO,oBAAoB,MAAM,4BAA4B,CAAC;AAS9D,OAAO,KAAK,MAAM,MAAM,yBAAyB,CAAC;AAClD,OAAO,KAAK,oBAAoB,MAAM,+BAA+B,CAAC;AACtE,OAAO,KAAK,kBAAkB,MAAM,iDAAiD,CAAC;AACtF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uDAAuD,CAAC;AACtG,OAAO,KAAK,sBAAsB,MAAM,8BAA8B,CAAC;AACvE,OAAO,KAAK,cAAc,MAAM,iDAAiD,CAAC;AAElF,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,oBAAoB,CAAC,cAAc,CAAC;gBACrE,YAAY,EAAE,kBAAkB,CAAC,cAAc,CAAC,GAAG,wBAAwB,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,sBAAsB,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM;CAsB3L"}
1
+ {"version":3,"file":"webTransferUploader.d.ts","sourceRoot":"","sources":["../../../../../src/client/uploader/web/webTransferUploader.ts"],"names":[],"mappings":"AAMA,OAAO,oBAAoB,MAAM,4BAA4B,CAAC;AAS9D,OAAO,KAAK,MAAM,MAAM,yBAAyB,CAAC;AAClD,OAAO,KAAK,oBAAoB,MAAM,+BAA+B,CAAC;AACtE,OAAO,KAAK,kBAAkB,MAAM,iDAAiD,CAAC;AACtF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uDAAuD,CAAC;AACtG,OAAO,KAAK,sBAAsB,MAAM,8BAA8B,CAAC;AACvE,OAAO,KAAK,cAAc,MAAM,iDAAiD,CAAC;AAElF,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,oBAAoB,CAAC,cAAc,CAAC;gBACrE,YAAY,EAAE,kBAAkB,CAAC,cAAc,CAAC,GAAG,wBAAwB,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,sBAAsB,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM;CAwB3L"}
@@ -1,7 +1,7 @@
1
1
  import { v4 as guid } from 'uuid';
2
2
  import TransferUpload from "../../../uploader/transferUpload.js";
3
- import TransferUploadOptimizer from "../../../uploader/optimizer/transferUploadOptimizer.js";
4
- import UdpConcurrencyBasedOptimizationStrategy from "../../../uploader/optimizer/strategies/udpConcurrencyBasedOptimizationStrategy.js";
3
+ import TransferUploadAcker from "../../../uploader/transferUploadAcker.js";
4
+ import TransferConcurrencyController from "../../../utils/concurrencyController/transferConcurrencyController.js";
5
5
  import { buildUploadConfig, fixTransferInfo } from '../utils/uploaderUtils.js';
6
6
  import TransferUploaderBase from "../transferUploaderBase.js";
7
7
  import WebEventsEngine from '../../../utils/events/web/webEventsEngine.js';
@@ -16,7 +16,7 @@ export default class WebTransferUploader extends TransferUploaderBase {
16
16
  const trackingId = config.trackingId || guid();
17
17
  const eventsEngine = new WebEventsEngine();
18
18
  const chunkStreamProviderFactory = new WebFileDetailsUploaderChunkStreamProviderFactory();
19
- const optimizer = new TransferUploadOptimizer(config.tcpChunkSizeInBytes, config.tcpChunksUploadInParallel, eventsEngine, new UdpConcurrencyBasedOptimizationStrategy());
19
+ const concurrencyController = new TransferConcurrencyController(config.chunksUploadInParallel);
20
20
  const fileServerClientFactory = new WebFileServerClientFactory(envValues.source, envValues.sourceDetails, config.uploadIdleTimeoutInMs, config.chunkUploadRetryLimit);
21
21
  const cryptography = new WebCryptographyProvider();
22
22
  const uploadConfig = buildUploadConfig(config);
@@ -24,8 +24,9 @@ export default class WebTransferUploader extends TransferUploaderBase {
24
24
  const apiClient = new WebApiClient(envValues.apiBaseUrl, envValues.source, envValues.sourceDetails, config.apiRequestTotalTimeoutInMs, config.apiRetryLimit);
25
25
  if (config.logintoken)
26
26
  apiClient.setLoginToken(config.logintoken);
27
+ const acker = new TransferUploadAcker(apiClient, eventsEngine, config.fileAckIntervalInMs);
27
28
  fixTransferInfo(transferInfo);
28
- const transfer = new TransferUpload(chunkStreamProviderFactory, apiClient, fileServerClientFactory, eventsEngine, transferInfo, uploadConfig, optimizer, cryptography);
29
+ const transfer = new TransferUpload(chunkStreamProviderFactory, apiClient, fileServerClientFactory, eventsEngine, transferInfo, uploadConfig, concurrencyController, cryptography, acker);
29
30
  super(transfer, transferInfo.files, config, envValues, logger, healthMonitor, trackingId);
30
31
  }
31
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"webTransferUploader.js","sourceRoot":"","sources":["../../../../../src/client/uploader/web/webTransferUploader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,MAAM,MAAM,CAAC;AAElC,OAAO,cAAc,MAAM,qCAAqC,CAAC;AACjE,OAAO,uBAAuB,MAAM,wDAAwD,CAAC;AAC7F,OAAO,uCAAuC,MAAM,mFAAmF,CAAC;AACxI,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,oBAAoB,MAAM,4BAA4B,CAAC;AAC9D,OAAO,eAAe,MAAM,8CAA8C,CAAC;AAC3E,OAAO,gDAAgD,MAAM,kGAAkG,CAAC;AAChK,OAAO,uBAAuB,MAAM,sDAAsD,CAAC;AAC3F,OAAO,0BAA0B,MAAM,sDAAsD,CAAC;AAC9F,OAAO,YAAY,MAAM,wCAAwC,CAAC;AAClE,OAAO,gBAAgB,MAAM,uDAAuD,CAAC;AACrF,OAAO,6BAA6B,MAAM,sDAAsD,CAAC;AASjG,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,oBAAoC;IACjF,YAAY,YAA2F,EAAE,MAA8B,EAAE,SAA+B,EAAE,MAAc;QACpL,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;QAE/C,MAAM,YAAY,GAAG,IAAI,eAAe,EAAE,CAAC;QAC3C,MAAM,0BAA0B,GAAG,IAAI,gDAAgD,EAAE,CAAC;QAC1F,MAAM,SAAS,GAAG,IAAI,uBAAuB,CAAC,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAAC,yBAAyB,EAAE,YAAY,EAAE,IAAI,uCAAuC,EAAE,CAAC,CAAC;QACzK,MAAM,uBAAuB,GAAG,IAAI,0BAA0B,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC,qBAAqB,EAAE,MAAM,CAAC,qBAAqB,CAAC,CAAC;QACtK,MAAM,YAAY,GAAG,IAAI,uBAAuB,EAAE,CAAC;QACnD,MAAM,YAAY,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,aAAa,GAAG,IAAI,6BAA6B,CAAC,IAAI,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,YAAY,CAAC,CAAC;QAElH,MAAM,SAAS,GAAG,IAAI,YAAY,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC,0BAA0B,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;QAE7J,IAAI,MAAM,CAAC,UAAU;YACjB,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAE/C,eAAe,CAAC,YAAY,CAAC,CAAC;QAE9B,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,0BAA0B,EAAE,SAAS,EAAE,uBAAuB,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;QAEvK,KAAK,CAAC,QAAQ,EAAE,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;IAC9F,CAAC;CACJ","sourcesContent":["import { v4 as guid } from 'uuid';\n\nimport TransferUpload from \"../../../uploader/transferUpload.js\";\nimport TransferUploadOptimizer from \"../../../uploader/optimizer/transferUploadOptimizer.js\";\nimport UdpConcurrencyBasedOptimizationStrategy from \"../../../uploader/optimizer/strategies/udpConcurrencyBasedOptimizationStrategy.js\";\nimport { buildUploadConfig, fixTransferInfo } from '../utils/uploaderUtils.js';\nimport TransferUploaderBase from \"../transferUploaderBase.js\";\nimport WebEventsEngine from '../../../utils/events/web/webEventsEngine.js';\nimport WebFileDetailsUploaderChunkStreamProviderFactory from '../../../uploader/chunkStreamProviderFactory/webFileDetailsUploaderChunkStreamProviderFactory.js';\nimport WebCryptographyProvider from '../../../utils/crypto/web/webCryptographyProvider.js';\nimport WebFileServerClientFactory from '../../../utils/api/web/webFileServerClientFactory.js';\nimport WebApiClient from '../../../utils/api/web/webApiClient.js';\nimport WebOnlineChecker from '../../healthMonitor/onlineChecker/webOnlineChecker.js';\nimport TransferUploaderHealthMonitor from '../../healthMonitor/transferUploaderHealthMonitor.js';\n\nimport type Logger from \"../../loggers/logger.js\";\nimport type EnvironmentVariables from \"../../environmentVariables.js\";\nimport type TransferUploadInfo from \"../../../uploader/options/transferUploadInfo.js\";\nimport type { TransferUploadAppendInfo } from \"../../../uploader/options/transferUploadAppendInfo.js\";\nimport type TransferUploaderConfig from \"../transferUploaderConfig.js\";\nimport type WebFileDetails from \"../../../utils/fileSystem/web/webFileDetails.js\";\n\nexport default class WebTransferUploader extends TransferUploaderBase<WebFileDetails> {\n constructor(transferInfo: TransferUploadInfo<WebFileDetails> | TransferUploadAppendInfo<WebFileDetails>, config: TransferUploaderConfig, envValues: EnvironmentVariables, logger: Logger) {\n const trackingId = config.trackingId || guid();\n\n const eventsEngine = new WebEventsEngine();\n const chunkStreamProviderFactory = new WebFileDetailsUploaderChunkStreamProviderFactory();\n const optimizer = new TransferUploadOptimizer(config.tcpChunkSizeInBytes, config.tcpChunksUploadInParallel, eventsEngine, new UdpConcurrencyBasedOptimizationStrategy());\n const fileServerClientFactory = new WebFileServerClientFactory(envValues.source, envValues.sourceDetails, config.uploadIdleTimeoutInMs, config.chunkUploadRetryLimit);\n const cryptography = new WebCryptographyProvider();\n const uploadConfig = buildUploadConfig(config);\n const healthMonitor = new TransferUploaderHealthMonitor(new WebOnlineChecker(envValues.apiBaseUrl), eventsEngine);\n\n const apiClient = new WebApiClient(envValues.apiBaseUrl, envValues.source, envValues.sourceDetails, config.apiRequestTotalTimeoutInMs, config.apiRetryLimit);\n\n if (config.logintoken)\n apiClient.setLoginToken(config.logintoken);\n\n fixTransferInfo(transferInfo);\n\n const transfer = new TransferUpload(chunkStreamProviderFactory, apiClient, fileServerClientFactory, eventsEngine, transferInfo, uploadConfig, optimizer, cryptography);\n\n super(transfer, transferInfo.files, config, envValues, logger, healthMonitor, trackingId);\n }\n}"]}
1
+ {"version":3,"file":"webTransferUploader.js","sourceRoot":"","sources":["../../../../../src/client/uploader/web/webTransferUploader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,MAAM,MAAM,CAAC;AAElC,OAAO,cAAc,MAAM,qCAAqC,CAAC;AACjE,OAAO,mBAAmB,MAAM,0CAA0C,CAAC;AAC3E,OAAO,6BAA6B,MAAM,uEAAuE,CAAC;AAClH,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,oBAAoB,MAAM,4BAA4B,CAAC;AAC9D,OAAO,eAAe,MAAM,8CAA8C,CAAC;AAC3E,OAAO,gDAAgD,MAAM,kGAAkG,CAAC;AAChK,OAAO,uBAAuB,MAAM,sDAAsD,CAAC;AAC3F,OAAO,0BAA0B,MAAM,sDAAsD,CAAC;AAC9F,OAAO,YAAY,MAAM,wCAAwC,CAAC;AAClE,OAAO,gBAAgB,MAAM,uDAAuD,CAAC;AACrF,OAAO,6BAA6B,MAAM,sDAAsD,CAAC;AASjG,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,oBAAoC;IACjF,YAAY,YAA2F,EAAE,MAA8B,EAAE,SAA+B,EAAE,MAAc;QACpL,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;QAE/C,MAAM,YAAY,GAAG,IAAI,eAAe,EAAE,CAAC;QAC3C,MAAM,0BAA0B,GAAG,IAAI,gDAAgD,EAAE,CAAC;QAC1F,MAAM,qBAAqB,GAAG,IAAI,6BAA6B,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;QAC/F,MAAM,uBAAuB,GAAG,IAAI,0BAA0B,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC,qBAAqB,EAAE,MAAM,CAAC,qBAAqB,CAAC,CAAC;QACtK,MAAM,YAAY,GAAG,IAAI,uBAAuB,EAAE,CAAC;QACnD,MAAM,YAAY,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,aAAa,GAAG,IAAI,6BAA6B,CAAC,IAAI,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,YAAY,CAAC,CAAC;QAElH,MAAM,SAAS,GAAG,IAAI,YAAY,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC,0BAA0B,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;QAE7J,IAAI,MAAM,CAAC,UAAU;YACjB,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAE/C,MAAM,KAAK,GAAG,IAAI,mBAAmB,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC;QAE3F,eAAe,CAAC,YAAY,CAAC,CAAC;QAE9B,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,0BAA0B,EAAE,SAAS,EAAE,uBAAuB,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,qBAAqB,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;QAE1L,KAAK,CAAC,QAAQ,EAAE,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;IAC9F,CAAC;CACJ","sourcesContent":["import { v4 as guid } from 'uuid';\n\nimport TransferUpload from \"../../../uploader/transferUpload.js\";\nimport TransferUploadAcker from \"../../../uploader/transferUploadAcker.js\";\nimport TransferConcurrencyController from \"../../../utils/concurrencyController/transferConcurrencyController.js\";\nimport { buildUploadConfig, fixTransferInfo } from '../utils/uploaderUtils.js';\nimport TransferUploaderBase from \"../transferUploaderBase.js\";\nimport WebEventsEngine from '../../../utils/events/web/webEventsEngine.js';\nimport WebFileDetailsUploaderChunkStreamProviderFactory from '../../../uploader/chunkStreamProviderFactory/webFileDetailsUploaderChunkStreamProviderFactory.js';\nimport WebCryptographyProvider from '../../../utils/crypto/web/webCryptographyProvider.js';\nimport WebFileServerClientFactory from '../../../utils/api/web/webFileServerClientFactory.js';\nimport WebApiClient from '../../../utils/api/web/webApiClient.js';\nimport WebOnlineChecker from '../../healthMonitor/onlineChecker/webOnlineChecker.js';\nimport TransferUploaderHealthMonitor from '../../healthMonitor/transferUploaderHealthMonitor.js';\n\nimport type Logger from \"../../loggers/logger.js\";\nimport type EnvironmentVariables from \"../../environmentVariables.js\";\nimport type TransferUploadInfo from \"../../../uploader/options/transferUploadInfo.js\";\nimport type { TransferUploadAppendInfo } from \"../../../uploader/options/transferUploadAppendInfo.js\";\nimport type TransferUploaderConfig from \"../transferUploaderConfig.js\";\nimport type WebFileDetails from \"../../../utils/fileSystem/web/webFileDetails.js\";\n\nexport default class WebTransferUploader extends TransferUploaderBase<WebFileDetails> {\n constructor(transferInfo: TransferUploadInfo<WebFileDetails> | TransferUploadAppendInfo<WebFileDetails>, config: TransferUploaderConfig, envValues: EnvironmentVariables, logger: Logger) {\n const trackingId = config.trackingId || guid();\n\n const eventsEngine = new WebEventsEngine();\n const chunkStreamProviderFactory = new WebFileDetailsUploaderChunkStreamProviderFactory();\n const concurrencyController = new TransferConcurrencyController(config.chunksUploadInParallel);\n const fileServerClientFactory = new WebFileServerClientFactory(envValues.source, envValues.sourceDetails, config.uploadIdleTimeoutInMs, config.chunkUploadRetryLimit);\n const cryptography = new WebCryptographyProvider();\n const uploadConfig = buildUploadConfig(config);\n const healthMonitor = new TransferUploaderHealthMonitor(new WebOnlineChecker(envValues.apiBaseUrl), eventsEngine);\n\n const apiClient = new WebApiClient(envValues.apiBaseUrl, envValues.source, envValues.sourceDetails, config.apiRequestTotalTimeoutInMs, config.apiRetryLimit);\n\n if (config.logintoken)\n apiClient.setLoginToken(config.logintoken);\n\n const acker = new TransferUploadAcker(apiClient, eventsEngine, config.fileAckIntervalInMs);\n\n fixTransferInfo(transferInfo);\n\n const transfer = new TransferUpload(chunkStreamProviderFactory, apiClient, fileServerClientFactory, eventsEngine, transferInfo, uploadConfig, concurrencyController, cryptography, acker);\n\n super(transfer, transferInfo.files, config, envValues, logger, healthMonitor, trackingId);\n }\n}"]}
@@ -31,7 +31,7 @@ export default class ChunkDownloader {
31
31
  this.#fileServerClientFactory = fileServerClientFactory;
32
32
  this.#chunkStreamProviderFactory = chunkStreamProviderFactory;
33
33
  this.#eventsEngine = eventsEngine;
34
- this.#chunkDownloadClient = this.#fileServerClientFactory.createFileServerTcpDownloadClient(this.#file.url, this.#chunk.start, this.#chunk.end, this.#transferId, this.#file.name, this.#options);
34
+ this.#chunkDownloadClient = this.#fileServerClientFactory.createFileServerDownloadClient(this.#file.url, this.#chunk.start, this.#chunk.end, this.#transferId, this.#file.name, this.#options);
35
35
  this.#logger = logger;
36
36
  this.#encryptionData = encryptionData;
37
37
  }
@@ -150,7 +150,7 @@ export default class ChunkDownloader {
150
150
  }
151
151
  #recreateDownloadClient() {
152
152
  this.#chunkDownloadClient.removeEventListener(`progress`, this.#onProgress);
153
- this.#chunkDownloadClient = this.#fileServerClientFactory.createFileServerTcpDownloadClient(this.#file.url, this.#chunk.start, this.#chunk.end, this.#transferId, this.#file.name, this.#options);
153
+ this.#chunkDownloadClient = this.#fileServerClientFactory.createFileServerDownloadClient(this.#file.url, this.#chunk.start, this.#chunk.end, this.#transferId, this.#file.name, this.#options);
154
154
  this.#chunkDownloadClient.addEventListener(`progress`, this.#onProgress);
155
155
  }
156
156
  #throwIfRunning() {
@@ -1 +1 @@
1
- {"version":3,"file":"chunkDownloader.js","sourceRoot":"","sources":["../../../src/downloader/chunkDownloader.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable no-await-in-loop */\nimport { RequestError } from \"got\";\nimport sleep from \"abortable-sleep\";\n\nimport TransferStatus from \"../utils/types/transferStatus.js\";\nimport DownloadError from \"./dtos/downloadError.js\";\nimport TransferDownloadEvent from \"./dtos/downloadEvent.js\";\nimport DownloadErrorCode from \"./dtos/downloadErrorCode.js\";\nimport DownloadFileChunkProgress from \"./downloadStatus/downloadFileChunkProgress.js\";\nimport { isBaseResponse } from \"../utils/api/dtos/baseResponse.js\";\n\nimport type DownloadFileChunkInfo from \"./dtos/downloadFileChunkInfo.js\";\nimport type DownloadFileInfo from \"./dtos/downloadFileInfo.js\";\nimport type DownloadOptions from \"./downloadOptions.js\";\nimport type DownloadState from \"./downloadStatus/downloadState.js\";\nimport type FileServerClientFactory from \"../utils/api/fileServerClientFactory.js\";\nimport type ChunkStreamProviderFactory from \"../utils/fileSystem/chunkStreamProviderFactory.js\";\nimport type EventsEngine from \"../utils/events/eventsEngine.js\";\nimport type FileServerDownloadClient from \"./api/fileServerDownloadClient.js\";\nimport type ChunkProgressEvent from \"../utils/events/chunkProgressEvent.js\";\nimport type FileDownloadFailedEventArgs from \"./eventArgs/fileDownloadFailedEventArgs.js\";\nimport type DownloadLogger from \"./downloadLogger.js\";\nimport type { ChunkStreamProviderEncryptionData } from \"../utils/fileSystem/chunkStreamProvider.js\";\n\nexport default class ChunkDownloader {\n #logger: DownloadLogger;\n #transferId: string;\n #chunk: DownloadFileChunkInfo;\n #file: DownloadFileInfo;\n #downloadState: DownloadState;\n #options: DownloadOptions;\n #fileServerClientFactory: FileServerClientFactory;\n #chunkStreamProviderFactory: ChunkStreamProviderFactory<string>;\n #eventsEngine: EventsEngine;\n #chunkDownloadClient: FileServerDownloadClient;\n #encryptionData?: ChunkStreamProviderEncryptionData;\n #bytesTransferred = 0;\n #running = false;\n #consecutiveNetworkErrors = 0;\n\n constructor(\n transferId: string,\n file: DownloadFileInfo,\n chunk: DownloadFileChunkInfo,\n downloadState: DownloadState,\n options: DownloadOptions,\n fileServerClientFactory: FileServerClientFactory,\n chunkStreamProviderFactory: ChunkStreamProviderFactory<string>,\n eventsEngine: EventsEngine,\n logger: DownloadLogger,\n encryptionData?: ChunkStreamProviderEncryptionData,\n ) {\n this.#transferId = transferId;\n this.#options = options;\n this.#file = file;\n this.#chunk = chunk;\n this.#downloadState = downloadState;\n this.#fileServerClientFactory = fileServerClientFactory;\n this.#chunkStreamProviderFactory = chunkStreamProviderFactory;\n this.#eventsEngine = eventsEngine;\n this.#chunkDownloadClient = this.#fileServerClientFactory.createFileServerTcpDownloadClient(this.#file.url, this.#chunk.start, this.#chunk.end, this.#transferId, this.#file.name, this.#options);\n this.#logger = logger;\n this.#encryptionData = encryptionData;\n }\n\n async download(): Promise<void> {\n this.#throwIfRunning();\n this.#throwIfMissingDownloadPath();\n\n this.#running = true;\n\n let writtenCorrectly = false;\n let attempts = 0;\n let writeErrors = 0;\n let networkErrors = 0;\n let apiReturnedNotOkResponseStatus: boolean = false;\n let lastError: Error | null = null;\n let unhandledError: Error | null = null;\n\n try {\n this.#downloadState.chunkDownloadStarted(this.#file, this.#chunk);\n\n this.#addEventListeners();\n\n let fileserverMd5Promise: Promise<string> | null = this.#options.checkChunksMd5\n ? this.#chunkDownloadClient.getMd5Checksum()\n : null;\n\n while (writtenCorrectly === false && this.#canRetry(lastError as Error, writeErrors, networkErrors, apiReturnedNotOkResponseStatus)) {\n attempts += 1;\n\n this.#bytesTransferred = 0;\n\n if (this.#isDownloadClientRecreateNeeded()) {\n this.#recreateDownloadClient();\n\n fileserverMd5Promise = this.#options.checkChunksMd5\n ? this.#chunkDownloadClient.getMd5Checksum()\n : null;\n }\n\n const chunkWriter = this.#chunkStreamProviderFactory.provide(this.#file.temporaryDownloadPath!, this.#chunk.start ?? 0, this.#chunk.chunkSize, this.#encryptionData);\n\n try {\n await this.#chunkDownloadClient.download(chunkWriter, this.#encryptionData);\n\n if (this.#bytesTransferred !== this.#chunk.chunkSize) {\n if (this.#bytesTransferred > this.#chunk.chunkSize)\n this.#downloadState.possibleSupersizedFile(this.#file);\n\n throw new DownloadError(`Download request returned incorrect amount of data. Expected=${this.#chunk.chunkSize} Received=${this.#bytesTransferred}`, undefined, DownloadErrorCode.FileserverResponseWrongSize);\n }\n\n this.#consecutiveNetworkErrors = 0;\n networkErrors = 0;\n this.#downloadState.networkOk();\n\n if (this.#downloadState.status !== TransferStatus.Aborting) {\n if (fileserverMd5Promise !== null) {\n const remoteMd5 = await fileserverMd5Promise;\n const localMd5 = await chunkWriter.getMd5Checksum(`hex`);\n if (remoteMd5.toLowerCase() === localMd5.toLowerCase())\n writtenCorrectly = true;\n else {\n writeErrors += 1;\n lastError = new DownloadError(`MD5 checksum incorrect: fileserver=${remoteMd5} local=${localMd5}`);\n }\n }\n else\n writtenCorrectly = true;\n }\n }\n catch (error) {\n // note: getting an exception here may be caused by abort or stop operations\n // both operations immediately interrupt HTTP download request by calling chunkDownloadClient.release()\n if (this.#downloadState.pauseImmediately || this.#downloadState.status === TransferStatus.Aborting)\n lastError = null;\n else {\n lastError = error as Error;\n\n if (lastError instanceof RequestError) {\n if (this.#isApiNotOkResponseStatusResponse(lastError))\n apiReturnedNotOkResponseStatus = true;\n else {\n this.#consecutiveNetworkErrors += 1;\n networkErrors += 1;\n this.#downloadState.networkFailure();\n }\n }\n else\n writeErrors += 1;\n\n this.#logger.logError(lastError, `[CHUNK_DOWNLOADER_ERROR] Error in retry loop when downloading chunk attempt=${attempts} writeerrors=${writeErrors} networkerrors=${networkErrors}`, this.#errorInfoDump());\n }\n }\n finally {\n await chunkWriter?.release();\n this.#chunkDownloadClient?.release();\n\n let sleepTime = 0;\n if (this.#downloadState.isThereNetworkProblem)\n sleepTime = this.#options.fileserverOfflineCheckIntervalMillis;\n else if (networkErrors > 0) {\n const pow = Math.min(networkErrors, this.#options.fileserverOfflineAfterConsecutiveAttempts);\n sleepTime = this.#options.fileserverOfflineCheckIntervalMillis * (2 ** (pow - this.#options.fileserverOfflineAfterConsecutiveAttempts));\n }\n\n if (sleepTime > 0)\n await sleep(sleepTime);\n }\n }\n }\n catch (error) {\n unhandledError = error as Error;\n this.#logger.logError(unhandledError, `[CHUNK_DOWNLOADER_ERROR] Unhandled error when downloading chunk`, this.#errorInfoDump());\n }\n finally {\n this.#removeEventListeners();\n }\n\n if (writtenCorrectly)\n this.#downloadState.chunkDownloadCompleted(this.#file, this.#chunk);\n else {\n let downloadError: DownloadError | null = null;\n const failureCode = this.#toFailureCode(unhandledError ?? lastError);\n\n if (unhandledError)\n downloadError = new DownloadError(`Unhandled chunk download error for file ${this.#file.url} chunk ${this.#chunk.chunkNumber}`, { cause: unhandledError as Error }, failureCode);\n else if (lastError)\n downloadError = new DownloadError(`Chunk download failed for file ${this.#file.url} chunk ${this.#chunk.chunkNumber} attempt ${attempts}.`, { cause: lastError as Error }, failureCode);\n\n if (downloadError !== null) {\n this.#downloadState.chunkDownloadFailed(\n this.#file,\n this.#chunk,\n downloadError,\n );\n }\n }\n\n this.#running = false;\n }\n\n #isDownloadClientRecreateNeeded(): boolean {\n return this.#consecutiveNetworkErrors > 0 && this.#consecutiveNetworkErrors % this.#options.fileserverOfflineAfterConsecutiveAttempts === 0;\n }\n\n #recreateDownloadClient() {\n this.#chunkDownloadClient.removeEventListener(`progress`, this.#onProgress);\n\n this.#chunkDownloadClient = this.#fileServerClientFactory.createFileServerTcpDownloadClient(this.#file.url, this.#chunk.start, this.#chunk.end, this.#transferId, this.#file.name, this.#options);\n\n this.#chunkDownloadClient.addEventListener(`progress`, this.#onProgress);\n }\n\n #throwIfRunning() {\n if (this.#running)\n throw new DownloadError(`This instance of chunk downloader is already in use. Please create a new one.`);\n }\n\n #throwIfMissingDownloadPath() {\n if (!this.#file.temporaryDownloadPath)\n throw new DownloadError(`Download file ${this.#file.externalId}/${this.#file.name}/${this.#file.downloadPath} is missing the required \"temporaryDownloadPath\"`);\n }\n\n #addEventListeners() {\n this.#eventsEngine.addEventListener(TransferDownloadEvent.Aborting, this.#onAbortRequested);\n this.#eventsEngine.addEventListener(TransferDownloadEvent.Pausing, this.#onPauseRequested);\n this.#eventsEngine.addEventListener(TransferDownloadEvent.FileDownloadFailed, this.#onFileFailed);\n this.#chunkDownloadClient.addEventListener(`progress`, this.#onProgress);\n }\n\n #removeEventListeners() {\n this.#eventsEngine.removeEventListener(TransferDownloadEvent.Aborting, this.#onAbortRequested);\n this.#eventsEngine.removeEventListener(TransferDownloadEvent.Pausing, this.#onPauseRequested);\n this.#eventsEngine.removeEventListener(TransferDownloadEvent.FileDownloadFailed, this.#onFileFailed);\n this.#chunkDownloadClient.removeEventListener(`progress`, this.#onProgress);\n }\n\n #canRetry(error: Error | null, writeErrors: number, networkErrors: number, apiReturnedNotOkResponseStatus: boolean) {\n if (this.#downloadState.status === TransferStatus.Aborting || this.#downloadState.status === TransferStatus.Pausing)\n return false;\n\n if (this.#file.isFailed)\n return false;\n\n if (apiReturnedNotOkResponseStatus)\n return false;\n\n if (this.#isDiskFullError(error))\n return false;\n\n if (error && error instanceof RequestError)\n return this.#options.fileserverAttemptLimit <= 0 || networkErrors < this.#options.fileserverAttemptLimit!;\n\n return this.#options.maxWriteAttempts! < 0 || writeErrors < this.#options.maxWriteAttempts!;\n }\n\n #isApiNotOkResponseStatusResponse(error: RequestError): boolean {\n try {\n if (typeof error.response?.body !== `string`)\n return false;\n\n const response = JSON.parse(error.response?.body);\n\n if (!isBaseResponse(response))\n return false;\n\n return response.responsestatus !== `OK`;\n }\n catch {\n return false;\n }\n }\n\n /**\n * This method aborts pending download - it can be achieved only by destroying the download client\n * (which in turn destroys the underlying download HTTP request). This operation\n * will throw an expected exception inside download method (in main while loop). See {@link download} method.\n */\n #interruptDownload = () => {\n this.#chunkDownloadClient?.release();\n };\n\n #onAbortRequested = () => {\n this.#interruptDownload();\n };\n\n #onPauseRequested = () => {\n if (this.#downloadState.pauseImmediately)\n this.#interruptDownload();\n };\n\n #onFileFailed = (args: FileDownloadFailedEventArgs) => {\n if (this.#file.externalId === args.file.id)\n this.#chunkDownloadClient?.release();\n };\n\n #onProgress = (args: ChunkProgressEvent) => {\n this.#bytesTransferred = args.transferredBytesTotal;\n this.#downloadState.chunkDownloadProgressed(this.#file, this.#chunk, args);\n };\n\n #errorInfoDump() {\n return {\n fileid: this.#file.externalId,\n filename: this.#file.name,\n chunk: DownloadFileChunkProgress.FromChunkInfo(this.#chunk),\n };\n }\n\n #toFailureCode(error: Error | null): DownloadErrorCode | undefined {\n if (this.#isDiskFullError(error))\n return DownloadErrorCode.DiskFull;\n\n return undefined;\n }\n\n #isDiskFullError(error: unknown): boolean {\n if (!error)\n return false;\n\n let current = error as { message?: string, code?: string, cause?: unknown } | undefined;\n for (let depth = 0; depth < 8 && current; depth++) {\n if (current.code === `ENOSPC`)\n return true;\n\n if (typeof current.message === `string` && current.message.includes(`ENOSPC`))\n return true;\n\n current = current.cause as { message?: string, code?: string, cause?: unknown } | undefined;\n }\n\n return false;\n }\n}\n"]}
1
+ {"version":3,"file":"chunkDownloader.js","sourceRoot":"","sources":["../../../src/downloader/chunkDownloader.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable no-await-in-loop */\nimport { RequestError } from \"got\";\nimport sleep from \"abortable-sleep\";\n\nimport TransferStatus from \"../utils/types/transferStatus.js\";\nimport DownloadError from \"./dtos/downloadError.js\";\nimport TransferDownloadEvent from \"./dtos/downloadEvent.js\";\nimport DownloadErrorCode from \"./dtos/downloadErrorCode.js\";\nimport DownloadFileChunkProgress from \"./downloadStatus/downloadFileChunkProgress.js\";\nimport { isBaseResponse } from \"../utils/api/dtos/baseResponse.js\";\n\nimport type DownloadFileChunkInfo from \"./dtos/downloadFileChunkInfo.js\";\nimport type DownloadFileInfo from \"./dtos/downloadFileInfo.js\";\nimport type DownloadOptions from \"./downloadOptions.js\";\nimport type DownloadState from \"./downloadStatus/downloadState.js\";\nimport type FileServerClientFactory from \"../utils/api/fileServerClientFactory.js\";\nimport type ChunkStreamProviderFactory from \"../utils/fileSystem/chunkStreamProviderFactory.js\";\nimport type EventsEngine from \"../utils/events/eventsEngine.js\";\nimport type FileServerDownloadClient from \"./api/fileServerDownloadClient.js\";\nimport type ChunkProgressEvent from \"../utils/events/chunkProgressEvent.js\";\nimport type FileDownloadFailedEventArgs from \"./eventArgs/fileDownloadFailedEventArgs.js\";\nimport type DownloadLogger from \"./downloadLogger.js\";\nimport type { ChunkStreamProviderEncryptionData } from \"../utils/fileSystem/chunkStreamProvider.js\";\n\nexport default class ChunkDownloader {\n #logger: DownloadLogger;\n #transferId: string;\n #chunk: DownloadFileChunkInfo;\n #file: DownloadFileInfo;\n #downloadState: DownloadState;\n #options: DownloadOptions;\n #fileServerClientFactory: FileServerClientFactory;\n #chunkStreamProviderFactory: ChunkStreamProviderFactory<string>;\n #eventsEngine: EventsEngine;\n #chunkDownloadClient: FileServerDownloadClient;\n #encryptionData?: ChunkStreamProviderEncryptionData;\n #bytesTransferred = 0;\n #running = false;\n #consecutiveNetworkErrors = 0;\n\n constructor(\n transferId: string,\n file: DownloadFileInfo,\n chunk: DownloadFileChunkInfo,\n downloadState: DownloadState,\n options: DownloadOptions,\n fileServerClientFactory: FileServerClientFactory,\n chunkStreamProviderFactory: ChunkStreamProviderFactory<string>,\n eventsEngine: EventsEngine,\n logger: DownloadLogger,\n encryptionData?: ChunkStreamProviderEncryptionData,\n ) {\n this.#transferId = transferId;\n this.#options = options;\n this.#file = file;\n this.#chunk = chunk;\n this.#downloadState = downloadState;\n this.#fileServerClientFactory = fileServerClientFactory;\n this.#chunkStreamProviderFactory = chunkStreamProviderFactory;\n this.#eventsEngine = eventsEngine;\n this.#chunkDownloadClient = this.#fileServerClientFactory.createFileServerDownloadClient(this.#file.url, this.#chunk.start, this.#chunk.end, this.#transferId, this.#file.name, this.#options);\n this.#logger = logger;\n this.#encryptionData = encryptionData;\n }\n\n async download(): Promise<void> {\n this.#throwIfRunning();\n this.#throwIfMissingDownloadPath();\n\n this.#running = true;\n\n let writtenCorrectly = false;\n let attempts = 0;\n let writeErrors = 0;\n let networkErrors = 0;\n let apiReturnedNotOkResponseStatus: boolean = false;\n let lastError: Error | null = null;\n let unhandledError: Error | null = null;\n\n try {\n this.#downloadState.chunkDownloadStarted(this.#file, this.#chunk);\n\n this.#addEventListeners();\n\n let fileserverMd5Promise: Promise<string> | null = this.#options.checkChunksMd5\n ? this.#chunkDownloadClient.getMd5Checksum()\n : null;\n\n while (writtenCorrectly === false && this.#canRetry(lastError as Error, writeErrors, networkErrors, apiReturnedNotOkResponseStatus)) {\n attempts += 1;\n\n this.#bytesTransferred = 0;\n\n if (this.#isDownloadClientRecreateNeeded()) {\n this.#recreateDownloadClient();\n\n fileserverMd5Promise = this.#options.checkChunksMd5\n ? this.#chunkDownloadClient.getMd5Checksum()\n : null;\n }\n\n const chunkWriter = this.#chunkStreamProviderFactory.provide(this.#file.temporaryDownloadPath!, this.#chunk.start ?? 0, this.#chunk.chunkSize, this.#encryptionData);\n\n try {\n await this.#chunkDownloadClient.download(chunkWriter, this.#encryptionData);\n\n if (this.#bytesTransferred !== this.#chunk.chunkSize) {\n if (this.#bytesTransferred > this.#chunk.chunkSize)\n this.#downloadState.possibleSupersizedFile(this.#file);\n\n throw new DownloadError(`Download request returned incorrect amount of data. Expected=${this.#chunk.chunkSize} Received=${this.#bytesTransferred}`, undefined, DownloadErrorCode.FileserverResponseWrongSize);\n }\n\n this.#consecutiveNetworkErrors = 0;\n networkErrors = 0;\n this.#downloadState.networkOk();\n\n if (this.#downloadState.status !== TransferStatus.Aborting) {\n if (fileserverMd5Promise !== null) {\n const remoteMd5 = await fileserverMd5Promise;\n const localMd5 = await chunkWriter.getMd5Checksum(`hex`);\n if (remoteMd5.toLowerCase() === localMd5.toLowerCase())\n writtenCorrectly = true;\n else {\n writeErrors += 1;\n lastError = new DownloadError(`MD5 checksum incorrect: fileserver=${remoteMd5} local=${localMd5}`);\n }\n }\n else\n writtenCorrectly = true;\n }\n }\n catch (error) {\n // note: getting an exception here may be caused by abort or stop operations\n // both operations immediately interrupt HTTP download request by calling chunkDownloadClient.release()\n if (this.#downloadState.pauseImmediately || this.#downloadState.status === TransferStatus.Aborting)\n lastError = null;\n else {\n lastError = error as Error;\n\n if (lastError instanceof RequestError) {\n if (this.#isApiNotOkResponseStatusResponse(lastError))\n apiReturnedNotOkResponseStatus = true;\n else {\n this.#consecutiveNetworkErrors += 1;\n networkErrors += 1;\n this.#downloadState.networkFailure();\n }\n }\n else\n writeErrors += 1;\n\n this.#logger.logError(lastError, `[CHUNK_DOWNLOADER_ERROR] Error in retry loop when downloading chunk attempt=${attempts} writeerrors=${writeErrors} networkerrors=${networkErrors}`, this.#errorInfoDump());\n }\n }\n finally {\n await chunkWriter?.release();\n this.#chunkDownloadClient?.release();\n\n let sleepTime = 0;\n if (this.#downloadState.isThereNetworkProblem)\n sleepTime = this.#options.fileserverOfflineCheckIntervalMillis;\n else if (networkErrors > 0) {\n const pow = Math.min(networkErrors, this.#options.fileserverOfflineAfterConsecutiveAttempts);\n sleepTime = this.#options.fileserverOfflineCheckIntervalMillis * (2 ** (pow - this.#options.fileserverOfflineAfterConsecutiveAttempts));\n }\n\n if (sleepTime > 0)\n await sleep(sleepTime);\n }\n }\n }\n catch (error) {\n unhandledError = error as Error;\n this.#logger.logError(unhandledError, `[CHUNK_DOWNLOADER_ERROR] Unhandled error when downloading chunk`, this.#errorInfoDump());\n }\n finally {\n this.#removeEventListeners();\n }\n\n if (writtenCorrectly)\n this.#downloadState.chunkDownloadCompleted(this.#file, this.#chunk);\n else {\n let downloadError: DownloadError | null = null;\n const failureCode = this.#toFailureCode(unhandledError ?? lastError);\n\n if (unhandledError)\n downloadError = new DownloadError(`Unhandled chunk download error for file ${this.#file.url} chunk ${this.#chunk.chunkNumber}`, { cause: unhandledError as Error }, failureCode);\n else if (lastError)\n downloadError = new DownloadError(`Chunk download failed for file ${this.#file.url} chunk ${this.#chunk.chunkNumber} attempt ${attempts}.`, { cause: lastError as Error }, failureCode);\n\n if (downloadError !== null) {\n this.#downloadState.chunkDownloadFailed(\n this.#file,\n this.#chunk,\n downloadError,\n );\n }\n }\n\n this.#running = false;\n }\n\n #isDownloadClientRecreateNeeded(): boolean {\n return this.#consecutiveNetworkErrors > 0 && this.#consecutiveNetworkErrors % this.#options.fileserverOfflineAfterConsecutiveAttempts === 0;\n }\n\n #recreateDownloadClient() {\n this.#chunkDownloadClient.removeEventListener(`progress`, this.#onProgress);\n\n this.#chunkDownloadClient = this.#fileServerClientFactory.createFileServerDownloadClient(this.#file.url, this.#chunk.start, this.#chunk.end, this.#transferId, this.#file.name, this.#options);\n\n this.#chunkDownloadClient.addEventListener(`progress`, this.#onProgress);\n }\n\n #throwIfRunning() {\n if (this.#running)\n throw new DownloadError(`This instance of chunk downloader is already in use. Please create a new one.`);\n }\n\n #throwIfMissingDownloadPath() {\n if (!this.#file.temporaryDownloadPath)\n throw new DownloadError(`Download file ${this.#file.externalId}/${this.#file.name}/${this.#file.downloadPath} is missing the required \"temporaryDownloadPath\"`);\n }\n\n #addEventListeners() {\n this.#eventsEngine.addEventListener(TransferDownloadEvent.Aborting, this.#onAbortRequested);\n this.#eventsEngine.addEventListener(TransferDownloadEvent.Pausing, this.#onPauseRequested);\n this.#eventsEngine.addEventListener(TransferDownloadEvent.FileDownloadFailed, this.#onFileFailed);\n this.#chunkDownloadClient.addEventListener(`progress`, this.#onProgress);\n }\n\n #removeEventListeners() {\n this.#eventsEngine.removeEventListener(TransferDownloadEvent.Aborting, this.#onAbortRequested);\n this.#eventsEngine.removeEventListener(TransferDownloadEvent.Pausing, this.#onPauseRequested);\n this.#eventsEngine.removeEventListener(TransferDownloadEvent.FileDownloadFailed, this.#onFileFailed);\n this.#chunkDownloadClient.removeEventListener(`progress`, this.#onProgress);\n }\n\n #canRetry(error: Error | null, writeErrors: number, networkErrors: number, apiReturnedNotOkResponseStatus: boolean) {\n if (this.#downloadState.status === TransferStatus.Aborting || this.#downloadState.status === TransferStatus.Pausing)\n return false;\n\n if (this.#file.isFailed)\n return false;\n\n if (apiReturnedNotOkResponseStatus)\n return false;\n\n if (this.#isDiskFullError(error))\n return false;\n\n if (error && error instanceof RequestError)\n return this.#options.fileserverAttemptLimit <= 0 || networkErrors < this.#options.fileserverAttemptLimit!;\n\n return this.#options.maxWriteAttempts! < 0 || writeErrors < this.#options.maxWriteAttempts!;\n }\n\n #isApiNotOkResponseStatusResponse(error: RequestError): boolean {\n try {\n if (typeof error.response?.body !== `string`)\n return false;\n\n const response = JSON.parse(error.response?.body);\n\n if (!isBaseResponse(response))\n return false;\n\n return response.responsestatus !== `OK`;\n }\n catch {\n return false;\n }\n }\n\n /**\n * This method aborts pending download - it can be achieved only by destroying the download client\n * (which in turn destroys the underlying download HTTP request). This operation\n * will throw an expected exception inside download method (in main while loop). See {@link download} method.\n */\n #interruptDownload = () => {\n this.#chunkDownloadClient?.release();\n };\n\n #onAbortRequested = () => {\n this.#interruptDownload();\n };\n\n #onPauseRequested = () => {\n if (this.#downloadState.pauseImmediately)\n this.#interruptDownload();\n };\n\n #onFileFailed = (args: FileDownloadFailedEventArgs) => {\n if (this.#file.externalId === args.file.id)\n this.#chunkDownloadClient?.release();\n };\n\n #onProgress = (args: ChunkProgressEvent) => {\n this.#bytesTransferred = args.transferredBytesTotal;\n this.#downloadState.chunkDownloadProgressed(this.#file, this.#chunk, args);\n };\n\n #errorInfoDump() {\n return {\n fileid: this.#file.externalId,\n filename: this.#file.name,\n chunk: DownloadFileChunkProgress.FromChunkInfo(this.#chunk),\n };\n }\n\n #toFailureCode(error: Error | null): DownloadErrorCode | undefined {\n if (this.#isDiskFullError(error))\n return DownloadErrorCode.DiskFull;\n\n return undefined;\n }\n\n #isDiskFullError(error: unknown): boolean {\n if (!error)\n return false;\n\n let current = error as { message?: string, code?: string, cause?: unknown } | undefined;\n for (let depth = 0; depth < 8 && current; depth++) {\n if (current.code === `ENOSPC`)\n return true;\n\n if (typeof current.message === `string` && current.message.includes(`ENOSPC`))\n return true;\n\n current = current.cause as { message?: string, code?: string, cause?: unknown } | undefined;\n }\n\n return false;\n }\n}\n"]}
@@ -41,9 +41,10 @@ export { default as FileChunkUploadProgressedEventArgs } from "./uploader/eventA
41
41
  export { default as TransferUploadProgressedEventArgs } from "./uploader/eventArgs/transferUploadProgressedEventArgs.js";
42
42
  export { default as FileUploadEventArgs } from "./uploader/eventArgs/fileUploadEventArgs.js";
43
43
  export { default as FileUploadFailedEventArgs } from "./uploader/eventArgs/fileUploadFailedEventArgs.js";
44
+ export { default as FileAckFailedEventArgs } from "./uploader/eventArgs/fileAckFailedEventArgs.js";
45
+ export { default as FilesBatchAckFailedEventArgs } from "./uploader/eventArgs/filesBatchAckFailedEventArgs.js";
44
46
  export { default as TransferUploadCompletedEventArgs } from "./uploader/eventArgs/transferUploadCompletedEventArgs.js";
45
47
  export { default as TransferMetadataDeterminedEventArgs } from "./uploader/eventArgs/transferMetadataDeterminedEventArgs.js";
46
- export { default as TransferUploadModeChosenEventArgs } from "./uploader/eventArgs/transferUploadModeChosenEventArgs.js";
47
48
  export { default as ReadonlyTransferUploadStateFile } from "./uploader/state/readonlyTransferUploadStateFile.js";
48
49
  export { default as ReadonlyTransferUploadStateFiles } from "./uploader/state/readonlyTransferUploadStateFiles.js";
49
50
  export { default as TransferStatusFile } from "./uploader/state/transferUploadStateFile.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AASpF,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAInE,OAAO,EAAE,OAAO,IAAI,6BAA6B,EAAE,MAAM,gEAAgE,CAAC;AAsB1H,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AAC5F,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AAE9F,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAE3E,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAKnF,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,yCAAyC,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAE5E,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAMzE,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,qDAAqD,CAAC;AAC3G,OAAO,EAAE,OAAO,IAAI,6BAA6B,EAAE,MAAM,yDAAyD,CAAC;AACnH,OAAO,EAAE,OAAO,IAAI,+BAA+B,EAAE,MAAM,2DAA2D,CAAC;AACvH,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,MAAM,6DAA6D,CAAC;AAGpH,OAAO,EAAE,OAAO,IAAI,aAAa,EAAuB,MAAM,uDAAuD,CAAC;AACtH,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,2DAA2D,CAAC;AACzG,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,0DAA0D,CAAC;AAEvG,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AACtF,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,oCAAoC,CAAC","sourcesContent":["export { default as CancelTransferRequest } from \"./utils/api/dtos/cancelTransferRequest.js\";\nexport { BaseResponse } from \"./utils/api/dtos/baseResponse.js\";\nexport { default as FinalizeTransferRequest } from \"./utils/api/dtos/finalizeTransferRequest.js\";\nexport { default as FinalizeTransferResponse } from \"./utils/api/dtos/finalizeTransferResponse.js\";\nexport { default as ResetTransferRequest } from \"./utils/api/dtos/resetTransferRequest.js\";\nexport { InitializeTransferRequest, InitializeTransferRequestCustomField, InitializeTransferRequestRaw, InitializeTransferRequestCustomFieldRaw } from \"./utils/api/dtos/initializeTransferRequest.js\";\nexport { default as InitializeTransferResponse } from \"./utils/api/dtos/initializeTransferResponse.js\";\nexport { default as LoginRequest } from \"./utils/api/dtos/loginRequest.js\";\nexport { default as LoginResponse } from \"./utils/api/dtos/loginResponse.js\";\nexport { default as SendFileChunkRequest } from \"./utils/api/dtos/sendFileChunkRequest.js\";\nexport { default as GetTransferRequest } from \"./utils/api/dtos/getTransferRequest.js\";\nexport { default as GetTransferResponse } from \"./utils/api/dtos/getTransferResponse.js\";\nexport { default as TransferFileDto } from \"./utils/api/dtos/transferFileDto.js\";\nexport { default as RegisterTransferDownloadRequest } from \"./utils/api/dtos/registerTransferDownloadRequest.js\";\nexport { default as RegisterFileDownloadRequest } from \"./utils/api/dtos/registerFileDownloadRequest.js\";\nexport { default as TransferCustomFieldDto } from \"./utils/api/dtos/transferCustomFieldDto.js\";\n\nexport { default as ChunkProgressEvent } from \"./utils/events/chunkProgressEvent.js\";\n\nexport { default as ApiClient } from \"./utils/api/apiClient.js\";\nexport { default as ApiError } from \"./utils/api/apiError.js\";\nexport { default as ApiFilemailError } from \"./utils/api/apiFilemailError.js\";\nexport { default as ApiFilemail449Error } from \"./utils/api/apiFilemail449Error.js\";\nexport { default as FileServerClient } from \"./uploader/api/fileServerUploadClient.js\";\nexport { default as FileServerClientFactory } from \"./utils/api/fileServerClientFactory.js\";\n\nexport { default as EventsEngine } from \"./utils/events/eventsEngine.js\";\nexport { EventsEngineEventHandler } from \"./utils/events/eventsEngine.js\";\n\nexport { default as ChunkStreamProvider } from \"./utils/fileSystem/chunkStreamProvider.js\";\nexport { default as FileDetails } from \"./utils/fileSystem/fileDetails.js\";\nexport { default as FsError } from \"./utils/fileSystem/fsError.js\";\n\nexport { default as ConcurrencyController } from \"./utils/concurrencyController/concurrencyController.js\";\nexport { default as ConcurrencyReleaser } from \"./utils/concurrencyController/concurrencyReleaser.js\";\nexport { default as TransferConcurrencyController } from \"./utils/concurrencyController/transferConcurrencyController.js\";\n\nexport { TransferUploadExportData, TransferUploadExportDataMetadata } from \"./uploader/export/transferUploadExportData.js\";\nexport { default as TransferUploadMetadata } from \"./uploader/export/transferUploadMetadata.js\";\nexport { default as TransferUploadExportState } from \"./uploader/export/transferUploadExportState.js\";\n\nexport { ContinuousChunksCalculatorState, ContinuousChunk } from \"./uploader/state/continuousChunksCalculator.js\";\n\nexport { default as FileChunkUploadFailedEventArgs } from \"./uploader/eventArgs/fileChunkUploadFailedEventArgs.js\";\nexport { default as FileChunkUploadCompletedPartiallyEventArgs } from \"./uploader/eventArgs/fileChunkUploadCompletedPartiallyEventArgs.js\";\nexport { default as FileChunkUploadEventArgs } from \"./uploader/eventArgs/fileChunkUploadEventArgs.js\";\nexport { default as FileChunkUploadCompletedEventArgs } from \"./uploader/eventArgs/fileChunkUploadCompletedEventArgs.js\";\nexport { default as FileChunkUploadProgressedEventArgs } from \"./uploader/eventArgs/fileChunkUploadProgressedEventArgs.js\";\nexport { default as TransferUploadProgressedEventArgs } from \"./uploader/eventArgs/transferUploadProgressedEventArgs.js\";\nexport { default as FileUploadEventArgs } from \"./uploader/eventArgs/fileUploadEventArgs.js\";\nexport { default as FileUploadFailedEventArgs } from \"./uploader/eventArgs/fileUploadFailedEventArgs.js\";\nexport { default as TransferUploadCompletedEventArgs } from \"./uploader/eventArgs/transferUploadCompletedEventArgs.js\";\nexport { default as TransferMetadataDeterminedEventArgs } from \"./uploader/eventArgs/transferMetadataDeterminedEventArgs.js\";\nexport { default as TransferUploadModeChosenEventArgs } from \"./uploader/eventArgs/transferUploadModeChosenEventArgs.js\";\n\nexport { default as ReadonlyTransferUploadStateFile } from \"./uploader/state/readonlyTransferUploadStateFile.js\";\nexport { default as ReadonlyTransferUploadStateFiles } from \"./uploader/state/readonlyTransferUploadStateFiles.js\";\nexport { default as TransferStatusFile } from \"./uploader/state/transferUploadStateFile.js\";\nexport { default as TransferStatusFiles } from \"./uploader/state/transferUploadStateFiles.js\";\n\nexport { default as PauseController } from \"./uploader/pauseController.js\";\nexport { PauseSignal } from \"./uploader/pauseController.js\";\nexport { default as Transfer } from \"./uploader/transferUpload.js\";\nexport { default as TransferUploadError } from \"./uploader/transferUploadError.js\";\nexport { default as TransferUploadEvent } from \"./uploader/transferUploadEvent.js\";\nexport { default as TransferUploadConfig } from \"./uploader/options/transferUploadConfig.js\";\nexport { default as TransferUploadInfo, TransferUploadInfoCustomField } from \"./uploader/options/transferUploadInfo.js\";\nexport { TransferUploadAppendInfo, TransferUploadAppendInfoE2eeData } from \"./uploader/options/transferUploadAppendInfo.js\";\nexport { default as TransferUploadInfoBase } from \"./uploader/options/transferUploadInfoBase.js\";\nexport { default as TransferState } from \"./uploader/state/transferUploadState.js\";\nexport { default as TransferStatus } from \"./utils/types/transferStatus.js\";\n\nexport { default as DummyLogger } from \"./client/loggers/dummyLogger.js\";\nexport { default as Logger } from \"./client/loggers/logger.js\";\nexport { default as TransferUploader } from \"./client/uploader/transferUploader.js\";\nexport { default as EnvironmentVariables } from \"./client/environmentVariables.js\";\nexport { default as TransferUploaderConfig } from \"./client/uploader/transferUploaderConfig.js\";\n\nexport { default as TransferHealthMonitorBase } from \"./client/healthMonitor/transferHealthMonitorBase.js\";\nexport { default as TransferUploaderHealthMonitor } from \"./client/healthMonitor/transferUploaderHealthMonitor.js\";\nexport { default as TransferDownloaderHealthMonitor } from \"./client/healthMonitor/transferDownloaderHealthMonitor.js\";\nexport { default as TransferHealthMonitorEvent } from \"./client/healthMonitor/events/transferHealthMonitorEvent.js\";\nexport { default as HealthMonitorHealthyEventArgs } from \"./client/healthMonitor/events/eventArgs/healthMonitorHealthyEventArgs.js\";\nexport { default as HealthMonitorUnhealthyEventArgs, HealthMonitorUnhealthyEventArgsReason, HealthMonitorUnhealthyEventArgsReasonValue } from \"./client/healthMonitor/events/eventArgs/healthMonitorUnhealthyEventArgs.js\";\nexport { default as OnlineChecker, OnlineCheckerResult } from \"./client/healthMonitor/onlineChecker/onlineChecker.js\";\nexport { default as NodeOnlineChecker } from \"./client/healthMonitor/onlineChecker/nodeOnlineChecker.js\";\nexport { default as WebOnlineChecker } from \"./client/healthMonitor/onlineChecker/webOnlineChecker.js\";\n\nexport { default as DownloadError } from \"./downloader/dtos/downloadError.js\";\nexport { default as DownloadErrorCode } from \"./downloader/dtos/downloadErrorCode.js\";\nexport { default as TransferDownloadEvent } from \"./downloader/dtos/downloadEvent.js\";"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AASpF,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAInE,OAAO,EAAE,OAAO,IAAI,6BAA6B,EAAE,MAAM,gEAAgE,CAAC;AAuB1H,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AAC5F,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AAE9F,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAE3E,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAKnF,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,yCAAyC,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAE5E,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAMzE,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,qDAAqD,CAAC;AAC3G,OAAO,EAAE,OAAO,IAAI,6BAA6B,EAAE,MAAM,yDAAyD,CAAC;AACnH,OAAO,EAAE,OAAO,IAAI,+BAA+B,EAAE,MAAM,2DAA2D,CAAC;AACvH,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,MAAM,6DAA6D,CAAC;AAGpH,OAAO,EAAE,OAAO,IAAI,aAAa,EAAuB,MAAM,uDAAuD,CAAC;AACtH,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,2DAA2D,CAAC;AACzG,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,0DAA0D,CAAC;AAEvG,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AACtF,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,oCAAoC,CAAC","sourcesContent":["export { default as CancelTransferRequest } from \"./utils/api/dtos/cancelTransferRequest.js\";\nexport { BaseResponse } from \"./utils/api/dtos/baseResponse.js\";\nexport { default as FinalizeTransferRequest } from \"./utils/api/dtos/finalizeTransferRequest.js\";\nexport { default as FinalizeTransferResponse } from \"./utils/api/dtos/finalizeTransferResponse.js\";\nexport { default as ResetTransferRequest } from \"./utils/api/dtos/resetTransferRequest.js\";\nexport { InitializeTransferRequest, InitializeTransferRequestCustomField, InitializeTransferRequestRaw, InitializeTransferRequestCustomFieldRaw } from \"./utils/api/dtos/initializeTransferRequest.js\";\nexport { default as InitializeTransferResponse } from \"./utils/api/dtos/initializeTransferResponse.js\";\nexport { default as LoginRequest } from \"./utils/api/dtos/loginRequest.js\";\nexport { default as LoginResponse } from \"./utils/api/dtos/loginResponse.js\";\nexport { default as SendFileChunkRequest } from \"./utils/api/dtos/sendFileChunkRequest.js\";\nexport { default as GetTransferRequest } from \"./utils/api/dtos/getTransferRequest.js\";\nexport { default as GetTransferResponse } from \"./utils/api/dtos/getTransferResponse.js\";\nexport { default as TransferFileDto } from \"./utils/api/dtos/transferFileDto.js\";\nexport { default as RegisterTransferDownloadRequest } from \"./utils/api/dtos/registerTransferDownloadRequest.js\";\nexport { default as RegisterFileDownloadRequest } from \"./utils/api/dtos/registerFileDownloadRequest.js\";\nexport { default as TransferCustomFieldDto } from \"./utils/api/dtos/transferCustomFieldDto.js\";\n\nexport { default as ChunkProgressEvent } from \"./utils/events/chunkProgressEvent.js\";\n\nexport { default as ApiClient } from \"./utils/api/apiClient.js\";\nexport { default as ApiError } from \"./utils/api/apiError.js\";\nexport { default as ApiFilemailError } from \"./utils/api/apiFilemailError.js\";\nexport { default as ApiFilemail449Error } from \"./utils/api/apiFilemail449Error.js\";\nexport { default as FileServerClient } from \"./uploader/api/fileServerUploadClient.js\";\nexport { default as FileServerClientFactory } from \"./utils/api/fileServerClientFactory.js\";\n\nexport { default as EventsEngine } from \"./utils/events/eventsEngine.js\";\nexport { EventsEngineEventHandler } from \"./utils/events/eventsEngine.js\";\n\nexport { default as ChunkStreamProvider } from \"./utils/fileSystem/chunkStreamProvider.js\";\nexport { default as FileDetails } from \"./utils/fileSystem/fileDetails.js\";\nexport { default as FsError } from \"./utils/fileSystem/fsError.js\";\n\nexport { default as ConcurrencyController } from \"./utils/concurrencyController/concurrencyController.js\";\nexport { default as ConcurrencyReleaser } from \"./utils/concurrencyController/concurrencyReleaser.js\";\nexport { default as TransferConcurrencyController } from \"./utils/concurrencyController/transferConcurrencyController.js\";\n\nexport { TransferUploadExportData, TransferUploadExportDataMetadata } from \"./uploader/export/transferUploadExportData.js\";\nexport { default as TransferUploadMetadata } from \"./uploader/export/transferUploadMetadata.js\";\nexport { default as TransferUploadExportState } from \"./uploader/export/transferUploadExportState.js\";\n\nexport { ContinuousChunksCalculatorState, ContinuousChunk } from \"./uploader/state/continuousChunksCalculator.js\";\n\nexport { default as FileChunkUploadFailedEventArgs } from \"./uploader/eventArgs/fileChunkUploadFailedEventArgs.js\";\nexport { default as FileChunkUploadCompletedPartiallyEventArgs } from \"./uploader/eventArgs/fileChunkUploadCompletedPartiallyEventArgs.js\";\nexport { default as FileChunkUploadEventArgs } from \"./uploader/eventArgs/fileChunkUploadEventArgs.js\";\nexport { default as FileChunkUploadCompletedEventArgs } from \"./uploader/eventArgs/fileChunkUploadCompletedEventArgs.js\";\nexport { default as FileChunkUploadProgressedEventArgs } from \"./uploader/eventArgs/fileChunkUploadProgressedEventArgs.js\";\nexport { default as TransferUploadProgressedEventArgs } from \"./uploader/eventArgs/transferUploadProgressedEventArgs.js\";\nexport { default as FileUploadEventArgs } from \"./uploader/eventArgs/fileUploadEventArgs.js\";\nexport { default as FileUploadFailedEventArgs } from \"./uploader/eventArgs/fileUploadFailedEventArgs.js\";\nexport { default as FileAckFailedEventArgs } from \"./uploader/eventArgs/fileAckFailedEventArgs.js\";\nexport { default as FilesBatchAckFailedEventArgs } from \"./uploader/eventArgs/filesBatchAckFailedEventArgs.js\";\nexport { default as TransferUploadCompletedEventArgs } from \"./uploader/eventArgs/transferUploadCompletedEventArgs.js\";\nexport { default as TransferMetadataDeterminedEventArgs } from \"./uploader/eventArgs/transferMetadataDeterminedEventArgs.js\";\n\nexport { default as ReadonlyTransferUploadStateFile } from \"./uploader/state/readonlyTransferUploadStateFile.js\";\nexport { default as ReadonlyTransferUploadStateFiles } from \"./uploader/state/readonlyTransferUploadStateFiles.js\";\nexport { default as TransferStatusFile } from \"./uploader/state/transferUploadStateFile.js\";\nexport { default as TransferStatusFiles } from \"./uploader/state/transferUploadStateFiles.js\";\n\nexport { default as PauseController } from \"./uploader/pauseController.js\";\nexport { PauseSignal } from \"./uploader/pauseController.js\";\nexport { default as Transfer } from \"./uploader/transferUpload.js\";\nexport { default as TransferUploadError } from \"./uploader/transferUploadError.js\";\nexport { default as TransferUploadEvent } from \"./uploader/transferUploadEvent.js\";\nexport { default as TransferUploadConfig } from \"./uploader/options/transferUploadConfig.js\";\nexport { default as TransferUploadInfo, TransferUploadInfoCustomField } from \"./uploader/options/transferUploadInfo.js\";\nexport { TransferUploadAppendInfo, TransferUploadAppendInfoE2eeData } from \"./uploader/options/transferUploadAppendInfo.js\";\nexport { default as TransferUploadInfoBase } from \"./uploader/options/transferUploadInfoBase.js\";\nexport { default as TransferState } from \"./uploader/state/transferUploadState.js\";\nexport { default as TransferStatus } from \"./utils/types/transferStatus.js\";\n\nexport { default as DummyLogger } from \"./client/loggers/dummyLogger.js\";\nexport { default as Logger } from \"./client/loggers/logger.js\";\nexport { default as TransferUploader } from \"./client/uploader/transferUploader.js\";\nexport { default as EnvironmentVariables } from \"./client/environmentVariables.js\";\nexport { default as TransferUploaderConfig } from \"./client/uploader/transferUploaderConfig.js\";\n\nexport { default as TransferHealthMonitorBase } from \"./client/healthMonitor/transferHealthMonitorBase.js\";\nexport { default as TransferUploaderHealthMonitor } from \"./client/healthMonitor/transferUploaderHealthMonitor.js\";\nexport { default as TransferDownloaderHealthMonitor } from \"./client/healthMonitor/transferDownloaderHealthMonitor.js\";\nexport { default as TransferHealthMonitorEvent } from \"./client/healthMonitor/events/transferHealthMonitorEvent.js\";\nexport { default as HealthMonitorHealthyEventArgs } from \"./client/healthMonitor/events/eventArgs/healthMonitorHealthyEventArgs.js\";\nexport { default as HealthMonitorUnhealthyEventArgs, HealthMonitorUnhealthyEventArgsReason, HealthMonitorUnhealthyEventArgsReasonValue } from \"./client/healthMonitor/events/eventArgs/healthMonitorUnhealthyEventArgs.js\";\nexport { default as OnlineChecker, OnlineCheckerResult } from \"./client/healthMonitor/onlineChecker/onlineChecker.js\";\nexport { default as NodeOnlineChecker } from \"./client/healthMonitor/onlineChecker/nodeOnlineChecker.js\";\nexport { default as WebOnlineChecker } from \"./client/healthMonitor/onlineChecker/webOnlineChecker.js\";\n\nexport { default as DownloadError } from \"./downloader/dtos/downloadError.js\";\nexport { default as DownloadErrorCode } from \"./downloader/dtos/downloadErrorCode.js\";\nexport { default as TransferDownloadEvent } from \"./downloader/dtos/downloadEvent.js\";"]}
@@ -5,7 +5,7 @@ import type FileServerUploadClient from "../fileServerUploadClient.js";
5
5
  import type { PauseSignal } from "../../pauseController.js";
6
6
  export default class NodeFileServerUploadClient extends NodeFileServerClientBase implements FileServerUploadClient {
7
7
  #private;
8
- constructor(uploadUrl: string, transferId: string, transferKey: string, fileName: string, fileDestinationPath: string, fileTotalSizeInBytes: number, source: string, sourceDetails: string, uploadIdleTimeoutInMs: number, retryLimit: number);
8
+ constructor(uploadUrl: string, transferId: string, transferKey: string, fileName: string, fileDestinationPath: string, fileTotalSizeInBytes: number, fileId: string | undefined, source: string, sourceDetails: string, uploadIdleTimeoutInMs: number, retryLimit: number);
9
9
  private createGotInstance;
10
10
  sendFileChunk(request: SendFileChunkRequest, chunkStreamProvider: ChunkStreamProvider, pauseSignal: PauseSignal, abortSignal: AbortSignal): Promise<void>;
11
11
  private isWrappedCreatingFileReadStreamException;
@@ -1 +1 @@
1
- {"version":3,"file":"nodeFileServerUploadClient.d.ts","sourceRoot":"","sources":["../../../../../src/uploader/api/node/nodeFileServerUploadClient.ts"],"names":[],"mappings":"AAOA,OAAO,wBAAwB,MAAM,qDAAqD,CAAC;AAK3F,OAAO,KAAK,mBAAmB,MAAM,kDAAkD,CAAC;AACxF,OAAO,KAAK,oBAAoB,MAAM,iDAAiD,CAAC;AACxF,OAAO,KAAK,sBAAsB,MAAM,8BAA8B,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAG5D,MAAM,CAAC,OAAO,OAAO,0BAA2B,SAAQ,wBAAyB,YAAW,sBAAsB;;gBAIlG,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAU7O,OAAO,CAAC,iBAAiB;IAqBnB,aAAa,CAAC,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAmE/J,OAAO,CAAC,wCAAwC;CAGnD"}
1
+ {"version":3,"file":"nodeFileServerUploadClient.d.ts","sourceRoot":"","sources":["../../../../../src/uploader/api/node/nodeFileServerUploadClient.ts"],"names":[],"mappings":"AAOA,OAAO,wBAAwB,MAAM,qDAAqD,CAAC;AAK3F,OAAO,KAAK,mBAAmB,MAAM,kDAAkD,CAAC;AACxF,OAAO,KAAK,oBAAoB,MAAM,iDAAiD,CAAC;AACxF,OAAO,KAAK,sBAAsB,MAAM,8BAA8B,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAG5D,MAAM,CAAC,OAAO,OAAO,0BAA2B,SAAQ,wBAAyB,YAAW,sBAAsB;;gBAIlG,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAUzQ,OAAO,CAAC,iBAAiB;IAsBnB,aAAa,CAAC,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAmE/J,OAAO,CAAC,wCAAwC;CAGnD"}
@@ -8,13 +8,13 @@ import { retryEconnresetWorkaround } from "../../../utils/api/node/gotWorkaround
8
8
  export default class NodeFileServerUploadClient extends NodeFileServerClientBase {
9
9
  #uploadUrl;
10
10
  #gotInstance;
11
- constructor(uploadUrl, transferId, transferKey, fileName, fileDestinationPath, fileTotalSizeInBytes, source, sourceDetails, uploadIdleTimeoutInMs, retryLimit) {
11
+ constructor(uploadUrl, transferId, transferKey, fileName, fileDestinationPath, fileTotalSizeInBytes, fileId, source, sourceDetails, uploadIdleTimeoutInMs, retryLimit) {
12
12
  super();
13
13
  this.#uploadUrl = uploadUrl;
14
14
  const fullDestinationFileName = path.posix.join(fileDestinationPath, fileName);
15
- this.#gotInstance = this.createGotInstance(transferId, transferKey, fullDestinationFileName, fileTotalSizeInBytes, source, sourceDetails, uploadIdleTimeoutInMs, retryLimit);
15
+ this.#gotInstance = this.createGotInstance(transferId, transferKey, fullDestinationFileName, fileTotalSizeInBytes, fileId, source, sourceDetails, uploadIdleTimeoutInMs, retryLimit);
16
16
  }
17
- createGotInstance(transferId, transferKey, fullDestinationFileName, fileTotalSizeInBytes, source, sourceDetails, uploadIdleTimeoutInMs, retryLimit) {
17
+ createGotInstance(transferId, transferKey, fullDestinationFileName, fileTotalSizeInBytes, fileId, source, sourceDetails, uploadIdleTimeoutInMs, retryLimit) {
18
18
  return got.extend({
19
19
  timeout: {
20
20
  socket: uploadIdleTimeoutInMs > 0 ? uploadIdleTimeoutInMs : undefined,
@@ -22,7 +22,8 @@ export default class NodeFileServerUploadClient extends NodeFileServerClientBase
22
22
  searchParams: {
23
23
  transferid: transferId,
24
24
  transferkey: transferKey,
25
- thefilename: fullDestinationFileName,
25
+ // The file server saves the chunk into the files db only when fileid is present and thefilename is absent.
26
+ ...(fileId ? { fileid: fileId } : { thefilename: fullDestinationFileName }),
26
27
  totalsize: fileTotalSizeInBytes,
27
28
  source,
28
29
  sourcedetails: sourceDetails,
@@ -1 +1 @@
1
- {"version":3,"file":"nodeFileServerUploadClient.js","sourceRoot":"","sources":["../../../../../src/uploader/api/node/nodeFileServerUploadClient.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,OAAO,GAAyC,MAAM,KAAK,CAAC;AAI5D,OAAO,wBAAwB,MAAM,qDAAqD,CAAC;AAE3F,OAAO,OAAO,MAAM,sCAAsC,CAAC;AAC3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AAOtF,6EAA6E;AAC7E,MAAM,CAAC,OAAO,OAAO,0BAA2B,SAAQ,wBAAwB;IACnE,UAAU,CAAS;IACnB,YAAY,CAAM;IAE3B,YAAY,SAAiB,EAAE,UAAkB,EAAE,WAAmB,EAAE,QAAgB,EAAE,mBAA2B,EAAE,oBAA4B,EAAE,MAAc,EAAE,aAAqB,EAAE,qBAA6B,EAAE,UAAkB;QACzO,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAE5B,MAAM,uBAAuB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;QAE/E,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,WAAW,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,EAAE,aAAa,EAAE,qBAAqB,EAAE,UAAU,CAAC,CAAC;IACjL,CAAC;IAEO,iBAAiB,CAAC,UAAkB,EAAE,WAAmB,EAAE,uBAA+B,EAAE,oBAA4B,EAAE,MAAc,EAAE,aAAqB,EAAE,qBAA6B,EAAE,UAAkB;QACtN,OAAO,GAAG,CAAC,MAAM,CAAC;YACd,OAAO,EAAE;gBACL,MAAM,EAAE,qBAAqB,GAAG,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS;aACxE;YACD,YAAY,EAAE;gBACV,UAAU,EAAE,UAAU;gBACtB,WAAW,EAAE,WAAW;gBACxB,WAAW,EAAE,uBAAuB;gBACpC,SAAS,EAAE,oBAAoB;gBAC/B,MAAM;gBACN,aAAa,EAAE,aAAa;aAC/B;YACD,KAAK,EAAE;gBACH,KAAK,EAAE,UAAU;gBACjB,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC;gBAC9E,GAAG,yBAAyB;aAC/B;SACJ,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAA6B,EAAE,mBAAwC,EAAE,WAAwB,EAAE,WAAwB;QAC3I,IAAI,qBAAqB,GAA+C,IAAI,CAAC;QAE7E,MAAM,qBAAqB,GAAG,IAAI,CAAC,8BAA8B,EAAE,CAAC;QAEpE,IAAI,CAAC;YACD,IAAI,OAAO,GAAG,KAAK,CAAC;YAEpB,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;gBAC9C,OAAO,EAAE;oBACL,mBAAmB,EAAE,SAAS;iBACjC;gBACD,KAAK,EAAE;oBACH,WAAW,EAAE;wBACT,YAAY,CAAC,EAAE;4BACX,OAAO,GAAG,IAAI,CAAC;4BACf,6CAA6C;4BAC7C,YAAY,CAAC,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,4EAA4E;wBAChH,CAAC;qBACJ;oBACD,aAAa,EAAE;wBACX,KAAK,EAAC,OAAO,EAAC,EAAE;4BACZ,sCAAsC;4BACtC,IAAI,CAAC,OAAO;gCACR,OAAO;4BAEX,MAAM,cAAc,GAAG,MAAM,mBAAmB,CAAC,kBAAkB,CAAC,WAAW,EAAE,WAAW,CAAmB,CAAC;4BAChH,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;wBACpD,CAAC;qBACJ;iBACJ;aACJ,CAAC,CAAC;YAEH,MAAM,WAAW,GAAG,MAAM,mBAAmB,CAAC,cAAc,CAAC,QAAQ,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;YAEjG,MAAM,cAAc,GAAG,MAAM,mBAAmB,CAAC,kBAAkB,CAAC,WAAW,EAAE,WAAW,CAAmB,CAAC;YAChH,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YAE9C,qBAAqB,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBAC3D,IAAI;gBACJ,MAAM,EAAE,WAAW;gBACnB,YAAY,EAAE;oBACV,QAAQ,EAAE,OAAO,CAAC,kBAAkB;oBACpC,SAAS,EAAE,OAAO,CAAC,kBAAkB;oBACrC,GAAG,EAAE,WAAW;iBACnB;aACJ,CAAC,CAAC;YAEH,qBAAqB,CAAC,EAAE,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAC;YAElE,MAAM,qBAAqB,CAAC;QAChC,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YACX,iCAAiC;YACjC,IAAI,IAAI,CAAC,wCAAwC,CAAC,KAAc,CAAC;gBAC7D,KAAK,GAAG,IAAI,OAAO,CAAE,KAAe,CAAC,OAAO,CAAC,CAAC;YAElD,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,0BAA0B,CAAC,CAAC;QACjE,CAAC;gBACO,CAAC;YACL,IAAI,CAAC,mBAAmB,CAAC,UAAU;gBAC/B,MAAM,mBAAmB,CAAC,OAAO,EAAE,CAAC;YAExC,qBAAqB,EAAE,GAAG,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAC,CAAC,yIAAyI;QAClN,CAAC;IACL,CAAC;IAEO,wCAAwC,CAAC,KAAY;QACzD,OAAO,KAAK,CAAC,OAAO,KAAK,iCAAiC,CAAC;IAC/D,CAAC;CACJ","sourcesContent":["import path from \"path\";\nimport { Readable } from \"stream\";\n\nimport got, { Got, Response, CancelableRequest } from \"got\";\n\nimport type { ReadableStream } from \"stream/web\";\n\nimport NodeFileServerClientBase from \"../../../utils/api/node/nodeFileserverClientBase.js\";\n\nimport FsError from \"../../../utils/fileSystem/fsError.js\";\nimport { retryEconnresetWorkaround } from \"../../../utils/api/node/gotWorkarounds.js\";\n\nimport type ChunkStreamProvider from \"../../../utils/fileSystem/chunkStreamProvider.js\";\nimport type SendFileChunkRequest from \"../../../utils/api/dtos/sendFileChunkRequest.js\";\nimport type FileServerUploadClient from \"../fileServerUploadClient.js\";\nimport type { PauseSignal } from \"../../pauseController.js\";\n\n// This should be used as a transient object - a new instance for every chunk\nexport default class NodeFileServerUploadClient extends NodeFileServerClientBase implements FileServerUploadClient {\n readonly #uploadUrl: string;\n readonly #gotInstance: Got;\n\n constructor(uploadUrl: string, transferId: string, transferKey: string, fileName: string, fileDestinationPath: string, fileTotalSizeInBytes: number, source: string, sourceDetails: string, uploadIdleTimeoutInMs: number, retryLimit: number) {\n super();\n\n this.#uploadUrl = uploadUrl;\n\n const fullDestinationFileName = path.posix.join(fileDestinationPath, fileName);\n\n this.#gotInstance = this.createGotInstance(transferId, transferKey, fullDestinationFileName, fileTotalSizeInBytes, source, sourceDetails, uploadIdleTimeoutInMs, retryLimit);\n }\n\n private createGotInstance(transferId: string, transferKey: string, fullDestinationFileName: string, fileTotalSizeInBytes: number, source: string, sourceDetails: string, uploadIdleTimeoutInMs: number, retryLimit: number): Got {\n return got.extend({\n timeout: {\n socket: uploadIdleTimeoutInMs > 0 ? uploadIdleTimeoutInMs : undefined,\n },\n searchParams: {\n transferid: transferId,\n transferkey: transferKey,\n thefilename: fullDestinationFileName,\n totalsize: fileTotalSizeInBytes,\n source,\n sourcedetails: sourceDetails,\n },\n retry: {\n limit: retryLimit,\n methods: [`GET`, `POST`, `PUT`, `PATCH`, `HEAD`, `DELETE`, `OPTIONS`, `TRACE`],\n ...retryEconnresetWorkaround,\n },\n });\n }\n\n async sendFileChunk(request: SendFileChunkRequest, chunkStreamProvider: ChunkStreamProvider, pauseSignal: PauseSignal, abortSignal: AbortSignal): Promise<void> {\n let ongoingRequestPromise: CancelableRequest<Response<string>> | null = null;\n\n const uploadProgressHandler = this.getDataTransferProgressHandler();\n\n try {\n let isRetry = false;\n\n const gotChunkInstance = this.#gotInstance.extend({\n headers: {\n 'Transfer-Encoding': `chunked`,\n },\n hooks: {\n beforeRetry: [\n requestError => {\n isRetry = true;\n // eslint-disable-next-line no-param-reassign\n requestError.options.body = ``; // clearing the body to avoid `Cannot retry with consumed body stream` error\n },\n ],\n beforeRequest: [\n async options => {\n /* eslint-disable no-param-reassign */\n if (!isRetry)\n return;\n\n const readableStream = await chunkStreamProvider.getChunkReadStream(pauseSignal, abortSignal) as ReadableStream;\n options.body = Readable.fromWeb(readableStream);\n },\n ],\n },\n });\n\n const md5checksum = await chunkStreamProvider.getMd5Checksum(`base64`, pauseSignal, abortSignal);\n\n const readableStream = await chunkStreamProvider.getChunkReadStream(pauseSignal, abortSignal) as ReadableStream;\n const body = Readable.fromWeb(readableStream);\n\n ongoingRequestPromise = gotChunkInstance.post(this.#uploadUrl, {\n body,\n signal: abortSignal,\n searchParams: {\n chunkpos: request.chunkStartPosition,\n chunksize: request.chunkLengthInBytes,\n md5: md5checksum,\n },\n });\n\n ongoingRequestPromise.on(`uploadProgress`, uploadProgressHandler);\n\n await ongoingRequestPromise;\n }\n catch (error) {\n /* eslint-disable no-ex-assign */\n if (this.isWrappedCreatingFileReadStreamException(error as Error))\n error = new FsError((error as Error).message);\n\n throw this.createApiError(error, `Error sending file chunk`);\n }\n finally {\n if (!chunkStreamProvider.isReleased)\n await chunkStreamProvider.release();\n\n ongoingRequestPromise?.off(`uploadProgress`, uploadProgressHandler); // There is a bug in GOT that it fires this event once after the got promise was canceled https://github.com/sindresorhus/got/issues/2084\n }\n }\n\n private isWrappedCreatingFileReadStreamException(error: Error): boolean {\n return error.message === `CreatingFileReadStreamException`;\n }\n}\n"]}
1
+ {"version":3,"file":"nodeFileServerUploadClient.js","sourceRoot":"","sources":["../../../../../src/uploader/api/node/nodeFileServerUploadClient.ts"],"names":[],"mappings":"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","sourcesContent":["import path from \"path\";\nimport { Readable } from \"stream\";\n\nimport got, { Got, Response, CancelableRequest } from \"got\";\n\nimport type { ReadableStream } from \"stream/web\";\n\nimport NodeFileServerClientBase from \"../../../utils/api/node/nodeFileserverClientBase.js\";\n\nimport FsError from \"../../../utils/fileSystem/fsError.js\";\nimport { retryEconnresetWorkaround } from \"../../../utils/api/node/gotWorkarounds.js\";\n\nimport type ChunkStreamProvider from \"../../../utils/fileSystem/chunkStreamProvider.js\";\nimport type SendFileChunkRequest from \"../../../utils/api/dtos/sendFileChunkRequest.js\";\nimport type FileServerUploadClient from \"../fileServerUploadClient.js\";\nimport type { PauseSignal } from \"../../pauseController.js\";\n\n// This should be used as a transient object - a new instance for every chunk\nexport default class NodeFileServerUploadClient extends NodeFileServerClientBase implements FileServerUploadClient {\n readonly #uploadUrl: string;\n readonly #gotInstance: Got;\n\n constructor(uploadUrl: string, transferId: string, transferKey: string, fileName: string, fileDestinationPath: string, fileTotalSizeInBytes: number, fileId: string | undefined, source: string, sourceDetails: string, uploadIdleTimeoutInMs: number, retryLimit: number) {\n super();\n\n this.#uploadUrl = uploadUrl;\n\n const fullDestinationFileName = path.posix.join(fileDestinationPath, fileName);\n\n this.#gotInstance = this.createGotInstance(transferId, transferKey, fullDestinationFileName, fileTotalSizeInBytes, fileId, source, sourceDetails, uploadIdleTimeoutInMs, retryLimit);\n }\n\n private createGotInstance(transferId: string, transferKey: string, fullDestinationFileName: string, fileTotalSizeInBytes: number, fileId: string | undefined, source: string, sourceDetails: string, uploadIdleTimeoutInMs: number, retryLimit: number): Got {\n return got.extend({\n timeout: {\n socket: uploadIdleTimeoutInMs > 0 ? uploadIdleTimeoutInMs : undefined,\n },\n searchParams: {\n transferid: transferId,\n transferkey: transferKey,\n // The file server saves the chunk into the files db only when fileid is present and thefilename is absent.\n ...(fileId ? { fileid: fileId } : { thefilename: fullDestinationFileName }),\n totalsize: fileTotalSizeInBytes,\n source,\n sourcedetails: sourceDetails,\n },\n retry: {\n limit: retryLimit,\n methods: [`GET`, `POST`, `PUT`, `PATCH`, `HEAD`, `DELETE`, `OPTIONS`, `TRACE`],\n ...retryEconnresetWorkaround,\n },\n });\n }\n\n async sendFileChunk(request: SendFileChunkRequest, chunkStreamProvider: ChunkStreamProvider, pauseSignal: PauseSignal, abortSignal: AbortSignal): Promise<void> {\n let ongoingRequestPromise: CancelableRequest<Response<string>> | null = null;\n\n const uploadProgressHandler = this.getDataTransferProgressHandler();\n\n try {\n let isRetry = false;\n\n const gotChunkInstance = this.#gotInstance.extend({\n headers: {\n 'Transfer-Encoding': `chunked`,\n },\n hooks: {\n beforeRetry: [\n requestError => {\n isRetry = true;\n // eslint-disable-next-line no-param-reassign\n requestError.options.body = ``; // clearing the body to avoid `Cannot retry with consumed body stream` error\n },\n ],\n beforeRequest: [\n async options => {\n /* eslint-disable no-param-reassign */\n if (!isRetry)\n return;\n\n const readableStream = await chunkStreamProvider.getChunkReadStream(pauseSignal, abortSignal) as ReadableStream;\n options.body = Readable.fromWeb(readableStream);\n },\n ],\n },\n });\n\n const md5checksum = await chunkStreamProvider.getMd5Checksum(`base64`, pauseSignal, abortSignal);\n\n const readableStream = await chunkStreamProvider.getChunkReadStream(pauseSignal, abortSignal) as ReadableStream;\n const body = Readable.fromWeb(readableStream);\n\n ongoingRequestPromise = gotChunkInstance.post(this.#uploadUrl, {\n body,\n signal: abortSignal,\n searchParams: {\n chunkpos: request.chunkStartPosition,\n chunksize: request.chunkLengthInBytes,\n md5: md5checksum,\n },\n });\n\n ongoingRequestPromise.on(`uploadProgress`, uploadProgressHandler);\n\n await ongoingRequestPromise;\n }\n catch (error) {\n /* eslint-disable no-ex-assign */\n if (this.isWrappedCreatingFileReadStreamException(error as Error))\n error = new FsError((error as Error).message);\n\n throw this.createApiError(error, `Error sending file chunk`);\n }\n finally {\n if (!chunkStreamProvider.isReleased)\n await chunkStreamProvider.release();\n\n ongoingRequestPromise?.off(`uploadProgress`, uploadProgressHandler); // There is a bug in GOT that it fires this event once after the got promise was canceled https://github.com/sindresorhus/got/issues/2084\n }\n }\n\n private isWrappedCreatingFileReadStreamException(error: Error): boolean {\n return error.message === `CreatingFileReadStreamException`;\n }\n}\n"]}
@@ -5,7 +5,7 @@ import type FileServerUploadClient from "../fileServerUploadClient.js";
5
5
  import type { PauseSignal } from "../../pauseController.js";
6
6
  export default class WebFileServerUploadClient extends WebFileServerClientBase implements FileServerUploadClient {
7
7
  #private;
8
- constructor(uploadUrl: string, transferId: string, transferKey: string, fileName: string, fileDestinationPath: string, fileTotalSizeInBytes: number, source: string, sourceDetails: string, uploadIdleTimeoutInMs: number, retryLimit: number);
8
+ constructor(uploadUrl: string, transferId: string, transferKey: string, fileName: string, fileDestinationPath: string, fileTotalSizeInBytes: number, fileId: string | undefined, source: string, sourceDetails: string, uploadIdleTimeoutInMs: number, retryLimit: number);
9
9
  private joinDestinationPathAndFileName;
10
10
  private createAxiosInstance;
11
11
  sendFileChunk(request: SendFileChunkRequest, chunkStreamProvider: ChunkStreamProvider, pauseSignal: PauseSignal, abortSignal: AbortSignal): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"webFileServerUploadClient.d.ts","sourceRoot":"","sources":["../../../../../src/uploader/api/web/webFileServerUploadClient.ts"],"names":[],"mappings":"AAGA,OAAO,uBAAuB,MAAM,mDAAmD,CAAC;AAKxF,OAAO,KAAK,mBAAmB,MAAM,kDAAkD,CAAC;AACxF,OAAO,KAAK,oBAAoB,MAAM,iDAAiD,CAAC;AACxF,OAAO,KAAK,sBAAsB,MAAM,8BAA8B,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAG5D,MAAM,CAAC,OAAO,OAAO,yBAA0B,SAAQ,uBAAwB,YAAW,sBAAsB;;gBAOhG,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAY7O,OAAO,CAAC,8BAA8B;IAOtC,OAAO,CAAC,mBAAmB;IAgBrB,aAAa,CAAC,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAoD/J,OAAO,CAAC,uBAAuB;IAmB/B,OAAO,CAAC,wCAAwC;CAGnD"}
1
+ {"version":3,"file":"webFileServerUploadClient.d.ts","sourceRoot":"","sources":["../../../../../src/uploader/api/web/webFileServerUploadClient.ts"],"names":[],"mappings":"AAGA,OAAO,uBAAuB,MAAM,mDAAmD,CAAC;AAKxF,OAAO,KAAK,mBAAmB,MAAM,kDAAkD,CAAC;AACxF,OAAO,KAAK,oBAAoB,MAAM,iDAAiD,CAAC;AACxF,OAAO,KAAK,sBAAsB,MAAM,8BAA8B,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAG5D,MAAM,CAAC,OAAO,OAAO,yBAA0B,SAAQ,uBAAwB,YAAW,sBAAsB;;gBAOhG,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAYzQ,OAAO,CAAC,8BAA8B;IAOtC,OAAO,CAAC,mBAAmB;IAiBrB,aAAa,CAAC,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAoD/J,OAAO,CAAC,uBAAuB;IAmB/B,OAAO,CAAC,wCAAwC;CAGnD"}
@@ -9,25 +9,26 @@ export default class WebFileServerUploadClient extends WebFileServerClientBase {
9
9
  #retryLimit;
10
10
  #uploadIdleTimeoutInMs;
11
11
  #axiosInstance;
12
- constructor(uploadUrl, transferId, transferKey, fileName, fileDestinationPath, fileTotalSizeInBytes, source, sourceDetails, uploadIdleTimeoutInMs, retryLimit) {
12
+ constructor(uploadUrl, transferId, transferKey, fileName, fileDestinationPath, fileTotalSizeInBytes, fileId, source, sourceDetails, uploadIdleTimeoutInMs, retryLimit) {
13
13
  super();
14
14
  this.#uploadUrl = uploadUrl;
15
15
  this.#retryLimit = retryLimit;
16
16
  this.#uploadIdleTimeoutInMs = uploadIdleTimeoutInMs;
17
17
  const fullDestinationFileName = this.joinDestinationPathAndFileName(fileDestinationPath, fileName);
18
- this.#axiosInstance = this.createAxiosInstance(transferId, transferKey, fullDestinationFileName, fileTotalSizeInBytes, source, sourceDetails);
18
+ this.#axiosInstance = this.createAxiosInstance(transferId, transferKey, fullDestinationFileName, fileTotalSizeInBytes, fileId, source, sourceDetails);
19
19
  }
20
20
  joinDestinationPathAndFileName(fileDestinationPath, fileName) {
21
21
  if (fileDestinationPath.endsWith(`/`))
22
22
  return `${fileDestinationPath}${fileName}`;
23
23
  return `${fileDestinationPath}/${fileName}`;
24
24
  }
25
- createAxiosInstance(transferId, transferKey, fullDestinationFileName, fileTotalSizeInBytes, source, sourceDetails) {
25
+ createAxiosInstance(transferId, transferKey, fullDestinationFileName, fileTotalSizeInBytes, fileId, source, sourceDetails) {
26
26
  return axios.create({
27
27
  params: {
28
28
  transferid: transferId,
29
29
  transferkey: transferKey,
30
- thefilename: fullDestinationFileName,
30
+ // The file server saves the chunk into the files db only when fileid is present and thefilename is absent.
31
+ ...(fileId ? { fileid: fileId } : { thefilename: fullDestinationFileName }),
31
32
  totalsize: fileTotalSizeInBytes,
32
33
  source,
33
34
  sourcedetails: sourceDetails,
@@ -1 +1 @@
1
- {"version":3,"file":"webFileServerUploadClient.js","sourceRoot":"","sources":["../../../../../src/uploader/api/web/webFileServerUploadClient.ts"],"names":[],"mappings":"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","sourcesContent":["import axios, { AxiosInstance } from \"axios\";\nimport axiosRetry, { isNetworkOrIdempotentRequestError } from \"axios-retry\";\n\nimport WebFileServerClientBase from \"../../../utils/api/web/webFileserverClientBase.js\";\n\nimport FsError from \"../../../utils/fileSystem/fsError.js\";\nimport AxiosIdleTimeoutManager from \"./utils/axiosIdleTimeoutManager.js\";\n\nimport type ChunkStreamProvider from \"../../../utils/fileSystem/chunkStreamProvider.js\";\nimport type SendFileChunkRequest from \"../../../utils/api/dtos/sendFileChunkRequest.js\";\nimport type FileServerUploadClient from \"../fileServerUploadClient.js\";\nimport type { PauseSignal } from \"../../pauseController.js\";\n\n// This should be used as a transient object - a new instance for every chunk\nexport default class WebFileServerUploadClient extends WebFileServerClientBase implements FileServerUploadClient {\n readonly #uploadUrl: string;\n readonly #retryLimit: number;\n readonly #uploadIdleTimeoutInMs: number;\n\n readonly #axiosInstance: AxiosInstance;\n\n constructor(uploadUrl: string, transferId: string, transferKey: string, fileName: string, fileDestinationPath: string, fileTotalSizeInBytes: number, source: string, sourceDetails: string, uploadIdleTimeoutInMs: number, retryLimit: number) {\n super();\n\n this.#uploadUrl = uploadUrl;\n this.#retryLimit = retryLimit;\n this.#uploadIdleTimeoutInMs = uploadIdleTimeoutInMs;\n\n const fullDestinationFileName = this.joinDestinationPathAndFileName(fileDestinationPath, fileName);\n\n this.#axiosInstance = this.createAxiosInstance(transferId, transferKey, fullDestinationFileName, fileTotalSizeInBytes, source, sourceDetails);\n }\n\n private joinDestinationPathAndFileName(fileDestinationPath: string, fileName: string) {\n if (fileDestinationPath.endsWith(`/`))\n return `${fileDestinationPath}${fileName}`;\n\n return `${fileDestinationPath}/${fileName}`;\n }\n\n private createAxiosInstance(transferId: string, transferKey: string, fullDestinationFileName: string, fileTotalSizeInBytes: number, source: string, sourceDetails: string): AxiosInstance {\n return axios.create({\n params: {\n transferid: transferId,\n transferkey: transferKey,\n thefilename: fullDestinationFileName,\n totalsize: fileTotalSizeInBytes,\n source,\n sourcedetails: sourceDetails,\n },\n headers: {\n 'Content-Type': `application/octet-stream`,\n },\n });\n }\n\n async sendFileChunk(request: SendFileChunkRequest, chunkStreamProvider: ChunkStreamProvider, pauseSignal: PauseSignal, abortSignal: AbortSignal): Promise<void> {\n let isRequestFinished = false;\n\n const idleTimeoutManager = new AxiosIdleTimeoutManager(this.#uploadIdleTimeoutInMs, abortSignal);\n\n try {\n const md5checksum = await chunkStreamProvider.getMd5Checksum(`base64`, pauseSignal, abortSignal);\n const chunkBlob = await chunkStreamProvider.getChunkBlob();\n\n const idleTimeout = idleTimeoutManager.configureNewIdleTimeout();\n const uploadProgressHandler = this.getDataTransferProgressHandler();\n\n this.configureRetryMechanism(chunkStreamProvider, idleTimeoutManager);\n\n idleTimeoutManager.currentTimeout?.resetIdleTimeout();\n\n await this.#axiosInstance.post(this.#uploadUrl, chunkBlob, {\n maxBodyLength: Infinity,\n maxContentLength: Infinity,\n signal: idleTimeout.mergedSignal,\n onUploadProgress: progressEvent => {\n if (isRequestFinished)\n return; // Axios still sends events after abort signal was fired\n\n idleTimeoutManager.currentTimeout?.resetIdleTimeout();\n uploadProgressHandler(progressEvent);\n },\n params: {\n chunkpos: request.chunkStartPosition,\n chunksize: request.chunkLengthInBytes,\n md5: md5checksum,\n },\n });\n }\n catch (error) {\n /* eslint-disable no-ex-assign */\n if (this.isWrappedCreatingFileReadStreamException(error as Error))\n error = new FsError((error as Error).message);\n\n throw this.createApiError(error, `Error sending file chunk`, idleTimeoutManager.currentTimeout?.idleTimeoutSignal);\n }\n finally {\n isRequestFinished = true;\n\n idleTimeoutManager.currentTimeout?.stopIdleTimeout();\n\n if (!chunkStreamProvider.isReleased)\n await chunkStreamProvider.release();\n }\n }\n\n /* eslint-disable no-param-reassign */\n private configureRetryMechanism(chunkStreamProvider: ChunkStreamProvider, idleTimeoutManager: AxiosIdleTimeoutManager) {\n axiosRetry(this.#axiosInstance, {\n retries: this.#retryLimit,\n retryDelay: retryCount => retryCount * 1000,\n shouldResetTimeout: true,\n retryCondition: e => {\n const isIdleTimeouted = e.code === `ERR_CANCELED` && Boolean(idleTimeoutManager.currentTimeout?.idleTimeoutSignal.aborted);\n const isRetryablePost = e.config?.method === `post`;\n return isNetworkOrIdempotentRequestError(e) || isRetryablePost || isIdleTimeouted;\n },\n onRetry: async (_retryCount, _error, requestConfig) => {\n const newIdleTimeout = idleTimeoutManager.configureNewIdleTimeout();\n\n requestConfig.signal = newIdleTimeout.mergedSignal;\n requestConfig.data = await chunkStreamProvider.getChunkBlob();\n },\n });\n }\n\n private isWrappedCreatingFileReadStreamException(error: Error): boolean {\n return error.message === `CreatingFileReadStreamException`;\n }\n}\n"]}
1
+ {"version":3,"file":"webFileServerUploadClient.js","sourceRoot":"","sources":["../../../../../src/uploader/api/web/webFileServerUploadClient.ts"],"names":[],"mappings":"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","sourcesContent":["import axios, { AxiosInstance } from \"axios\";\nimport axiosRetry, { isNetworkOrIdempotentRequestError } from \"axios-retry\";\n\nimport WebFileServerClientBase from \"../../../utils/api/web/webFileserverClientBase.js\";\n\nimport FsError from \"../../../utils/fileSystem/fsError.js\";\nimport AxiosIdleTimeoutManager from \"./utils/axiosIdleTimeoutManager.js\";\n\nimport type ChunkStreamProvider from \"../../../utils/fileSystem/chunkStreamProvider.js\";\nimport type SendFileChunkRequest from \"../../../utils/api/dtos/sendFileChunkRequest.js\";\nimport type FileServerUploadClient from \"../fileServerUploadClient.js\";\nimport type { PauseSignal } from \"../../pauseController.js\";\n\n// This should be used as a transient object - a new instance for every chunk\nexport default class WebFileServerUploadClient extends WebFileServerClientBase implements FileServerUploadClient {\n readonly #uploadUrl: string;\n readonly #retryLimit: number;\n readonly #uploadIdleTimeoutInMs: number;\n\n readonly #axiosInstance: AxiosInstance;\n\n constructor(uploadUrl: string, transferId: string, transferKey: string, fileName: string, fileDestinationPath: string, fileTotalSizeInBytes: number, fileId: string | undefined, source: string, sourceDetails: string, uploadIdleTimeoutInMs: number, retryLimit: number) {\n super();\n\n this.#uploadUrl = uploadUrl;\n this.#retryLimit = retryLimit;\n this.#uploadIdleTimeoutInMs = uploadIdleTimeoutInMs;\n\n const fullDestinationFileName = this.joinDestinationPathAndFileName(fileDestinationPath, fileName);\n\n this.#axiosInstance = this.createAxiosInstance(transferId, transferKey, fullDestinationFileName, fileTotalSizeInBytes, fileId, source, sourceDetails);\n }\n\n private joinDestinationPathAndFileName(fileDestinationPath: string, fileName: string) {\n if (fileDestinationPath.endsWith(`/`))\n return `${fileDestinationPath}${fileName}`;\n\n return `${fileDestinationPath}/${fileName}`;\n }\n\n private createAxiosInstance(transferId: string, transferKey: string, fullDestinationFileName: string, fileTotalSizeInBytes: number, fileId: string | undefined, source: string, sourceDetails: string): AxiosInstance {\n return axios.create({\n params: {\n transferid: transferId,\n transferkey: transferKey,\n // The file server saves the chunk into the files db only when fileid is present and thefilename is absent.\n ...(fileId ? { fileid: fileId } : { thefilename: fullDestinationFileName }),\n totalsize: fileTotalSizeInBytes,\n source,\n sourcedetails: sourceDetails,\n },\n headers: {\n 'Content-Type': `application/octet-stream`,\n },\n });\n }\n\n async sendFileChunk(request: SendFileChunkRequest, chunkStreamProvider: ChunkStreamProvider, pauseSignal: PauseSignal, abortSignal: AbortSignal): Promise<void> {\n let isRequestFinished = false;\n\n const idleTimeoutManager = new AxiosIdleTimeoutManager(this.#uploadIdleTimeoutInMs, abortSignal);\n\n try {\n const md5checksum = await chunkStreamProvider.getMd5Checksum(`base64`, pauseSignal, abortSignal);\n const chunkBlob = await chunkStreamProvider.getChunkBlob();\n\n const idleTimeout = idleTimeoutManager.configureNewIdleTimeout();\n const uploadProgressHandler = this.getDataTransferProgressHandler();\n\n this.configureRetryMechanism(chunkStreamProvider, idleTimeoutManager);\n\n idleTimeoutManager.currentTimeout?.resetIdleTimeout();\n\n await this.#axiosInstance.post(this.#uploadUrl, chunkBlob, {\n maxBodyLength: Infinity,\n maxContentLength: Infinity,\n signal: idleTimeout.mergedSignal,\n onUploadProgress: progressEvent => {\n if (isRequestFinished)\n return; // Axios still sends events after abort signal was fired\n\n idleTimeoutManager.currentTimeout?.resetIdleTimeout();\n uploadProgressHandler(progressEvent);\n },\n params: {\n chunkpos: request.chunkStartPosition,\n chunksize: request.chunkLengthInBytes,\n md5: md5checksum,\n },\n });\n }\n catch (error) {\n /* eslint-disable no-ex-assign */\n if (this.isWrappedCreatingFileReadStreamException(error as Error))\n error = new FsError((error as Error).message);\n\n throw this.createApiError(error, `Error sending file chunk`, idleTimeoutManager.currentTimeout?.idleTimeoutSignal);\n }\n finally {\n isRequestFinished = true;\n\n idleTimeoutManager.currentTimeout?.stopIdleTimeout();\n\n if (!chunkStreamProvider.isReleased)\n await chunkStreamProvider.release();\n }\n }\n\n /* eslint-disable no-param-reassign */\n private configureRetryMechanism(chunkStreamProvider: ChunkStreamProvider, idleTimeoutManager: AxiosIdleTimeoutManager) {\n axiosRetry(this.#axiosInstance, {\n retries: this.#retryLimit,\n retryDelay: retryCount => retryCount * 1000,\n shouldResetTimeout: true,\n retryCondition: e => {\n const isIdleTimeouted = e.code === `ERR_CANCELED` && Boolean(idleTimeoutManager.currentTimeout?.idleTimeoutSignal.aborted);\n const isRetryablePost = e.config?.method === `post`;\n return isNetworkOrIdempotentRequestError(e) || isRetryablePost || isIdleTimeouted;\n },\n onRetry: async (_retryCount, _error, requestConfig) => {\n const newIdleTimeout = idleTimeoutManager.configureNewIdleTimeout();\n\n requestConfig.signal = newIdleTimeout.mergedSignal;\n requestConfig.data = await chunkStreamProvider.getChunkBlob();\n },\n });\n }\n\n private isWrappedCreatingFileReadStreamException(error: Error): boolean {\n return error.message === `CreatingFileReadStreamException`;\n }\n}\n"]}
@@ -1,9 +1,7 @@
1
1
  import type { ContinuousChunk } from "../state/continuousChunksCalculator.js";
2
2
  export default class ChunksIterator {
3
3
  #private;
4
- constructor(alreadySentChunks: readonly Readonly<ContinuousChunk>[], fileSizeInBytes: number, currentChunkSizeProvider: {
5
- readonly currentChunkSize: number;
6
- });
4
+ constructor(alreadySentChunks: readonly Readonly<ContinuousChunk>[], fileSizeInBytes: number, chunkSizeInBytes: number);
7
5
  private sanitizeChunks;
8
6
  private removeZeroByteChunks;
9
7
  private createChunksByStartPositionMap;
@@ -1 +1 @@
1
- {"version":3,"file":"chunksIterator.d.ts","sourceRoot":"","sources":["../../../../src/uploader/chunksIterator/chunksIterator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AAE9E,MAAM,CAAC,OAAO,OAAO,cAAc;;gBAUnB,iBAAiB,EAAE,SAAS,QAAQ,CAAC,eAAe,CAAC,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,wBAAwB,EAAE;QAAE,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE;IAQ7J,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,8BAA8B;IAItC,iBAAiB,IAAI,gBAAgB,CAAC,eAAe,CAAC;IActD,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,oCAAoC;IAS5C,OAAO,CAAC,oBAAoB;IAa5B,OAAO,CAAC,qBAAqB;IAa7B,OAAO,CAAC,mBAAmB;CAgB9B"}
1
+ {"version":3,"file":"chunksIterator.d.ts","sourceRoot":"","sources":["../../../../src/uploader/chunksIterator/chunksIterator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AAE9E,MAAM,CAAC,OAAO,OAAO,cAAc;;gBAUnB,iBAAiB,EAAE,SAAS,QAAQ,CAAC,eAAe,CAAC,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM;IAQtH,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,8BAA8B;IAItC,iBAAiB,IAAI,gBAAgB,CAAC,eAAe,CAAC;IActD,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,oCAAoC;IAS5C,OAAO,CAAC,oBAAoB;IAa5B,OAAO,CAAC,qBAAqB;IAa7B,OAAO,CAAC,mBAAmB;CAgB9B"}
@@ -2,14 +2,14 @@ export default class ChunksIterator {
2
2
  #alreadySentChunks;
3
3
  #alreadySentChunksByStartPosition;
4
4
  #fileSizeInBytes;
5
- #currentChunkSizeProvider;
5
+ #chunkSizeInBytes;
6
6
  #nextChunkStartPosition = 0;
7
7
  #isValueAlreadyReturnedForZeroBytesFile = false;
8
- constructor(alreadySentChunks, fileSizeInBytes, currentChunkSizeProvider) {
8
+ constructor(alreadySentChunks, fileSizeInBytes, chunkSizeInBytes) {
9
9
  this.#alreadySentChunks = this.sanitizeChunks(alreadySentChunks);
10
10
  this.#alreadySentChunksByStartPosition = this.createChunksByStartPositionMap(this.#alreadySentChunks);
11
11
  this.#fileSizeInBytes = fileSizeInBytes;
12
- this.#currentChunkSizeProvider = currentChunkSizeProvider;
12
+ this.#chunkSizeInBytes = chunkSizeInBytes;
13
13
  }
14
14
  // This is an anti corruption layer that can be removed after everybody migrates to desktop > 4.8.2
15
15
  sanitizeChunks(alreadySentChunks) {
@@ -60,7 +60,7 @@ export default class ChunksIterator {
60
60
  }
61
61
  }
62
62
  getChunkSizeInBytes(newChunkStartPosition) {
63
- const currentMaxChunkSize = this.#currentChunkSizeProvider.currentChunkSize;
63
+ const currentMaxChunkSize = this.#chunkSizeInBytes;
64
64
  const newChunkEndPosition = newChunkStartPosition + currentMaxChunkSize - 1;
65
65
  const alreadySentChunkStartingInTheMiddle = this.#alreadySentChunks.find(c => newChunkStartPosition < c.startPosition && c.startPosition <= newChunkEndPosition);
66
66
  if (alreadySentChunkStartingInTheMiddle)