filemail-sdk 10.4.0 → 10.5.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.
- package/dist/src/client/downloader/downloaderCore.d.ts +2 -1
- package/dist/src/client/downloader/downloaderCore.d.ts.map +1 -1
- package/dist/src/client/downloader/downloaderCore.js +6 -4
- package/dist/src/client/downloader/downloaderCore.js.map +1 -1
- package/dist/src/client/downloader/node/nodeTransferDownloader.d.ts.map +1 -1
- package/dist/src/client/downloader/node/nodeTransferDownloader.js +4 -2
- package/dist/src/client/downloader/node/nodeTransferDownloader.js.map +1 -1
- package/dist/src/client/uploader/node/nodeTransferUploader.d.ts.map +1 -1
- package/dist/src/client/uploader/node/nodeTransferUploader.js +10 -4
- package/dist/src/client/uploader/node/nodeTransferUploader.js.map +1 -1
- package/dist/src/client/uploader/transferUploaderBase.js +1 -1
- package/dist/src/client/uploader/transferUploaderBase.js.map +1 -1
- package/dist/src/client/uploader/web/webTransferUploader.d.ts +2 -2
- package/dist/src/client/uploader/web/webTransferUploader.d.ts.map +1 -1
- package/dist/src/client/uploader/web/webTransferUploader.js +7 -2
- package/dist/src/client/uploader/web/webTransferUploader.js.map +1 -1
- package/dist/src/client/uploader/web/webTransferUploaderConfig.d.ts +7 -0
- package/dist/src/client/uploader/web/webTransferUploaderConfig.d.ts.map +1 -0
- package/dist/src/client/uploader/web/webTransferUploaderConfig.js +2 -0
- package/dist/src/client/uploader/web/webTransferUploaderConfig.js.map +1 -0
- package/dist/src/downloader/api/fileServerDownloadClient.d.ts +2 -2
- package/dist/src/downloader/api/fileServerDownloadClient.d.ts.map +1 -1
- package/dist/src/downloader/api/fileServerDownloadClient.js.map +1 -1
- package/dist/src/downloader/chunkDownloader.d.ts +3 -2
- package/dist/src/downloader/chunkDownloader.d.ts.map +1 -1
- package/dist/src/downloader/chunkDownloader.js +6 -3
- package/dist/src/downloader/chunkDownloader.js.map +1 -1
- package/dist/src/downloader/filesDownloader.d.ts +2 -1
- package/dist/src/downloader/filesDownloader.d.ts.map +1 -1
- package/dist/src/downloader/filesDownloader.js +4 -2
- package/dist/src/downloader/filesDownloader.js.map +1 -1
- package/dist/src/downloader/md5Provider/downloaderChunkMD5Provider.d.ts +6 -0
- package/dist/src/downloader/md5Provider/downloaderChunkMD5Provider.d.ts.map +1 -0
- package/dist/src/downloader/md5Provider/downloaderChunkMD5Provider.js +2 -0
- package/dist/src/downloader/md5Provider/downloaderChunkMD5Provider.js.map +1 -0
- package/dist/src/downloader/md5Provider/downloaderChunkMD5ProviderFactory.d.ts +7 -0
- package/dist/src/downloader/md5Provider/downloaderChunkMD5ProviderFactory.d.ts.map +1 -0
- package/dist/src/downloader/md5Provider/downloaderChunkMD5ProviderFactory.js +2 -0
- package/dist/src/downloader/md5Provider/downloaderChunkMD5ProviderFactory.js.map +1 -0
- package/dist/src/downloader/md5Provider/node/nodeOnDemandMD5Provider.d.ts +10 -0
- package/dist/src/downloader/md5Provider/node/nodeOnDemandMD5Provider.d.ts.map +1 -0
- package/dist/src/downloader/md5Provider/node/nodeOnDemandMD5Provider.js +36 -0
- package/dist/src/downloader/md5Provider/node/nodeOnDemandMD5Provider.js.map +1 -0
- package/dist/src/downloader/md5Provider/node/nodeOnDemandMD5ProviderFactory.d.ts +10 -0
- package/dist/src/downloader/md5Provider/node/nodeOnDemandMD5ProviderFactory.d.ts.map +1 -0
- package/dist/src/downloader/md5Provider/node/nodeOnDemandMD5ProviderFactory.js +14 -0
- package/dist/src/downloader/md5Provider/node/nodeOnDemandMD5ProviderFactory.js.map +1 -0
- package/dist/src/index.d.ts +10 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/index.node.d.ts +4 -0
- package/dist/src/index.node.d.ts.map +1 -1
- package/dist/src/index.node.js +4 -0
- package/dist/src/index.node.js.map +1 -1
- package/dist/src/index.web.d.ts +5 -0
- package/dist/src/index.web.d.ts.map +1 -1
- package/dist/src/index.web.js +4 -0
- package/dist/src/index.web.js.map +1 -1
- package/dist/src/uploader/api/node/nodeFileServerUploadClient.d.ts.map +1 -1
- package/dist/src/uploader/api/node/nodeFileServerUploadClient.js +1 -2
- package/dist/src/uploader/api/node/nodeFileServerUploadClient.js.map +1 -1
- package/dist/src/uploader/api/web/webFileServerUploadClient.d.ts.map +1 -1
- package/dist/src/uploader/api/web/webFileServerUploadClient.js +1 -2
- package/dist/src/uploader/api/web/webFileServerUploadClient.js.map +1 -1
- package/dist/src/uploader/chunkStreamProviderFactory/node/nodeFileDetailsUploaderChunkStreamProviderFactory.d.ts +9 -0
- package/dist/src/uploader/chunkStreamProviderFactory/node/nodeFileDetailsUploaderChunkStreamProviderFactory.d.ts.map +1 -0
- package/dist/src/uploader/chunkStreamProviderFactory/{nodeFileDetailsUploaderChunkStreamProviderFactory.js → node/nodeFileDetailsUploaderChunkStreamProviderFactory.js} +1 -1
- package/dist/src/uploader/chunkStreamProviderFactory/node/nodeFileDetailsUploaderChunkStreamProviderFactory.js.map +1 -0
- package/dist/src/uploader/chunkStreamProviderFactory/uploaderChunkStreamProviderFactory.d.ts +2 -2
- package/dist/src/uploader/chunkStreamProviderFactory/uploaderChunkStreamProviderFactory.d.ts.map +1 -1
- package/dist/src/uploader/chunkStreamProviderFactory/uploaderChunkStreamProviderFactory.js.map +1 -1
- package/dist/src/uploader/chunkStreamProviderFactory/web/webFileDetailsUploaderChunkStreamProviderFactory.d.ts +9 -0
- package/dist/src/uploader/chunkStreamProviderFactory/web/webFileDetailsUploaderChunkStreamProviderFactory.d.ts.map +1 -0
- package/dist/src/uploader/chunkStreamProviderFactory/{webFileDetailsUploaderChunkStreamProviderFactory.js → web/webFileDetailsUploaderChunkStreamProviderFactory.js} +1 -1
- package/dist/src/uploader/chunkStreamProviderFactory/web/webFileDetailsUploaderChunkStreamProviderFactory.js.map +1 -0
- package/dist/src/uploader/fileChunksPlan.d.ts +8 -0
- package/dist/src/uploader/fileChunksPlan.d.ts.map +1 -0
- package/dist/src/uploader/fileChunksPlan.js +2 -0
- package/dist/src/uploader/fileChunksPlan.js.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/defaultMD5ComputationStrategyFactory.d.ts +10 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/defaultMD5ComputationStrategyFactory.d.ts.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/defaultMD5ComputationStrategyFactory.js +12 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/defaultMD5ComputationStrategyFactory.js.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/md5ComputationSession.d.ts +7 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/md5ComputationSession.d.ts.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/md5ComputationSession.js +2 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/md5ComputationSession.js.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/md5ComputationStrategy.d.ts +6 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/md5ComputationStrategy.d.ts.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/md5ComputationStrategy.js +2 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/md5ComputationStrategy.js.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/md5ComputationStrategyFactory.d.ts +6 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/md5ComputationStrategyFactory.d.ts.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/md5ComputationStrategyFactory.js +2 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/md5ComputationStrategyFactory.js.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/node/nodeAsyncMD5ComputationStrategy.d.ts +7 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/node/nodeAsyncMD5ComputationStrategy.d.ts.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/node/nodeAsyncMD5ComputationStrategy.js +14 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/node/nodeAsyncMD5ComputationStrategy.js.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/computeBlobMD5.d.ts +2 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/computeBlobMD5.d.ts.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/computeBlobMD5.js +27 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/computeBlobMD5.js.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5.worker.d.ts +2 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5.worker.d.ts.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5.worker.js +5 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5.worker.js.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5WorkerMessages.d.ts +14 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5WorkerMessages.d.ts.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5WorkerMessages.js +2 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5WorkerMessages.js.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5WorkersManager.d.ts +17 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5WorkersManager.d.ts.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5WorkersManager.js +113 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5WorkersManager.js.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/registerMD5Worker.d.ts +7 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/registerMD5Worker.d.ts.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/registerMD5Worker.js +17 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/registerMD5Worker.js.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/webAsyncWebWorkerMD5ComputationStrategy.d.ts +9 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/webAsyncWebWorkerMD5ComputationStrategy.d.ts.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/webAsyncWebWorkerMD5ComputationStrategy.js +62 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/webAsyncWebWorkerMD5ComputationStrategy.js.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/webMD5ComputationStrategyFactory.d.ts +9 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/webMD5ComputationStrategyFactory.d.ts.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/webMD5ComputationStrategyFactory.js +41 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/webMD5ComputationStrategyFactory.js.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/webSyncMD5ComputationStrategy.d.ts +6 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/webSyncMD5ComputationStrategy.d.ts.map +1 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/webSyncMD5ComputationStrategy.js +9 -0
- package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/webSyncMD5ComputationStrategy.js.map +1 -0
- package/dist/src/uploader/md5Provider/precomputedMD5Provider.d.ts +27 -0
- package/dist/src/uploader/md5Provider/precomputedMD5Provider.d.ts.map +1 -0
- package/dist/src/uploader/md5Provider/precomputedMD5Provider.js +189 -0
- package/dist/src/uploader/md5Provider/precomputedMD5Provider.js.map +1 -0
- package/dist/src/uploader/md5Provider/uploaderMD5Provider.d.ts +28 -0
- package/dist/src/uploader/md5Provider/uploaderMD5Provider.d.ts.map +1 -0
- package/dist/src/uploader/md5Provider/uploaderMD5Provider.js +2 -0
- package/dist/src/uploader/md5Provider/uploaderMD5Provider.js.map +1 -0
- package/dist/src/uploader/transferUpload.d.ts +4 -2
- package/dist/src/uploader/transferUpload.d.ts.map +1 -1
- package/dist/src/uploader/transferUpload.js +27 -9
- package/dist/src/uploader/transferUpload.js.map +1 -1
- package/dist/src/utils/api/dtos/sendFileChunkRequest.d.ts +1 -0
- package/dist/src/utils/api/dtos/sendFileChunkRequest.d.ts.map +1 -1
- package/dist/src/utils/api/dtos/sendFileChunkRequest.js.map +1 -1
- package/dist/src/utils/fileSystem/chunkStreamEncryptionData.d.ts +6 -0
- package/dist/src/utils/fileSystem/chunkStreamEncryptionData.d.ts.map +1 -0
- package/dist/src/utils/fileSystem/chunkStreamEncryptionData.js +2 -0
- package/dist/src/utils/fileSystem/chunkStreamEncryptionData.js.map +1 -0
- package/dist/src/utils/fileSystem/chunkStreamProvider.d.ts +0 -5
- package/dist/src/utils/fileSystem/chunkStreamProvider.d.ts.map +1 -1
- package/dist/src/utils/fileSystem/chunkStreamProvider.js.map +1 -1
- package/dist/src/utils/fileSystem/chunkStreamProviderFactory.d.ts +2 -2
- package/dist/src/utils/fileSystem/chunkStreamProviderFactory.d.ts.map +1 -1
- package/dist/src/utils/fileSystem/chunkStreamProviderFactory.js.map +1 -1
- package/dist/src/utils/fileSystem/node/nodeChunkStreamProvider.d.ts +2 -3
- package/dist/src/utils/fileSystem/node/nodeChunkStreamProvider.d.ts.map +1 -1
- package/dist/src/utils/fileSystem/node/nodeChunkStreamProvider.js +9 -28
- package/dist/src/utils/fileSystem/node/nodeChunkStreamProvider.js.map +1 -1
- package/dist/src/utils/fileSystem/node/nodeChunkStreamProviderFactory.d.ts +2 -2
- package/dist/src/utils/fileSystem/node/nodeChunkStreamProviderFactory.d.ts.map +1 -1
- package/dist/src/utils/fileSystem/node/nodeChunkStreamProviderFactory.js +1 -1
- package/dist/src/utils/fileSystem/node/nodeChunkStreamProviderFactory.js.map +1 -1
- package/dist/src/utils/fileSystem/web/chunkStreamProvider/webChunkStreamProvider.d.ts +2 -3
- package/dist/src/utils/fileSystem/web/chunkStreamProvider/webChunkStreamProvider.d.ts.map +1 -1
- package/dist/src/utils/fileSystem/web/chunkStreamProvider/webChunkStreamProvider.js +0 -19
- package/dist/src/utils/fileSystem/web/chunkStreamProvider/webChunkStreamProvider.js.map +1 -1
- package/dist/src/utils/fileSystem/web/webChunkStreamProviderFactory.d.ts +2 -2
- package/dist/src/utils/fileSystem/web/webChunkStreamProviderFactory.d.ts.map +1 -1
- package/dist/src/utils/fileSystem/web/webChunkStreamProviderFactory.js +1 -1
- package/dist/src/utils/fileSystem/web/webChunkStreamProviderFactory.js.map +1 -1
- package/package.json +5 -4
- package/dist/src/uploader/chunkStreamProviderFactory/nodeFileDetailsUploaderChunkStreamProviderFactory.d.ts +0 -9
- package/dist/src/uploader/chunkStreamProviderFactory/nodeFileDetailsUploaderChunkStreamProviderFactory.d.ts.map +0 -1
- package/dist/src/uploader/chunkStreamProviderFactory/nodeFileDetailsUploaderChunkStreamProviderFactory.js.map +0 -1
- package/dist/src/uploader/chunkStreamProviderFactory/webFileDetailsUploaderChunkStreamProviderFactory.d.ts +0 -9
- package/dist/src/uploader/chunkStreamProviderFactory/webFileDetailsUploaderChunkStreamProviderFactory.d.ts.map +0 -1
- package/dist/src/uploader/chunkStreamProviderFactory/webFileDetailsUploaderChunkStreamProviderFactory.js.map +0 -1
package/dist/src/index.web.d.ts
CHANGED
|
@@ -6,6 +6,11 @@ export { default as WebFileServerClientFactory } from "./utils/api/web/webFileSe
|
|
|
6
6
|
export { default as WebEventsEngine } from "./utils/events/web/webEventsEngine.js";
|
|
7
7
|
export { default as WebChunkStreamProvider } from "./utils/fileSystem/web/chunkStreamProvider/webChunkStreamProvider.js";
|
|
8
8
|
export { default as WebFileDetails } from "./utils/fileSystem/web/webFileDetails.js";
|
|
9
|
+
export { default as WebPrecomputedMD5Provider } from "./uploader/md5Provider/precomputedMD5Provider.js";
|
|
10
|
+
export { default as WebAsyncWebWorkerMD5ComputationStrategy } from "./uploader/md5Provider/md5ComputationStrategies/web/webAsyncWebWorkerMD5ComputationStrategy.js";
|
|
11
|
+
export { default as WebFileDetailsUploaderChunkStreamProviderFactory } from "./uploader/chunkStreamProviderFactory/web/webFileDetailsUploaderChunkStreamProviderFactory.js";
|
|
9
12
|
export { default as WebTransferUploader } from "./client/uploader/web/webTransferUploader.js";
|
|
13
|
+
export type { default as WebTransferUploaderConfig } from "./client/uploader/web/webTransferUploaderConfig.js";
|
|
10
14
|
export { default as WebChunkStreamProviderFactory } from "./utils/fileSystem/web/webChunkStreamProviderFactory.js";
|
|
15
|
+
export { default as WebMD5ComputationStrategyFactory } from "./uploader/md5Provider/md5ComputationStrategies/web/webMD5ComputationStrategyFactory.js";
|
|
11
16
|
//# sourceMappingURL=index.web.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.web.d.ts","sourceRoot":"","sources":["../../src/index.web.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAE3B,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,iDAAiD,CAAC;AACvG,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,MAAM,+CAA+C,CAAC;AAEtG,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAEnF,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,sEAAsE,CAAC;AACzH,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAErF,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;
|
|
1
|
+
{"version":3,"file":"index.web.d.ts","sourceRoot":"","sources":["../../src/index.web.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAE3B,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,iDAAiD,CAAC;AACvG,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,MAAM,+CAA+C,CAAC;AAEtG,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAEnF,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,sEAAsE,CAAC;AACzH,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAErF,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,kDAAkD,CAAC;AACxG,OAAO,EAAE,OAAO,IAAI,uCAAuC,EAAE,MAAM,gGAAgG,CAAC;AACpK,OAAO,EAAE,OAAO,IAAI,gDAAgD,EAAE,MAAM,+FAA+F,CAAC;AAE5K,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AAC9F,YAAY,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,oDAAoD,CAAC;AAE/G,OAAO,EAAE,OAAO,IAAI,6BAA6B,EAAE,MAAM,yDAAyD,CAAC;AACnH,OAAO,EAAE,OAAO,IAAI,gCAAgC,EAAE,MAAM,yFAAyF,CAAC"}
|
package/dist/src/index.web.js
CHANGED
|
@@ -6,6 +6,10 @@ export { default as WebFileServerClientFactory } from "./utils/api/web/webFileSe
|
|
|
6
6
|
export { default as WebEventsEngine } from "./utils/events/web/webEventsEngine.js";
|
|
7
7
|
export { default as WebChunkStreamProvider } from "./utils/fileSystem/web/chunkStreamProvider/webChunkStreamProvider.js";
|
|
8
8
|
export { default as WebFileDetails } from "./utils/fileSystem/web/webFileDetails.js";
|
|
9
|
+
export { default as WebPrecomputedMD5Provider } from "./uploader/md5Provider/precomputedMD5Provider.js";
|
|
10
|
+
export { default as WebAsyncWebWorkerMD5ComputationStrategy } from "./uploader/md5Provider/md5ComputationStrategies/web/webAsyncWebWorkerMD5ComputationStrategy.js";
|
|
11
|
+
export { default as WebFileDetailsUploaderChunkStreamProviderFactory } from "./uploader/chunkStreamProviderFactory/web/webFileDetailsUploaderChunkStreamProviderFactory.js";
|
|
9
12
|
export { default as WebTransferUploader } from "./client/uploader/web/webTransferUploader.js";
|
|
10
13
|
export { default as WebChunkStreamProviderFactory } from "./utils/fileSystem/web/webChunkStreamProviderFactory.js";
|
|
14
|
+
export { default as WebMD5ComputationStrategyFactory } from "./uploader/md5Provider/md5ComputationStrategies/web/webMD5ComputationStrategyFactory.js";
|
|
11
15
|
//# sourceMappingURL=index.web.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.web.js","sourceRoot":"","sources":["../../src/index.web.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAE3B,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,iDAAiD,CAAC;AACvG,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,MAAM,+CAA+C,CAAC;AAEtG,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAEnF,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,sEAAsE,CAAC;AACzH,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAErF,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;
|
|
1
|
+
{"version":3,"file":"index.web.js","sourceRoot":"","sources":["../../src/index.web.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAE3B,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,iDAAiD,CAAC;AACvG,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,MAAM,+CAA+C,CAAC;AAEtG,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAEnF,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,sEAAsE,CAAC;AACzH,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAErF,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,kDAAkD,CAAC;AACxG,OAAO,EAAE,OAAO,IAAI,uCAAuC,EAAE,MAAM,gGAAgG,CAAC;AACpK,OAAO,EAAE,OAAO,IAAI,gDAAgD,EAAE,MAAM,+FAA+F,CAAC;AAE5K,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AAG9F,OAAO,EAAE,OAAO,IAAI,6BAA6B,EAAE,MAAM,yDAAyD,CAAC;AACnH,OAAO,EAAE,OAAO,IAAI,gCAAgC,EAAE,MAAM,yFAAyF,CAAC","sourcesContent":["export * from \"./index.js\";\n\nexport { default as WebApiClient } from \"./utils/api/web/webApiClient.js\";\nexport { default as WebClientBase } from \"./utils/api/web/webClientBase.js\";\nexport { default as WebFileServerUploadClient } from \"./uploader/api/web/webFileServerUploadClient.js\";\nexport { default as WebFileServerClientFactory } from \"./utils/api/web/webFileServerClientFactory.js\";\n\nexport { default as WebEventsEngine } from \"./utils/events/web/webEventsEngine.js\";\n\nexport { default as WebChunkStreamProvider } from \"./utils/fileSystem/web/chunkStreamProvider/webChunkStreamProvider.js\";\nexport { default as WebFileDetails } from \"./utils/fileSystem/web/webFileDetails.js\";\n\nexport { default as WebPrecomputedMD5Provider } from \"./uploader/md5Provider/precomputedMD5Provider.js\";\nexport { default as WebAsyncWebWorkerMD5ComputationStrategy } from \"./uploader/md5Provider/md5ComputationStrategies/web/webAsyncWebWorkerMD5ComputationStrategy.js\";\nexport { default as WebFileDetailsUploaderChunkStreamProviderFactory } from \"./uploader/chunkStreamProviderFactory/web/webFileDetailsUploaderChunkStreamProviderFactory.js\";\n\nexport { default as WebTransferUploader } from \"./client/uploader/web/webTransferUploader.js\";\nexport type { default as WebTransferUploaderConfig } from \"./client/uploader/web/webTransferUploaderConfig.js\";\n\nexport { default as WebChunkStreamProviderFactory } from \"./utils/fileSystem/web/webChunkStreamProviderFactory.js\";\nexport { default as WebMD5ComputationStrategyFactory } from \"./uploader/md5Provider/md5ComputationStrategies/web/webMD5ComputationStrategyFactory.js\";"]}
|
|
@@ -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,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;
|
|
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;IAiE/J,OAAO,CAAC,wCAAwC;CAGnD"}
|
|
@@ -63,7 +63,6 @@ export default class NodeFileServerUploadClient extends NodeFileServerClientBase
|
|
|
63
63
|
],
|
|
64
64
|
},
|
|
65
65
|
});
|
|
66
|
-
const md5checksum = await chunkStreamProvider.getMd5Checksum(`base64`, pauseSignal, abortSignal);
|
|
67
66
|
const readableStream = await chunkStreamProvider.getChunkReadStream(pauseSignal, abortSignal);
|
|
68
67
|
const body = Readable.fromWeb(readableStream);
|
|
69
68
|
ongoingRequestPromise = gotChunkInstance.post(this.#uploadUrl, {
|
|
@@ -72,7 +71,7 @@ export default class NodeFileServerUploadClient extends NodeFileServerClientBase
|
|
|
72
71
|
searchParams: {
|
|
73
72
|
chunkpos: request.chunkStartPosition,
|
|
74
73
|
chunksize: request.chunkLengthInBytes,
|
|
75
|
-
md5:
|
|
74
|
+
md5: request.md5,
|
|
76
75
|
},
|
|
77
76
|
});
|
|
78
77
|
ongoingRequestPromise.on(`uploadProgress`, uploadProgressHandler);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodeFileServerUploadClient.js","sourceRoot":"","sources":["../../../../../src/uploader/api/node/nodeFileServerUploadClient.ts"],"names":[],"mappings":"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
|
|
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 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: request.md5,\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 +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,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;
|
|
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;IAmD/J,OAAO,CAAC,uBAAuB;IAmB/B,OAAO,CAAC,wCAAwC;CAGnD"}
|
|
@@ -42,7 +42,6 @@ export default class WebFileServerUploadClient extends WebFileServerClientBase {
|
|
|
42
42
|
let isRequestFinished = false;
|
|
43
43
|
const idleTimeoutManager = new AxiosIdleTimeoutManager(this.#uploadIdleTimeoutInMs, abortSignal);
|
|
44
44
|
try {
|
|
45
|
-
const md5checksum = await chunkStreamProvider.getMd5Checksum(`base64`, pauseSignal, abortSignal);
|
|
46
45
|
const chunkBlob = await chunkStreamProvider.getChunkBlob();
|
|
47
46
|
const idleTimeout = idleTimeoutManager.configureNewIdleTimeout();
|
|
48
47
|
const uploadProgressHandler = this.getDataTransferProgressHandler();
|
|
@@ -61,7 +60,7 @@ export default class WebFileServerUploadClient extends WebFileServerClientBase {
|
|
|
61
60
|
params: {
|
|
62
61
|
chunkpos: request.chunkStartPosition,
|
|
63
62
|
chunksize: request.chunkLengthInBytes,
|
|
64
|
-
md5:
|
|
63
|
+
md5: request.md5,
|
|
65
64
|
},
|
|
66
65
|
});
|
|
67
66
|
}
|
|
@@ -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, 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
|
+
{"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 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: request.md5,\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"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type ChunkStreamProvider from "../../../utils/fileSystem/chunkStreamProvider.js";
|
|
2
|
+
import type UploaderChunkStreamProviderFactory from "../uploaderChunkStreamProviderFactory.js";
|
|
3
|
+
import type NodeFileDetails from "../../../utils/fileSystem/node/nodeFileDetails.js";
|
|
4
|
+
import type ChunkStreamEncryptionData from "../../../utils/fileSystem/chunkStreamEncryptionData.js";
|
|
5
|
+
declare class NodeFileDetailsUploaderChunkStreamProviderFactory implements UploaderChunkStreamProviderFactory<NodeFileDetails> {
|
|
6
|
+
createChunkStreamProvider(chunkDetails: NodeFileDetails, chunkStartPosition: number, chunkSizeInBytes: number, encryptionData: ChunkStreamEncryptionData | undefined): ChunkStreamProvider;
|
|
7
|
+
}
|
|
8
|
+
export default NodeFileDetailsUploaderChunkStreamProviderFactory;
|
|
9
|
+
//# sourceMappingURL=nodeFileDetailsUploaderChunkStreamProviderFactory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodeFileDetailsUploaderChunkStreamProviderFactory.d.ts","sourceRoot":"","sources":["../../../../../src/uploader/chunkStreamProviderFactory/node/nodeFileDetailsUploaderChunkStreamProviderFactory.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,mBAAmB,MAAM,kDAAkD,CAAC;AACxF,OAAO,KAAK,kCAAkC,MAAM,0CAA0C,CAAC;AAC/F,OAAO,KAAK,eAAe,MAAM,mDAAmD,CAAC;AACrF,OAAO,KAAK,yBAAyB,MAAM,wDAAwD,CAAC;AAEpG,cAAM,iDAAkD,YAAW,kCAAkC,CAAC,eAAe,CAAC;IAClH,yBAAyB,CAAC,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,cAAc,EAAE,yBAAyB,GAAG,SAAS,GAAG,mBAAmB;CAG7L;AAED,eAAe,iDAAiD,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import NodeChunkStreamProvider from "
|
|
1
|
+
import NodeChunkStreamProvider from "../../../utils/fileSystem/node/nodeChunkStreamProvider.js";
|
|
2
2
|
class NodeFileDetailsUploaderChunkStreamProviderFactory {
|
|
3
3
|
createChunkStreamProvider(chunkDetails, chunkStartPosition, chunkSizeInBytes, encryptionData) {
|
|
4
4
|
return new NodeChunkStreamProvider(chunkDetails.fileFullPath, chunkStartPosition, chunkSizeInBytes, encryptionData);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodeFileDetailsUploaderChunkStreamProviderFactory.js","sourceRoot":"","sources":["../../../../../src/uploader/chunkStreamProviderFactory/node/nodeFileDetailsUploaderChunkStreamProviderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,uBAAuB,MAAM,2DAA2D,CAAC;AAOhG,MAAM,iDAAiD;IACnD,yBAAyB,CAAC,YAA6B,EAAE,kBAA0B,EAAE,gBAAwB,EAAE,cAAqD;QAChK,OAAO,IAAI,uBAAuB,CAAC,YAAY,CAAC,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,cAAc,CAAC,CAAC;IACxH,CAAC;CACJ;AAED,eAAe,iDAAiD,CAAC","sourcesContent":["import NodeChunkStreamProvider from \"../../../utils/fileSystem/node/nodeChunkStreamProvider.js\";\n\nimport type ChunkStreamProvider from \"../../../utils/fileSystem/chunkStreamProvider.js\";\nimport type UploaderChunkStreamProviderFactory from \"../uploaderChunkStreamProviderFactory.js\";\nimport type NodeFileDetails from \"../../../utils/fileSystem/node/nodeFileDetails.js\";\nimport type ChunkStreamEncryptionData from \"../../../utils/fileSystem/chunkStreamEncryptionData.js\";\n\nclass NodeFileDetailsUploaderChunkStreamProviderFactory implements UploaderChunkStreamProviderFactory<NodeFileDetails> {\n createChunkStreamProvider(chunkDetails: NodeFileDetails, chunkStartPosition: number, chunkSizeInBytes: number, encryptionData: ChunkStreamEncryptionData | undefined): ChunkStreamProvider {\n return new NodeChunkStreamProvider(chunkDetails.fileFullPath, chunkStartPosition, chunkSizeInBytes, encryptionData);\n }\n}\n\nexport default NodeFileDetailsUploaderChunkStreamProviderFactory;"]}
|
package/dist/src/uploader/chunkStreamProviderFactory/uploaderChunkStreamProviderFactory.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import type ChunkStreamEncryptionData from "../../utils/fileSystem/chunkStreamEncryptionData.js";
|
|
1
2
|
import type ChunkStreamProvider from "../../utils/fileSystem/chunkStreamProvider.js";
|
|
2
|
-
import type { ChunkStreamProviderEncryptionData } from "../../utils/fileSystem/chunkStreamProvider.js";
|
|
3
3
|
interface UploaderChunkStreamProviderFactory<T> {
|
|
4
|
-
createChunkStreamProvider(fileDetails: T, chunkStartPosition: number, chunkSizeInBytes: number, encryptionData:
|
|
4
|
+
createChunkStreamProvider(fileDetails: T, chunkStartPosition: number, chunkSizeInBytes: number, encryptionData: ChunkStreamEncryptionData | undefined): ChunkStreamProvider;
|
|
5
5
|
}
|
|
6
6
|
export default UploaderChunkStreamProviderFactory;
|
|
7
7
|
//# sourceMappingURL=uploaderChunkStreamProviderFactory.d.ts.map
|
package/dist/src/uploader/chunkStreamProviderFactory/uploaderChunkStreamProviderFactory.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uploaderChunkStreamProviderFactory.d.ts","sourceRoot":"","sources":["../../../../src/uploader/chunkStreamProviderFactory/uploaderChunkStreamProviderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"uploaderChunkStreamProviderFactory.d.ts","sourceRoot":"","sources":["../../../../src/uploader/chunkStreamProviderFactory/uploaderChunkStreamProviderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,yBAAyB,MAAM,qDAAqD,CAAC;AACjG,OAAO,KAAK,mBAAmB,MAAM,+CAA+C,CAAC;AAErF,UAAU,kCAAkC,CAAC,CAAC;IAC1C,yBAAyB,CAAC,WAAW,EAAE,CAAC,EAAE,kBAAkB,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,cAAc,EAAE,yBAAyB,GAAG,SAAS,GAAG,mBAAmB,CAAC;CAC/K;AAED,eAAe,kCAAkC,CAAC"}
|
package/dist/src/uploader/chunkStreamProviderFactory/uploaderChunkStreamProviderFactory.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uploaderChunkStreamProviderFactory.js","sourceRoot":"","sources":["../../../../src/uploader/chunkStreamProviderFactory/uploaderChunkStreamProviderFactory.ts"],"names":[],"mappings":"","sourcesContent":["import type
|
|
1
|
+
{"version":3,"file":"uploaderChunkStreamProviderFactory.js","sourceRoot":"","sources":["../../../../src/uploader/chunkStreamProviderFactory/uploaderChunkStreamProviderFactory.ts"],"names":[],"mappings":"","sourcesContent":["import type ChunkStreamEncryptionData from \"../../utils/fileSystem/chunkStreamEncryptionData.js\";\nimport type ChunkStreamProvider from \"../../utils/fileSystem/chunkStreamProvider.js\";\n\ninterface UploaderChunkStreamProviderFactory<T> {\n createChunkStreamProvider(fileDetails: T, chunkStartPosition: number, chunkSizeInBytes: number, encryptionData: ChunkStreamEncryptionData | undefined): ChunkStreamProvider;\n}\n\nexport default UploaderChunkStreamProviderFactory;"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type ChunkStreamProvider from "../../../utils/fileSystem/chunkStreamProvider.js";
|
|
2
|
+
import type UploaderChunkStreamProviderFactory from "../uploaderChunkStreamProviderFactory.js";
|
|
3
|
+
import type WebFileDetails from "../../../utils/fileSystem/web/webFileDetails.js";
|
|
4
|
+
import type ChunkStreamEncryptionData from "../../../utils/fileSystem/chunkStreamEncryptionData.js";
|
|
5
|
+
declare class WebFileDetailsUploaderChunkStreamProviderFactory implements UploaderChunkStreamProviderFactory<WebFileDetails> {
|
|
6
|
+
createChunkStreamProvider(chunkDetails: WebFileDetails, chunkStartPosition: number, chunkSizeInBytes: number, encryptionData: ChunkStreamEncryptionData | undefined): ChunkStreamProvider;
|
|
7
|
+
}
|
|
8
|
+
export default WebFileDetailsUploaderChunkStreamProviderFactory;
|
|
9
|
+
//# sourceMappingURL=webFileDetailsUploaderChunkStreamProviderFactory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webFileDetailsUploaderChunkStreamProviderFactory.d.ts","sourceRoot":"","sources":["../../../../../src/uploader/chunkStreamProviderFactory/web/webFileDetailsUploaderChunkStreamProviderFactory.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,mBAAmB,MAAM,kDAAkD,CAAC;AACxF,OAAO,KAAK,kCAAkC,MAAM,0CAA0C,CAAC;AAC/F,OAAO,KAAK,cAAc,MAAM,iDAAiD,CAAC;AAClF,OAAO,KAAK,yBAAyB,MAAM,wDAAwD,CAAC;AAEpG,cAAM,gDAAiD,YAAW,kCAAkC,CAAC,cAAc,CAAC;IAChH,yBAAyB,CAAC,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,cAAc,EAAE,yBAAyB,GAAG,SAAS,GAAG,mBAAmB;CAG5L;AAED,eAAe,gDAAgD,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import WebChunkStreamProvider from "
|
|
1
|
+
import WebChunkStreamProvider from "../../../utils/fileSystem/web/chunkStreamProvider/webChunkStreamProvider.js";
|
|
2
2
|
class WebFileDetailsUploaderChunkStreamProviderFactory {
|
|
3
3
|
createChunkStreamProvider(chunkDetails, chunkStartPosition, chunkSizeInBytes, encryptionData) {
|
|
4
4
|
return new WebChunkStreamProvider(chunkDetails.file, chunkStartPosition, chunkSizeInBytes, encryptionData);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webFileDetailsUploaderChunkStreamProviderFactory.js","sourceRoot":"","sources":["../../../../../src/uploader/chunkStreamProviderFactory/web/webFileDetailsUploaderChunkStreamProviderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,MAAM,6EAA6E,CAAC;AAOjH,MAAM,gDAAgD;IAClD,yBAAyB,CAAC,YAA4B,EAAE,kBAA0B,EAAE,gBAAwB,EAAE,cAAqD;QAC/J,OAAO,IAAI,sBAAsB,CAAC,YAAY,CAAC,IAAI,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,cAAc,CAAC,CAAC;IAC/G,CAAC;CACJ;AAED,eAAe,gDAAgD,CAAC","sourcesContent":["import WebChunkStreamProvider from \"../../../utils/fileSystem/web/chunkStreamProvider/webChunkStreamProvider.js\";\n\nimport type ChunkStreamProvider from \"../../../utils/fileSystem/chunkStreamProvider.js\";\nimport type UploaderChunkStreamProviderFactory from \"../uploaderChunkStreamProviderFactory.js\";\nimport type WebFileDetails from \"../../../utils/fileSystem/web/webFileDetails.js\";\nimport type ChunkStreamEncryptionData from \"../../../utils/fileSystem/chunkStreamEncryptionData.js\";\n\nclass WebFileDetailsUploaderChunkStreamProviderFactory implements UploaderChunkStreamProviderFactory<WebFileDetails> {\n createChunkStreamProvider(chunkDetails: WebFileDetails, chunkStartPosition: number, chunkSizeInBytes: number, encryptionData: ChunkStreamEncryptionData | undefined): ChunkStreamProvider {\n return new WebChunkStreamProvider(chunkDetails.file, chunkStartPosition, chunkSizeInBytes, encryptionData);\n }\n}\n\nexport default WebFileDetailsUploaderChunkStreamProviderFactory;"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type FileDetails from "../utils/fileSystem/fileDetails.js";
|
|
2
|
+
import type { ContinuousChunk } from "./state/continuousChunksCalculator.js";
|
|
3
|
+
type FileChunksPlan<T extends FileDetails> = {
|
|
4
|
+
file: Readonly<T>;
|
|
5
|
+
createChunksIterator: () => IterableIterator<ContinuousChunk>;
|
|
6
|
+
};
|
|
7
|
+
export default FileChunksPlan;
|
|
8
|
+
//# sourceMappingURL=fileChunksPlan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fileChunksPlan.d.ts","sourceRoot":"","sources":["../../../src/uploader/fileChunksPlan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,oCAAoC,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAE7E,KAAK,cAAc,CAAC,CAAC,SAAS,WAAW,IAAI;IACzC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAClB,oBAAoB,EAAE,MAAM,gBAAgB,CAAC,eAAe,CAAC,CAAC;CACjE,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fileChunksPlan.js","sourceRoot":"","sources":["../../../src/uploader/fileChunksPlan.ts"],"names":[],"mappings":"","sourcesContent":["import type FileDetails from \"../utils/fileSystem/fileDetails.js\";\nimport type { ContinuousChunk } from \"./state/continuousChunksCalculator.js\";\n\ntype FileChunksPlan<T extends FileDetails> = {\n file: Readonly<T>;\n createChunksIterator: () => IterableIterator<ContinuousChunk>;\n};\n\nexport default FileChunksPlan;"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type MD5ComputationStrategy from "./md5ComputationStrategy.js";
|
|
2
|
+
import type MD5ComputationStrategyFactory from "./md5ComputationStrategyFactory.js";
|
|
3
|
+
import type MD5ComputationSession from "./md5ComputationSession.js";
|
|
4
|
+
/** For strategies that do not require resources scoped to a precomputation run. */
|
|
5
|
+
export default class DefaultMD5ComputationStrategyFactory implements MD5ComputationStrategyFactory {
|
|
6
|
+
#private;
|
|
7
|
+
constructor(strategy: MD5ComputationStrategy);
|
|
8
|
+
createSession(abortSignal?: AbortSignal): Promise<MD5ComputationSession>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=defaultMD5ComputationStrategyFactory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaultMD5ComputationStrategyFactory.d.ts","sourceRoot":"","sources":["../../../../../src/uploader/md5Provider/md5ComputationStrategies/defaultMD5ComputationStrategyFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,sBAAsB,MAAM,6BAA6B,CAAC;AACtE,OAAO,KAAK,6BAA6B,MAAM,oCAAoC,CAAC;AACpF,OAAO,KAAK,qBAAqB,MAAM,4BAA4B,CAAC;AAEpE,mFAAmF;AACnF,MAAM,CAAC,OAAO,OAAO,oCAAqC,YAAW,6BAA6B;;gBAGlF,QAAQ,EAAE,sBAAsB;IAItC,aAAa,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,qBAAqB,CAAC;CAIjF"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** For strategies that do not require resources scoped to a precomputation run. */
|
|
2
|
+
export default class DefaultMD5ComputationStrategyFactory {
|
|
3
|
+
#strategy;
|
|
4
|
+
constructor(strategy) {
|
|
5
|
+
this.#strategy = strategy;
|
|
6
|
+
}
|
|
7
|
+
async createSession(abortSignal) {
|
|
8
|
+
abortSignal?.throwIfAborted();
|
|
9
|
+
return { strategy: this.#strategy, dispose: () => { } };
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=defaultMD5ComputationStrategyFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaultMD5ComputationStrategyFactory.js","sourceRoot":"","sources":["../../../../../src/uploader/md5Provider/md5ComputationStrategies/defaultMD5ComputationStrategyFactory.ts"],"names":[],"mappings":"AAIA,mFAAmF;AACnF,MAAM,CAAC,OAAO,OAAO,oCAAoC;IAC5C,SAAS,CAAyB;IAE3C,YAAY,QAAgC;QACxC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,WAAyB;QACzC,WAAW,EAAE,cAAc,EAAE,CAAC;QAC9B,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,GAAkC,CAAC,EAAE,CAAC;IAC3F,CAAC;CACJ","sourcesContent":["import type MD5ComputationStrategy from \"./md5ComputationStrategy.js\";\nimport type MD5ComputationStrategyFactory from \"./md5ComputationStrategyFactory.js\";\nimport type MD5ComputationSession from \"./md5ComputationSession.js\";\n\n/** For strategies that do not require resources scoped to a precomputation run. */\nexport default class DefaultMD5ComputationStrategyFactory implements MD5ComputationStrategyFactory {\n readonly #strategy: MD5ComputationStrategy;\n\n constructor(strategy: MD5ComputationStrategy) {\n this.#strategy = strategy;\n }\n\n async createSession(abortSignal?: AbortSignal): Promise<MD5ComputationSession> {\n abortSignal?.throwIfAborted();\n return { strategy: this.#strategy, dispose: () => { /* No resources to release. */ } };\n }\n}"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"md5ComputationSession.d.ts","sourceRoot":"","sources":["../../../../../src/uploader/md5Provider/md5ComputationStrategies/md5ComputationSession.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,sBAAsB,MAAM,6BAA6B,CAAC;AAEtE,UAAU,qBAAqB;IAC3B,QAAQ,EAAE,sBAAsB,CAAC;IACjC,OAAO,IAAI,IAAI,CAAC;CACnB;AAED,eAAe,qBAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"md5ComputationSession.js","sourceRoot":"","sources":["../../../../../src/uploader/md5Provider/md5ComputationStrategies/md5ComputationSession.ts"],"names":[],"mappings":"","sourcesContent":["import type MD5ComputationStrategy from \"./md5ComputationStrategy.js\";\n\ninterface MD5ComputationSession {\n strategy: MD5ComputationStrategy;\n dispose(): void;\n}\n\nexport default MD5ComputationSession;"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type ChunkStreamProvider from "../../../utils/fileSystem/chunkStreamProvider.js";
|
|
2
|
+
interface MD5ComputationStrategy {
|
|
3
|
+
computeMD5(chunkStreamProvider: ChunkStreamProvider, format: string, abortSignal?: AbortSignal): Promise<string>;
|
|
4
|
+
}
|
|
5
|
+
export default MD5ComputationStrategy;
|
|
6
|
+
//# sourceMappingURL=md5ComputationStrategy.d.ts.map
|
package/dist/src/uploader/md5Provider/md5ComputationStrategies/md5ComputationStrategy.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"md5ComputationStrategy.d.ts","sourceRoot":"","sources":["../../../../../src/uploader/md5Provider/md5ComputationStrategies/md5ComputationStrategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,mBAAmB,MAAM,kDAAkD,CAAC;AAExF,UAAU,sBAAsB;IAC5B,UAAU,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;CACnH;AAED,eAAe,sBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"md5ComputationStrategy.js","sourceRoot":"","sources":["../../../../../src/uploader/md5Provider/md5ComputationStrategies/md5ComputationStrategy.ts"],"names":[],"mappings":"","sourcesContent":["import type ChunkStreamProvider from \"../../../utils/fileSystem/chunkStreamProvider.js\";\n\ninterface MD5ComputationStrategy {\n computeMD5(chunkStreamProvider: ChunkStreamProvider, format: string, abortSignal?: AbortSignal): Promise<string>\n}\n\nexport default MD5ComputationStrategy;"]}
|
package/dist/src/uploader/md5Provider/md5ComputationStrategies/md5ComputationStrategyFactory.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type MD5ComputationSession from "./md5ComputationSession.js";
|
|
2
|
+
interface MD5ComputationStrategyFactory {
|
|
3
|
+
createSession(abortSignal?: AbortSignal): Promise<MD5ComputationSession>;
|
|
4
|
+
}
|
|
5
|
+
export default MD5ComputationStrategyFactory;
|
|
6
|
+
//# sourceMappingURL=md5ComputationStrategyFactory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"md5ComputationStrategyFactory.d.ts","sourceRoot":"","sources":["../../../../../src/uploader/md5Provider/md5ComputationStrategies/md5ComputationStrategyFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,qBAAqB,MAAM,4BAA4B,CAAC;AAEpE,UAAU,6BAA6B;IACnC,aAAa,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;CAC5E;AAED,eAAe,6BAA6B,CAAC"}
|
package/dist/src/uploader/md5Provider/md5ComputationStrategies/md5ComputationStrategyFactory.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"md5ComputationStrategyFactory.js","sourceRoot":"","sources":["../../../../../src/uploader/md5Provider/md5ComputationStrategies/md5ComputationStrategyFactory.ts"],"names":[],"mappings":"","sourcesContent":["import type MD5ComputationSession from \"./md5ComputationSession.js\";\n\ninterface MD5ComputationStrategyFactory {\n createSession(abortSignal?: AbortSignal): Promise<MD5ComputationSession>;\n}\n\nexport default MD5ComputationStrategyFactory;"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type MD5ComputationStrategy from "../md5ComputationStrategy.js";
|
|
2
|
+
import type ChunkStreamProvider from "../../../../utils/fileSystem/chunkStreamProvider.js";
|
|
3
|
+
export default class NodeAsyncMD5ComputationStrategy implements MD5ComputationStrategy {
|
|
4
|
+
computeMD5(chunkStreamProvider: ChunkStreamProvider, format: string, abortSignal?: AbortSignal): Promise<string>;
|
|
5
|
+
private computeMd5ChecksumForChunk;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=nodeAsyncMD5ComputationStrategy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodeAsyncMD5ComputationStrategy.d.ts","sourceRoot":"","sources":["../../../../../../src/uploader/md5Provider/md5ComputationStrategies/node/nodeAsyncMD5ComputationStrategy.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,sBAAsB,MAAM,8BAA8B,CAAC;AACvE,OAAO,KAAK,mBAAmB,MAAM,qDAAqD,CAAC;AAE3F,MAAM,CAAC,OAAO,OAAO,+BAAgC,YAAW,sBAAsB;IAC5E,UAAU,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;YAMxG,0BAA0B;CAO3C"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import crypto from "crypto";
|
|
2
|
+
import { pipeline } from "stream/promises";
|
|
3
|
+
export default class NodeAsyncMD5ComputationStrategy {
|
|
4
|
+
async computeMD5(chunkStreamProvider, format, abortSignal) {
|
|
5
|
+
const fileStream = await chunkStreamProvider.getChunkReadStream(undefined, abortSignal);
|
|
6
|
+
return await this.computeMd5ChecksumForChunk(fileStream, format);
|
|
7
|
+
}
|
|
8
|
+
async computeMd5ChecksumForChunk(fileStream, format) {
|
|
9
|
+
const hash = crypto.createHash(`md5`);
|
|
10
|
+
await pipeline(fileStream, hash);
|
|
11
|
+
return hash.digest(format);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=nodeAsyncMD5ComputationStrategy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodeAsyncMD5ComputationStrategy.js","sourceRoot":"","sources":["../../../../../../src/uploader/md5Provider/md5ComputationStrategies/node/nodeAsyncMD5ComputationStrategy.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAO3C,MAAM,CAAC,OAAO,OAAO,+BAA+B;IAChD,KAAK,CAAC,UAAU,CAAC,mBAAwC,EAAE,MAAc,EAAE,WAAyB;QAChG,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC,kBAAkB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAExF,OAAO,MAAM,IAAI,CAAC,0BAA0B,CAAC,UAA4B,EAAE,MAA8B,CAAC,CAAC;IAC/G,CAAC;IAEO,KAAK,CAAC,0BAA0B,CAAC,UAA0B,EAAE,MAA4B;QAC7F,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAEtC,MAAM,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAEjC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;CACJ","sourcesContent":["import crypto from \"crypto\";\nimport { pipeline } from \"stream/promises\";\nimport { ReadableStream } from \"node:stream/web\";\nimport { BinaryToTextEncoding } from \"node:crypto\";\n\nimport type MD5ComputationStrategy from \"../md5ComputationStrategy.js\";\nimport type ChunkStreamProvider from \"../../../../utils/fileSystem/chunkStreamProvider.js\";\n\nexport default class NodeAsyncMD5ComputationStrategy implements MD5ComputationStrategy {\n async computeMD5(chunkStreamProvider: ChunkStreamProvider, format: string, abortSignal?: AbortSignal): Promise<string> {\n const fileStream = await chunkStreamProvider.getChunkReadStream(undefined, abortSignal);\n\n return await this.computeMd5ChecksumForChunk(fileStream as ReadableStream, format as BinaryToTextEncoding);\n }\n\n private async computeMd5ChecksumForChunk(fileStream: ReadableStream, format: BinaryToTextEncoding): Promise<string> {\n const hash = crypto.createHash(`md5`);\n\n await pipeline(fileStream, hash);\n\n return hash.digest(format);\n }\n}"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"computeBlobMD5.d.ts","sourceRoot":"","sources":["../../../../../../src/uploader/md5Provider/md5ComputationStrategies/web/computeBlobMD5.ts"],"names":[],"mappings":"AAKA,wBAA8B,cAAc,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQ7F"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import SparkMD5 from "spark-md5";
|
|
2
|
+
import { createMD5 } from "hash-wasm";
|
|
3
|
+
let wasmHasherPromise;
|
|
4
|
+
export default async function computeBlobMD5(chunkBlob, format) {
|
|
5
|
+
const buffer = await chunkBlob.arrayBuffer();
|
|
6
|
+
const hashHex = await computeMD5(buffer);
|
|
7
|
+
if (format === `hex`)
|
|
8
|
+
return hashHex;
|
|
9
|
+
return btoa(hashHex.match(/\w{2}/g).map(byte => String.fromCharCode(parseInt(byte, 16))).join(``));
|
|
10
|
+
}
|
|
11
|
+
async function computeMD5(buffer) {
|
|
12
|
+
try {
|
|
13
|
+
// Share initialization across concurrent reads, once per main thread or worker.
|
|
14
|
+
wasmHasherPromise ??= createMD5();
|
|
15
|
+
const hasher = await wasmHasherPromise;
|
|
16
|
+
if (hasher) {
|
|
17
|
+
hasher.init();
|
|
18
|
+
hasher.update(new Uint8Array(buffer));
|
|
19
|
+
return hasher.digest(`hex`);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
wasmHasherPromise = Promise.resolve(undefined);
|
|
24
|
+
}
|
|
25
|
+
return SparkMD5.ArrayBuffer.hash(buffer);
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=computeBlobMD5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"computeBlobMD5.js","sourceRoot":"","sources":["../../../../../../src/uploader/md5Provider/md5ComputationStrategies/web/computeBlobMD5.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAgB,MAAM,WAAW,CAAC;AAEpD,IAAI,iBAA2D,CAAC;AAEhE,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,cAAc,CAAC,SAAe,EAAE,MAAc;IACxE,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,WAAW,EAAE,CAAC;IAC7C,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;IAEzC,IAAI,MAAM,KAAK,KAAK;QAChB,OAAO,OAAO,CAAC;IAEnB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AACxG,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,MAAmB;IACzC,IAAI,CAAC;QACD,gFAAgF;QAChF,iBAAiB,KAAK,SAAS,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC;QAEvC,IAAI,MAAM,EAAE,CAAC;YACT,MAAM,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;YACtC,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACL,CAAC;IACD,MAAM,CAAC;QACH,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7C,CAAC","sourcesContent":["import SparkMD5 from \"spark-md5\";\nimport { createMD5, type IHasher } from \"hash-wasm\";\n\nlet wasmHasherPromise: Promise<IHasher | undefined> | undefined;\n\nexport default async function computeBlobMD5(chunkBlob: Blob, format: string): Promise<string> {\n const buffer = await chunkBlob.arrayBuffer();\n const hashHex = await computeMD5(buffer);\n\n if (format === `hex`)\n return hashHex;\n\n return btoa(hashHex.match(/\\w{2}/g)!.map(byte => String.fromCharCode(parseInt(byte, 16))).join(``));\n}\n\nasync function computeMD5(buffer: ArrayBuffer): Promise<string> {\n try {\n // Share initialization across concurrent reads, once per main thread or worker.\n wasmHasherPromise ??= createMD5();\n const hasher = await wasmHasherPromise;\n\n if (hasher) {\n hasher.init();\n hasher.update(new Uint8Array(buffer));\n return hasher.digest(`hex`);\n }\n }\n catch {\n wasmHasherPromise = Promise.resolve(undefined);\n }\n\n return SparkMD5.ArrayBuffer.hash(buffer);\n}"]}
|
package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5.worker.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"md5.worker.d.ts","sourceRoot":"","sources":["../../../../../../../src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5.worker.ts"],"names":[],"mappings":""}
|
package/dist/src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5.worker.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"md5.worker.js","sourceRoot":"","sources":["../../../../../../../src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5.worker.ts"],"names":[],"mappings":"AAAA,OAAO,iBAA0C,MAAM,wBAAwB,CAAC;AAIhF,uEAAuE;AACvE,iBAAiB,CAAC,UAAuC,CAAC,CAAC;AAE3D,UAAU,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,WAAW,EAA2B,CAAC,CAAC","sourcesContent":["import registerMD5Worker, { type MD5WorkerScope } from \"./registerMD5Worker.js\";\n\nimport type { MD5WorkerReady } from \"./md5WorkerMessages.js\";\n\n// This only calls the proper worker for easier worker testability sake\nregisterMD5Worker(globalThis as unknown as MD5WorkerScope);\n\nglobalThis.postMessage({ type: `md5-ready` } satisfies MD5WorkerReady);"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { MD5ComputationResult } from "../../../uploaderMD5Provider.js";
|
|
2
|
+
export type MD5WorkerRequest = {
|
|
3
|
+
workId: string;
|
|
4
|
+
chunkBlob: Blob;
|
|
5
|
+
format: string;
|
|
6
|
+
};
|
|
7
|
+
export type MD5WorkerResponse = {
|
|
8
|
+
workId: string;
|
|
9
|
+
result: MD5ComputationResult;
|
|
10
|
+
};
|
|
11
|
+
export type MD5WorkerReady = {
|
|
12
|
+
type: `md5-ready`;
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=md5WorkerMessages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"md5WorkerMessages.d.ts","sourceRoot":"","sources":["../../../../../../../src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5WorkerMessages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAE5E,MAAM,MAAM,gBAAgB,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,oBAAoB,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IACzB,IAAI,EAAE,WAAW,CAAC;CACrB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"md5WorkerMessages.js","sourceRoot":"","sources":["../../../../../../../src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5WorkerMessages.ts"],"names":[],"mappings":"","sourcesContent":["import type { MD5ComputationResult } from \"../../../uploaderMD5Provider.js\";\n\nexport type MD5WorkerRequest = {\n workId: string;\n chunkBlob: Blob;\n format: string;\n};\n\nexport type MD5WorkerResponse = {\n workId: string;\n result: MD5ComputationResult;\n};\n\nexport type MD5WorkerReady = {\n type: `md5-ready`;\n};"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export default class MD5WebWorkersManager {
|
|
2
|
+
#private;
|
|
3
|
+
constructor(createWorker: () => Worker);
|
|
4
|
+
hasAvailableWorkers(): boolean;
|
|
5
|
+
getWorker(): Worker;
|
|
6
|
+
createWorkers(workersCount: number, abortSignal?: AbortSignal): Promise<void>;
|
|
7
|
+
private createWorker;
|
|
8
|
+
private addWorkerFailureListeners;
|
|
9
|
+
private workerErrorHandler;
|
|
10
|
+
private workerMessageErrorHandler;
|
|
11
|
+
private removeWorkerFailureListeners;
|
|
12
|
+
private workerFailureCleanup;
|
|
13
|
+
private deleteWorker;
|
|
14
|
+
private waitUntilWorkerReady;
|
|
15
|
+
dispose(): void;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=md5WorkersManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"md5WorkersManager.d.ts","sourceRoot":"","sources":["../../../../../../../src/uploader/md5Provider/md5ComputationStrategies/web/md5WebWorker/md5WorkersManager.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,OAAO,OAAO,oBAAoB;;gBAOzB,YAAY,EAAE,MAAM,MAAM;IAOtC,mBAAmB,IAAI,OAAO;IAI9B,SAAS,IAAI,MAAM;IAWb,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;YASrE,YAAY;IAkB1B,OAAO,CAAC,yBAAyB;IAKjC,OAAO,CAAC,kBAAkB,CAExB;IAEF,OAAO,CAAC,yBAAyB,CAE/B;IAEF,OAAO,CAAC,4BAA4B;IAKpC,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,YAAY;IAmBpB,OAAO,CAAC,oBAAoB;IAuC5B,OAAO;CASV"}
|