@milaboratories/pl-drivers 1.11.58 → 1.11.60
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/_virtual/_rolldown/runtime.cjs +29 -0
- package/dist/clients/constructors.cjs +28 -28
- package/dist/clients/constructors.cjs.map +1 -1
- package/dist/clients/constructors.d.ts +17 -13
- package/dist/clients/constructors.js +28 -26
- package/dist/clients/constructors.js.map +1 -1
- package/dist/clients/crc32c.cjs +8 -13
- package/dist/clients/crc32c.cjs.map +1 -1
- package/dist/clients/crc32c.js +8 -12
- package/dist/clients/crc32c.js.map +1 -1
- package/dist/clients/download.cjs +119 -160
- package/dist/clients/download.cjs.map +1 -1
- package/dist/clients/download.d.ts +45 -41
- package/dist/clients/download.js +115 -137
- package/dist/clients/download.js.map +1 -1
- package/dist/clients/logs.cjs +78 -82
- package/dist/clients/logs.cjs.map +1 -1
- package/dist/clients/logs.d.ts +34 -24
- package/dist/clients/logs.js +77 -80
- package/dist/clients/logs.js.map +1 -1
- package/dist/clients/ls_api.cjs +62 -68
- package/dist/clients/ls_api.cjs.map +1 -1
- package/dist/clients/ls_api.d.ts +15 -11
- package/dist/clients/ls_api.js +61 -66
- package/dist/clients/ls_api.js.map +1 -1
- package/dist/clients/progress.cjs +49 -59
- package/dist/clients/progress.cjs.map +1 -1
- package/dist/clients/progress.d.ts +27 -20
- package/dist/clients/progress.js +48 -57
- package/dist/clients/progress.js.map +1 -1
- package/dist/clients/upload.cjs +189 -250
- package/dist/clients/upload.cjs.map +1 -1
- package/dist/clients/upload.d.ts +44 -34
- package/dist/clients/upload.js +187 -229
- package/dist/clients/upload.js.map +1 -1
- package/dist/drivers/download_blob/blob_key.cjs +9 -26
- package/dist/drivers/download_blob/blob_key.cjs.map +1 -1
- package/dist/drivers/download_blob/blob_key.js +7 -5
- package/dist/drivers/download_blob/blob_key.js.map +1 -1
- package/dist/drivers/download_blob/download_blob.cjs +395 -478
- package/dist/drivers/download_blob/download_blob.cjs.map +1 -1
- package/dist/drivers/download_blob/download_blob.d.ts +102 -100
- package/dist/drivers/download_blob/download_blob.js +388 -453
- package/dist/drivers/download_blob/download_blob.js.map +1 -1
- package/dist/drivers/download_blob/download_blob_task.cjs +128 -163
- package/dist/drivers/download_blob/download_blob_task.cjs.map +1 -1
- package/dist/drivers/download_blob/download_blob_task.js +125 -141
- package/dist/drivers/download_blob/download_blob_task.js.map +1 -1
- package/dist/drivers/download_blob/sparse_cache/cache.cjs +166 -195
- package/dist/drivers/download_blob/sparse_cache/cache.cjs.map +1 -1
- package/dist/drivers/download_blob/sparse_cache/cache.js +164 -193
- package/dist/drivers/download_blob/sparse_cache/cache.js.map +1 -1
- package/dist/drivers/download_blob/sparse_cache/file.cjs +29 -50
- package/dist/drivers/download_blob/sparse_cache/file.cjs.map +1 -1
- package/dist/drivers/download_blob/sparse_cache/file.js +28 -29
- package/dist/drivers/download_blob/sparse_cache/file.js.map +1 -1
- package/dist/drivers/download_blob/sparse_cache/ranges.cjs +48 -76
- package/dist/drivers/download_blob/sparse_cache/ranges.cjs.map +1 -1
- package/dist/drivers/download_blob/sparse_cache/ranges.js +47 -54
- package/dist/drivers/download_blob/sparse_cache/ranges.js.map +1 -1
- package/dist/drivers/download_blob_url/driver.cjs +125 -165
- package/dist/drivers/download_blob_url/driver.cjs.map +1 -1
- package/dist/drivers/download_blob_url/driver.d.ts +45 -42
- package/dist/drivers/download_blob_url/driver.js +123 -144
- package/dist/drivers/download_blob_url/driver.js.map +1 -1
- package/dist/drivers/download_blob_url/driver_id.cjs +4 -4
- package/dist/drivers/download_blob_url/driver_id.cjs.map +1 -1
- package/dist/drivers/download_blob_url/driver_id.js +4 -3
- package/dist/drivers/download_blob_url/driver_id.js.map +1 -1
- package/dist/drivers/download_blob_url/snapshot.cjs +7 -11
- package/dist/drivers/download_blob_url/snapshot.cjs.map +1 -1
- package/dist/drivers/download_blob_url/snapshot.d.ts +10 -5
- package/dist/drivers/download_blob_url/snapshot.js +5 -8
- package/dist/drivers/download_blob_url/snapshot.js.map +1 -1
- package/dist/drivers/download_blob_url/task.cjs +147 -194
- package/dist/drivers/download_blob_url/task.cjs.map +1 -1
- package/dist/drivers/download_blob_url/task.d.ts +55 -57
- package/dist/drivers/download_blob_url/task.js +140 -170
- package/dist/drivers/download_blob_url/task.js.map +1 -1
- package/dist/drivers/download_url/driver.cjs +109 -146
- package/dist/drivers/download_url/driver.cjs.map +1 -1
- package/dist/drivers/download_url/driver.d.ts +59 -57
- package/dist/drivers/download_url/driver.js +107 -125
- package/dist/drivers/download_url/driver.js.map +1 -1
- package/dist/drivers/download_url/task.cjs +104 -137
- package/dist/drivers/download_url/task.cjs.map +1 -1
- package/dist/drivers/download_url/task.d.ts +33 -37
- package/dist/drivers/download_url/task.js +99 -113
- package/dist/drivers/download_url/task.js.map +1 -1
- package/dist/drivers/helpers/download_local_handle.cjs +13 -14
- package/dist/drivers/helpers/download_local_handle.cjs.map +1 -1
- package/dist/drivers/helpers/download_local_handle.js +13 -13
- package/dist/drivers/helpers/download_local_handle.js.map +1 -1
- package/dist/drivers/helpers/download_remote_handle.cjs +23 -24
- package/dist/drivers/helpers/download_remote_handle.cjs.map +1 -1
- package/dist/drivers/helpers/download_remote_handle.js +22 -22
- package/dist/drivers/helpers/download_remote_handle.js.map +1 -1
- package/dist/drivers/helpers/files_cache.cjs +53 -64
- package/dist/drivers/helpers/files_cache.cjs.map +1 -1
- package/dist/drivers/helpers/files_cache.js +52 -62
- package/dist/drivers/helpers/files_cache.js.map +1 -1
- package/dist/drivers/helpers/helpers.cjs +24 -28
- package/dist/drivers/helpers/helpers.cjs.map +1 -1
- package/dist/drivers/helpers/helpers.d.ts +10 -7
- package/dist/drivers/helpers/helpers.js +24 -27
- package/dist/drivers/helpers/helpers.js.map +1 -1
- package/dist/drivers/helpers/logs_handle.cjs +24 -33
- package/dist/drivers/helpers/logs_handle.cjs.map +1 -1
- package/dist/drivers/helpers/logs_handle.js +24 -29
- package/dist/drivers/helpers/logs_handle.js.map +1 -1
- package/dist/drivers/helpers/ls_remote_import_handle.cjs +20 -20
- package/dist/drivers/helpers/ls_remote_import_handle.cjs.map +1 -1
- package/dist/drivers/helpers/ls_remote_import_handle.js +20 -18
- package/dist/drivers/helpers/ls_remote_import_handle.js.map +1 -1
- package/dist/drivers/helpers/ls_storage_entry.cjs +36 -40
- package/dist/drivers/helpers/ls_storage_entry.cjs.map +1 -1
- package/dist/drivers/helpers/ls_storage_entry.js +36 -37
- package/dist/drivers/helpers/ls_storage_entry.js.map +1 -1
- package/dist/drivers/helpers/polling_ops.d.ts +6 -5
- package/dist/drivers/helpers/read_file.cjs +34 -57
- package/dist/drivers/helpers/read_file.cjs.map +1 -1
- package/dist/drivers/helpers/read_file.js +30 -34
- package/dist/drivers/helpers/read_file.js.map +1 -1
- package/dist/drivers/logs.cjs +94 -112
- package/dist/drivers/logs.cjs.map +1 -1
- package/dist/drivers/logs.d.ts +35 -32
- package/dist/drivers/logs.js +93 -110
- package/dist/drivers/logs.js.map +1 -1
- package/dist/drivers/logs_stream.cjs +210 -242
- package/dist/drivers/logs_stream.cjs.map +1 -1
- package/dist/drivers/logs_stream.d.ts +55 -53
- package/dist/drivers/logs_stream.js +209 -240
- package/dist/drivers/logs_stream.js.map +1 -1
- package/dist/drivers/ls.cjs +151 -238
- package/dist/drivers/ls.cjs.map +1 -1
- package/dist/drivers/ls.d.ts +53 -49
- package/dist/drivers/ls.js +148 -216
- package/dist/drivers/ls.js.map +1 -1
- package/dist/drivers/types.cjs +25 -53
- package/dist/drivers/types.cjs.map +1 -1
- package/dist/drivers/types.d.ts +91 -106
- package/dist/drivers/types.js +23 -50
- package/dist/drivers/types.js.map +1 -1
- package/dist/drivers/upload.cjs +127 -153
- package/dist/drivers/upload.cjs.map +1 -1
- package/dist/drivers/upload.d.ts +52 -50
- package/dist/drivers/upload.js +126 -151
- package/dist/drivers/upload.js.map +1 -1
- package/dist/drivers/upload_task.cjs +223 -260
- package/dist/drivers/upload_task.cjs.map +1 -1
- package/dist/drivers/upload_task.d.ts +54 -52
- package/dist/drivers/upload_task.js +221 -258
- package/dist/drivers/upload_task.js.map +1 -1
- package/dist/drivers/urls/url.cjs +30 -35
- package/dist/drivers/urls/url.cjs.map +1 -1
- package/dist/drivers/urls/url.js +28 -33
- package/dist/drivers/urls/url.js.map +1 -1
- package/dist/drivers/virtual_storages.cjs +36 -48
- package/dist/drivers/virtual_storages.cjs.map +1 -1
- package/dist/drivers/virtual_storages.d.ts +6 -2
- package/dist/drivers/virtual_storages.js +32 -46
- package/dist/drivers/virtual_storages.js.map +1 -1
- package/dist/helpers/download.cjs +72 -95
- package/dist/helpers/download.cjs.map +1 -1
- package/dist/helpers/download.d.ts +13 -9
- package/dist/helpers/download.js +71 -93
- package/dist/helpers/download.js.map +1 -1
- package/dist/helpers/download_errors.cjs +28 -27
- package/dist/helpers/download_errors.cjs.map +1 -1
- package/dist/helpers/download_errors.d.ts +16 -13
- package/dist/helpers/download_errors.js +28 -26
- package/dist/helpers/download_errors.js.map +1 -1
- package/dist/helpers/validate.cjs +8 -7
- package/dist/helpers/validate.cjs.map +1 -1
- package/dist/helpers/validate.d.ts +4 -1
- package/dist/helpers/validate.js +6 -5
- package/dist/helpers/validate.js.map +1 -1
- package/dist/index.cjs +75 -79
- package/dist/index.d.ts +22 -22
- package/dist/index.js +22 -21
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.cjs +238 -249
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.cjs.map +1 -1
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.client.cjs +27 -27
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.client.cjs.map +1 -1
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.client.d.ts +25 -23
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.client.js +26 -25
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.client.js.map +1 -1
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.d.ts +51 -87
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.js +238 -245
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.js.map +1 -1
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/lsapi/protocol.cjs +295 -289
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/lsapi/protocol.cjs.map +1 -1
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/lsapi/protocol.client.cjs +30 -30
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/lsapi/protocol.client.cjs.map +1 -1
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/lsapi/protocol.client.js +29 -28
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/lsapi/protocol.client.js.map +1 -1
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/lsapi/protocol.d.ts +86 -150
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/lsapi/protocol.js +295 -285
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/lsapi/protocol.js.map +1 -1
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.cjs +385 -393
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.cjs.map +1 -1
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.client.cjs +34 -34
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.client.cjs.map +1 -1
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.client.d.ts +33 -34
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.client.js +33 -32
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.client.js.map +1 -1
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.d.ts +78 -129
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.js +385 -387
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.js.map +1 -1
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.cjs +570 -468
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.cjs.map +1 -1
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.client.cjs +82 -82
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.client.cjs.map +1 -1
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.client.d.ts +109 -112
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.client.js +81 -80
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.client.js.map +1 -1
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.d.ts +243 -264
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.js +569 -460
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.js.map +1 -1
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.cjs +751 -729
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.cjs.map +1 -1
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.client.cjs +67 -67
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.client.cjs.map +1 -1
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.client.js +66 -65
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.client.js.map +1 -1
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.d.ts +15 -381
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.js +749 -718
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.js.map +1 -1
- package/dist/proto-grpc/google/protobuf/duration.cjs +92 -100
- package/dist/proto-grpc/google/protobuf/duration.cjs.map +1 -1
- package/dist/proto-grpc/google/protobuf/duration.d.ts +38 -43
- package/dist/proto-grpc/google/protobuf/duration.js +91 -98
- package/dist/proto-grpc/google/protobuf/duration.js.map +1 -1
- package/dist/proto-grpc/google/protobuf/timestamp.cjs +117 -128
- package/dist/proto-grpc/google/protobuf/timestamp.cjs.map +1 -1
- package/dist/proto-grpc/google/protobuf/timestamp.d.ts +50 -55
- package/dist/proto-grpc/google/protobuf/timestamp.js +116 -126
- package/dist/proto-grpc/google/protobuf/timestamp.js.map +1 -1
- package/dist/proto-rest/downloadapi.d.ts +85 -91
- package/dist/proto-rest/index.d.ts +11 -16
- package/dist/proto-rest/progressapi.d.ts +130 -140
- package/dist/proto-rest/streamingapi.d.ts +413 -434
- package/package.json +12 -12
- package/dist/clients/constructors.d.ts.map +0 -1
- package/dist/clients/crc32c.d.ts +0 -2
- package/dist/clients/crc32c.d.ts.map +0 -1
- package/dist/clients/download.d.ts.map +0 -1
- package/dist/clients/logs.d.ts.map +0 -1
- package/dist/clients/ls_api.d.ts.map +0 -1
- package/dist/clients/progress.d.ts.map +0 -1
- package/dist/clients/upload.d.ts.map +0 -1
- package/dist/drivers/download_blob/blob_key.d.ts +0 -5
- package/dist/drivers/download_blob/blob_key.d.ts.map +0 -1
- package/dist/drivers/download_blob/download_blob.d.ts.map +0 -1
- package/dist/drivers/download_blob/download_blob_task.d.ts +0 -56
- package/dist/drivers/download_blob/download_blob_task.d.ts.map +0 -1
- package/dist/drivers/download_blob/sparse_cache/cache.d.ts +0 -82
- package/dist/drivers/download_blob/sparse_cache/cache.d.ts.map +0 -1
- package/dist/drivers/download_blob/sparse_cache/file.d.ts +0 -8
- package/dist/drivers/download_blob/sparse_cache/file.d.ts.map +0 -1
- package/dist/drivers/download_blob/sparse_cache/ranges.d.ts +0 -46
- package/dist/drivers/download_blob/sparse_cache/ranges.d.ts.map +0 -1
- package/dist/drivers/download_blob_url/driver.d.ts.map +0 -1
- package/dist/drivers/download_blob_url/driver_id.d.ts +0 -6
- package/dist/drivers/download_blob_url/driver_id.d.ts.map +0 -1
- package/dist/drivers/download_blob_url/snapshot.d.ts.map +0 -1
- package/dist/drivers/download_blob_url/task.d.ts.map +0 -1
- package/dist/drivers/download_url/driver.d.ts.map +0 -1
- package/dist/drivers/download_url/task.d.ts.map +0 -1
- package/dist/drivers/helpers/download_local_handle.d.ts +0 -11
- package/dist/drivers/helpers/download_local_handle.d.ts.map +0 -1
- package/dist/drivers/helpers/download_remote_handle.d.ts +0 -13
- package/dist/drivers/helpers/download_remote_handle.d.ts.map +0 -1
- package/dist/drivers/helpers/files_cache.d.ts +0 -29
- package/dist/drivers/helpers/files_cache.d.ts.map +0 -1
- package/dist/drivers/helpers/helpers.d.ts.map +0 -1
- package/dist/drivers/helpers/logs_handle.d.ts +0 -15
- package/dist/drivers/helpers/logs_handle.d.ts.map +0 -1
- package/dist/drivers/helpers/ls_remote_import_handle.d.ts +0 -8
- package/dist/drivers/helpers/ls_remote_import_handle.d.ts.map +0 -1
- package/dist/drivers/helpers/ls_storage_entry.d.ts +0 -23
- package/dist/drivers/helpers/ls_storage_entry.d.ts.map +0 -1
- package/dist/drivers/helpers/polling_ops.d.ts.map +0 -1
- package/dist/drivers/helpers/read_file.d.ts +0 -12
- package/dist/drivers/helpers/read_file.d.ts.map +0 -1
- package/dist/drivers/helpers/test_helpers.d.ts +0 -2
- package/dist/drivers/helpers/test_helpers.d.ts.map +0 -1
- package/dist/drivers/logs.d.ts.map +0 -1
- package/dist/drivers/logs_stream.d.ts.map +0 -1
- package/dist/drivers/ls.d.ts.map +0 -1
- package/dist/drivers/types.d.ts.map +0 -1
- package/dist/drivers/upload.d.ts.map +0 -1
- package/dist/drivers/upload_task.d.ts.map +0 -1
- package/dist/drivers/urls/url.d.ts +0 -13
- package/dist/drivers/urls/url.d.ts.map +0 -1
- package/dist/drivers/virtual_storages.d.ts.map +0 -1
- package/dist/helpers/download.d.ts.map +0 -1
- package/dist/helpers/download_errors.d.ts.map +0 -1
- package/dist/helpers/validate.d.ts.map +0 -1
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.client.d.ts.map +0 -1
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.d.ts.map +0 -1
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/lsapi/protocol.client.d.ts +0 -46
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/lsapi/protocol.client.d.ts.map +0 -1
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/lsapi/protocol.d.ts.map +0 -1
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.client.d.ts.map +0 -1
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.d.ts.map +0 -1
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.client.d.ts.map +0 -1
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.d.ts.map +0 -1
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.client.d.ts +0 -108
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.client.d.ts.map +0 -1
- package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.d.ts.map +0 -1
- package/dist/proto-grpc/google/api/http.d.ts +0 -460
- package/dist/proto-grpc/google/api/http.d.ts.map +0 -1
- package/dist/proto-grpc/google/protobuf/descriptor.d.ts +0 -2340
- package/dist/proto-grpc/google/protobuf/descriptor.d.ts.map +0 -1
- package/dist/proto-grpc/google/protobuf/duration.d.ts.map +0 -1
- package/dist/proto-grpc/google/protobuf/timestamp.d.ts.map +0 -1
- package/dist/proto-rest/downloadapi.d.ts.map +0 -1
- package/dist/proto-rest/index.d.ts.map +0 -1
- package/dist/proto-rest/lsapi.d.ts +0 -148
- package/dist/proto-rest/lsapi.d.ts.map +0 -1
- package/dist/proto-rest/progressapi.d.ts.map +0 -1
- package/dist/proto-rest/streamingapi.d.ts.map +0 -1
- package/dist/proto-rest/uploadapi.d.ts +0 -355
- package/dist/proto-rest/uploadapi.d.ts.map +0 -1
- package/dist/test_env.d.ts +0 -6
- package/dist/test_env.d.ts.map +0 -1
|
@@ -1,61 +1,63 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import type { ImportResourceSnapshot } from "./types";
|
|
8
|
-
import { ImportFileHandleUploadData } from "./types";
|
|
1
|
+
import { BadRequestError, ClientUpload, MTimeError, NoFileForUploading, UnexpectedEOF } from "../clients/upload.js";
|
|
2
|
+
import { ClientProgress } from "../clients/progress.js";
|
|
3
|
+
import { ImportFileHandleUploadData, ImportResourceSnapshot } from "./types.js";
|
|
4
|
+
import { MiLogger, Signer } from "@milaboratories/ts-helpers";
|
|
5
|
+
import { Watcher } from "@milaboratories/computable";
|
|
6
|
+
import * as sdk from "@milaboratories/pl-model-common";
|
|
9
7
|
import { ResourceInfo } from "@milaboratories/pl-tree";
|
|
8
|
+
|
|
9
|
+
//#region src/drivers/upload_task.d.ts
|
|
10
10
|
/** Holds all info needed to upload a file and a status of uploading
|
|
11
11
|
* and indexing. Also, has a method to update a status of the progress.
|
|
12
12
|
* And holds a change source. */
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
13
|
+
declare class UploadTask {
|
|
14
|
+
private readonly logger;
|
|
15
|
+
private readonly clientBlob;
|
|
16
|
+
private readonly clientProgress;
|
|
17
|
+
private readonly maxNConcurrentPartsUpload;
|
|
18
|
+
readonly res: ImportResourceSnapshot;
|
|
19
|
+
private readonly change;
|
|
20
|
+
private readonly counter;
|
|
21
|
+
private nMaxUploads;
|
|
22
|
+
private nPartsWithThisUploadSpeed;
|
|
23
|
+
private nPartsToIncreaseUpload;
|
|
24
|
+
/** If this is upload progress this field will be defined */
|
|
25
|
+
private uploadData?;
|
|
26
|
+
progress: sdk.ImportProgress;
|
|
27
|
+
/** If failed, then getting a progress is terminally failed. */
|
|
28
|
+
failed?: boolean;
|
|
29
|
+
/** True if the blob was existed.
|
|
30
|
+
* At this case, the task will show progress == 1.0. */
|
|
31
|
+
private alreadyExisted;
|
|
32
|
+
constructor(logger: MiLogger, clientBlob: ClientUpload, clientProgress: ClientProgress, maxNConcurrentPartsUpload: number, signer: Signer, res: ImportResourceSnapshot);
|
|
33
|
+
getProgress(w: Watcher, callerId: string): sdk.ImportProgress;
|
|
34
|
+
shouldScheduleUpload(): boolean;
|
|
35
|
+
/** Uploads a blob if it's not BlobIndex. */
|
|
36
|
+
uploadBlobTask(): Promise<void>;
|
|
37
|
+
updateStatus(): Promise<void>;
|
|
38
|
+
/** Set non-terminal error, that task can be retried. */
|
|
39
|
+
private setRetriableError;
|
|
40
|
+
/** Set a terminal error, the task will throw a error instead of a progress. */
|
|
41
|
+
private setTerminalError;
|
|
42
|
+
setDoneIfOutputSet(res: ImportResourceSnapshot): void;
|
|
43
|
+
private setDone;
|
|
44
|
+
incCounter(w: Watcher, callerId: string): void;
|
|
45
|
+
decCounter(callerId: string): boolean;
|
|
46
|
+
private isComputableDone;
|
|
47
47
|
}
|
|
48
48
|
/** Uploads a blob if it's not BlobIndex. */
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
49
|
+
declare function uploadBlob(logger: MiLogger, clientBlob: ClientUpload, res: ResourceInfo, uploadData: ImportFileHandleUploadData, isDoneFn: () => boolean, speed: {
|
|
50
|
+
nPartsWithThisUploadSpeed: number;
|
|
51
|
+
nPartsToIncreaseUpload: number;
|
|
52
|
+
currentSpeed: number;
|
|
53
|
+
maxSpeed: number;
|
|
54
54
|
}): Promise<void>;
|
|
55
55
|
/** Returns true if we need to upload the blob that got from this progress. */
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
56
|
+
declare function isMyUpload(p: sdk.ImportProgress): boolean;
|
|
57
|
+
declare function isUpload(res: ResourceInfo): boolean;
|
|
58
|
+
declare function isSignMatch(signer: Signer, path: string, signature: string): boolean;
|
|
59
|
+
declare function isTerminalUploadError(e: any): boolean;
|
|
60
|
+
declare function nonRecoverableError(e: any): e is MTimeError | UnexpectedEOF | NoFileForUploading | BadRequestError;
|
|
61
|
+
//#endregion
|
|
62
|
+
export { UploadTask, isMyUpload, isSignMatch, isTerminalUploadError, isUpload, nonRecoverableError, uploadBlob };
|
|
61
63
|
//# sourceMappingURL=upload_task.d.ts.map
|
|
@@ -1,296 +1,259 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import assert from
|
|
1
|
+
import { BadRequestError, MTimeError, NoFileForUploading, UnexpectedEOF } from "../clients/upload.js";
|
|
2
|
+
import { ImportFileHandleUploadData } from "./types.js";
|
|
3
|
+
import { isTimeoutError, resourceIdToString, stringifyWithResourceId } from "@milaboratories/pl-client";
|
|
4
|
+
import { CallersCounter, asyncPool } from "@milaboratories/ts-helpers";
|
|
5
|
+
import { ChangeSource } from "@milaboratories/computable";
|
|
6
|
+
import assert from "node:assert";
|
|
7
7
|
|
|
8
|
+
//#region src/drivers/upload_task.ts
|
|
8
9
|
/** Holds all info needed to upload a file and a status of uploading
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
this.alreadyExisted = true;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
setDone(done) {
|
|
133
|
-
this.progress.done = done;
|
|
134
|
-
if (done)
|
|
135
|
-
this.progress.lastError = undefined;
|
|
136
|
-
}
|
|
137
|
-
incCounter(w, callerId) {
|
|
138
|
-
this.change.attachWatcher(w);
|
|
139
|
-
this.counter.inc(callerId);
|
|
140
|
-
}
|
|
141
|
-
decCounter(callerId) {
|
|
142
|
-
return this.counter.dec(callerId);
|
|
143
|
-
}
|
|
144
|
-
isComputableDone() {
|
|
145
|
-
return this.counter.isZero();
|
|
146
|
-
}
|
|
147
|
-
}
|
|
10
|
+
* and indexing. Also, has a method to update a status of the progress.
|
|
11
|
+
* And holds a change source. */
|
|
12
|
+
var UploadTask = class {
|
|
13
|
+
change = new ChangeSource();
|
|
14
|
+
counter = new CallersCounter();
|
|
15
|
+
nMaxUploads;
|
|
16
|
+
nPartsWithThisUploadSpeed = 0;
|
|
17
|
+
nPartsToIncreaseUpload = 10;
|
|
18
|
+
/** If this is upload progress this field will be defined */
|
|
19
|
+
uploadData;
|
|
20
|
+
progress;
|
|
21
|
+
/** If failed, then getting a progress is terminally failed. */
|
|
22
|
+
failed;
|
|
23
|
+
/** True if the blob was existed.
|
|
24
|
+
* At this case, the task will show progress == 1.0. */
|
|
25
|
+
alreadyExisted = false;
|
|
26
|
+
constructor(logger, clientBlob, clientProgress, maxNConcurrentPartsUpload, signer, res) {
|
|
27
|
+
this.logger = logger;
|
|
28
|
+
this.clientBlob = clientBlob;
|
|
29
|
+
this.clientProgress = clientProgress;
|
|
30
|
+
this.maxNConcurrentPartsUpload = maxNConcurrentPartsUpload;
|
|
31
|
+
this.res = res;
|
|
32
|
+
this.nMaxUploads = this.maxNConcurrentPartsUpload;
|
|
33
|
+
const { uploadData, progress } = newProgress(res, signer);
|
|
34
|
+
this.uploadData = uploadData;
|
|
35
|
+
this.progress = progress;
|
|
36
|
+
}
|
|
37
|
+
getProgress(w, callerId) {
|
|
38
|
+
this.incCounter(w, callerId);
|
|
39
|
+
if (this.failed) {
|
|
40
|
+
this.logger.error(`Uploading terminally failed: ${this.progress.lastError}`);
|
|
41
|
+
throw new Error(this.progress.lastError);
|
|
42
|
+
}
|
|
43
|
+
return cloneProgress(this.progress);
|
|
44
|
+
}
|
|
45
|
+
shouldScheduleUpload() {
|
|
46
|
+
return isMyUpload(this.progress);
|
|
47
|
+
}
|
|
48
|
+
/** Uploads a blob if it's not BlobIndex. */
|
|
49
|
+
async uploadBlobTask() {
|
|
50
|
+
try {
|
|
51
|
+
await uploadBlob(this.logger, this.clientBlob, this.res, this.uploadData, this.isComputableDone.bind(this), {
|
|
52
|
+
nPartsWithThisUploadSpeed: this.nPartsWithThisUploadSpeed,
|
|
53
|
+
nPartsToIncreaseUpload: this.nPartsToIncreaseUpload,
|
|
54
|
+
currentSpeed: this.nMaxUploads,
|
|
55
|
+
maxSpeed: this.maxNConcurrentPartsUpload
|
|
56
|
+
});
|
|
57
|
+
this.change.markChanged(`blob upload for ${resourceIdToString(this.res.id)} finished`);
|
|
58
|
+
} catch (e) {
|
|
59
|
+
if (isTerminalUploadError(e)) {
|
|
60
|
+
this.logger.warn(`terminal error while uploading a blob: ${e}`);
|
|
61
|
+
this.change.markChanged(`blob upload for ${resourceIdToString(this.res.id)} aborted: ${e.code}`);
|
|
62
|
+
this.setDone(true);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
this.logger.error(`error while uploading a blob: ${e}`);
|
|
66
|
+
this.change.markChanged(`blob upload for ${resourceIdToString(this.res.id)} failed`);
|
|
67
|
+
if (nonRecoverableError(e)) {
|
|
68
|
+
this.setTerminalError(e);
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
this.setRetriableError(e);
|
|
72
|
+
if (isHeadersTimeoutError(e)) this.nMaxUploads = decreaseConcurrency(this.logger, this.nMaxUploads, 1);
|
|
73
|
+
throw e;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
async updateStatus() {
|
|
77
|
+
try {
|
|
78
|
+
const status = await this.clientProgress.getStatus(this.res, { timeout: 1e4 });
|
|
79
|
+
const oldStatus = this.progress.status;
|
|
80
|
+
const newStatus = doneProgressIfExisted(this.alreadyExisted, protoToStatus(status));
|
|
81
|
+
this.progress.status = newStatus;
|
|
82
|
+
this.setDone(status.done);
|
|
83
|
+
if (status.done || this.progress.status.progress != oldStatus?.progress) this.change.markChanged(`upload status for ${resourceIdToString(this.res.id)} changed`);
|
|
84
|
+
} catch (e) {
|
|
85
|
+
this.setRetriableError(e);
|
|
86
|
+
if (isTimeoutError(e)) {
|
|
87
|
+
this.logger.warn(`deadline exceeded while getting a status of BlobImport: ${e.message}`);
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
if (isTerminalUploadError(e)) {
|
|
91
|
+
this.logger.warn(`terminal error while updating BlobImport status: ${e}, ${stringifyWithResourceId(this.res)}`);
|
|
92
|
+
this.change.markChanged(`upload status for ${resourceIdToString(this.res.id)} aborted: ${e.code}`);
|
|
93
|
+
this.setDone(true);
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
this.logger.error(`retryable error while updating a status of BlobImport: ${e}`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/** Set non-terminal error, that task can be retried. */
|
|
100
|
+
setRetriableError(e) {
|
|
101
|
+
this.progress.lastError = String(e);
|
|
102
|
+
}
|
|
103
|
+
/** Set a terminal error, the task will throw a error instead of a progress. */
|
|
104
|
+
setTerminalError(e) {
|
|
105
|
+
this.progress.lastError = String(e);
|
|
106
|
+
this.progress.done = false;
|
|
107
|
+
this.failed = true;
|
|
108
|
+
}
|
|
109
|
+
setDoneIfOutputSet(res) {
|
|
110
|
+
if (isImportResourceOutputSet(res)) {
|
|
111
|
+
this.setDone(true);
|
|
112
|
+
this.alreadyExisted = true;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
setDone(done) {
|
|
116
|
+
this.progress.done = done;
|
|
117
|
+
if (done) this.progress.lastError = void 0;
|
|
118
|
+
}
|
|
119
|
+
incCounter(w, callerId) {
|
|
120
|
+
this.change.attachWatcher(w);
|
|
121
|
+
this.counter.inc(callerId);
|
|
122
|
+
}
|
|
123
|
+
decCounter(callerId) {
|
|
124
|
+
return this.counter.dec(callerId);
|
|
125
|
+
}
|
|
126
|
+
isComputableDone() {
|
|
127
|
+
return this.counter.isZero();
|
|
128
|
+
}
|
|
129
|
+
};
|
|
148
130
|
/** Uploads a blob if it's not BlobIndex. */
|
|
149
131
|
async function uploadBlob(logger, clientBlob, res, uploadData, isDoneFn, speed) {
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
};
|
|
171
|
-
await asyncPool(speed.currentSpeed, parts.toUpload.map(partUploadFn));
|
|
172
|
-
if (isDoneFn())
|
|
173
|
-
return;
|
|
174
|
-
await clientBlob.finalize(res, { timeout });
|
|
175
|
-
logger.info(`uploading of resource ${res.id} finished.`);
|
|
132
|
+
assert(isUpload(res), "the upload operation can be done only for BlobUploads");
|
|
133
|
+
const timeout = 1e4;
|
|
134
|
+
if (isDoneFn()) return;
|
|
135
|
+
const parts = await clientBlob.initUpload(res, { timeout });
|
|
136
|
+
logger.info(`started to upload blob ${res.id}, parts overall: ${parts.overall}, parts remained: ${parts.toUpload.length}, number of concurrent uploads: ${speed.currentSpeed}`);
|
|
137
|
+
const partUploadFn = (part) => async (controller) => {
|
|
138
|
+
if (isDoneFn()) return;
|
|
139
|
+
await clientBlob.partUpload(res, uploadData.localPath, BigInt(uploadData.modificationTime), part, parts.checksumAlgorithm, parts.checksumHeader, { timeout });
|
|
140
|
+
logger.info(`uploaded chunk ${part}/${parts.overall} of resource: ${res.id}`);
|
|
141
|
+
speed.nPartsWithThisUploadSpeed++;
|
|
142
|
+
if (speed.nPartsWithThisUploadSpeed >= speed.nPartsToIncreaseUpload) {
|
|
143
|
+
speed.nPartsWithThisUploadSpeed = 0;
|
|
144
|
+
speed.currentSpeed = increaseConcurrency(logger, speed.currentSpeed, speed.maxSpeed);
|
|
145
|
+
controller.setConcurrency(speed.currentSpeed);
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
await asyncPool(speed.currentSpeed, parts.toUpload.map(partUploadFn));
|
|
149
|
+
if (isDoneFn()) return;
|
|
150
|
+
await clientBlob.finalize(res, { timeout });
|
|
151
|
+
logger.info(`uploading of resource ${res.id} finished.`);
|
|
176
152
|
}
|
|
177
153
|
function newProgress(res, signer) {
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
154
|
+
let isUploadSignMatch;
|
|
155
|
+
let uploadData;
|
|
156
|
+
if (isUpload(res)) {
|
|
157
|
+
uploadData = ImportFileHandleUploadData.parse(res.data);
|
|
158
|
+
isUploadSignMatch = isSignMatch(signer, uploadData.localPath, uploadData.pathSignature);
|
|
159
|
+
}
|
|
160
|
+
return {
|
|
161
|
+
uploadData,
|
|
162
|
+
progress: {
|
|
163
|
+
done: false,
|
|
164
|
+
status: void 0,
|
|
165
|
+
isUpload: isUpload(res),
|
|
166
|
+
isUploadSignMatch,
|
|
167
|
+
lastError: void 0
|
|
168
|
+
}
|
|
169
|
+
};
|
|
194
170
|
}
|
|
195
171
|
/** Returns true if we need to upload the blob that got from this progress. */
|
|
196
172
|
function isMyUpload(p) {
|
|
197
|
-
|
|
173
|
+
return p.isUpload && (p.isUploadSignMatch ?? false);
|
|
198
174
|
}
|
|
199
175
|
/** Creates a deep copy of progress,
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
176
|
+
* since we do not want to pass a mutable object
|
|
177
|
+
* to API, it led to bugs before.
|
|
178
|
+
* We do not use '...' cloning syntax
|
|
179
|
+
* for the compiler to fail here if we change API. */
|
|
204
180
|
function cloneProgress(progress) {
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
return progress;
|
|
181
|
+
const cloned = {
|
|
182
|
+
done: progress.done,
|
|
183
|
+
isUpload: progress.isUpload,
|
|
184
|
+
isUploadSignMatch: progress.isUploadSignMatch,
|
|
185
|
+
lastError: progress.lastError
|
|
186
|
+
};
|
|
187
|
+
if (progress.status) cloned.status = {
|
|
188
|
+
progress: progress.status.progress,
|
|
189
|
+
bytesProcessed: progress.status.bytesProcessed,
|
|
190
|
+
bytesTotal: progress.status.bytesTotal
|
|
191
|
+
};
|
|
192
|
+
return progress;
|
|
218
193
|
}
|
|
219
194
|
function isImportResourceOutputSet(res) {
|
|
220
|
-
|
|
221
|
-
? res.fields.blob !== undefined
|
|
222
|
-
: res.fields.incarnation !== undefined;
|
|
195
|
+
return "blob" in res.fields ? res.fields.blob !== void 0 : res.fields.incarnation !== void 0;
|
|
223
196
|
}
|
|
224
197
|
function isUpload(res) {
|
|
225
|
-
|
|
198
|
+
return res.type.name.startsWith("BlobUpload");
|
|
226
199
|
}
|
|
227
200
|
function isSignMatch(signer, path, signature) {
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
}
|
|
201
|
+
try {
|
|
202
|
+
signer.verify(path, signature);
|
|
203
|
+
return true;
|
|
204
|
+
} catch {
|
|
205
|
+
return false;
|
|
206
|
+
}
|
|
235
207
|
}
|
|
236
208
|
function protoToStatus(proto) {
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
209
|
+
return {
|
|
210
|
+
progress: proto.progress ?? 0,
|
|
211
|
+
bytesProcessed: Number(proto.bytesProcessed),
|
|
212
|
+
bytesTotal: Number(proto.bytesTotal)
|
|
213
|
+
};
|
|
242
214
|
}
|
|
243
215
|
/** Special hack: if we didn't even start to upload the blob
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
216
|
+
* to backend because the result was already there,
|
|
217
|
+
* the backend does show us a status that nothing were uploaded,
|
|
218
|
+
* but we need to show the client that everything is OK.
|
|
219
|
+
* Thus, here we set progress to be 1.0 and all bytes are become processed. */
|
|
248
220
|
function doneProgressIfExisted(alreadyExisted, status) {
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
}
|
|
256
|
-
return status;
|
|
221
|
+
if (alreadyExisted && status.bytesTotal != 0 && status.bytesProcessed == 0) return {
|
|
222
|
+
progress: 1,
|
|
223
|
+
bytesProcessed: Number(status.bytesTotal),
|
|
224
|
+
bytesTotal: Number(status.bytesTotal)
|
|
225
|
+
};
|
|
226
|
+
return status;
|
|
257
227
|
}
|
|
258
228
|
function isTerminalUploadError(e) {
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
default:
|
|
267
|
-
return false;
|
|
268
|
-
}
|
|
229
|
+
if (e?.name !== "RpcError") return false;
|
|
230
|
+
switch (e.code) {
|
|
231
|
+
case "NOT_FOUND":
|
|
232
|
+
case "ABORTED":
|
|
233
|
+
case "ALREADY_EXISTS": return true;
|
|
234
|
+
default: return false;
|
|
235
|
+
}
|
|
269
236
|
}
|
|
270
237
|
function nonRecoverableError(e) {
|
|
271
|
-
|
|
272
|
-
e instanceof UnexpectedEOF ||
|
|
273
|
-
e instanceof NoFileForUploading ||
|
|
274
|
-
e instanceof BadRequestError);
|
|
238
|
+
return e instanceof MTimeError || e instanceof UnexpectedEOF || e instanceof NoFileForUploading || e instanceof BadRequestError;
|
|
275
239
|
}
|
|
276
240
|
function isHeadersTimeoutError(e) {
|
|
277
|
-
|
|
241
|
+
return e?.message.includes(`UND_ERR_HEADERS_TIMEOUT`);
|
|
278
242
|
}
|
|
279
243
|
/** It's called for every upload success so if everyone is succeeded, we'll double the concurrency. */
|
|
280
244
|
function increaseConcurrency(logger, current, max) {
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
return newConcurrency;
|
|
245
|
+
const newConcurrency = Math.min(current + 2, max);
|
|
246
|
+
if (newConcurrency != current) logger.info(`uploadTask.increaseConcurrency: increased from ${current} to ${newConcurrency}`);
|
|
247
|
+
return newConcurrency;
|
|
285
248
|
}
|
|
286
249
|
/** When a error happens, this will half the concurrency level, so the next time
|
|
287
|
-
|
|
250
|
+
* we'll try to upload blobs slower. */
|
|
288
251
|
function decreaseConcurrency(logger, current, min) {
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
return newConcurrency;
|
|
252
|
+
const newConcurrency = Math.max(Math.round(current / 2), min);
|
|
253
|
+
if (newConcurrency != current) logger.info(`uploadTask.decreaseConcurrency: decreased from ${current} to ${newConcurrency}`);
|
|
254
|
+
return newConcurrency;
|
|
293
255
|
}
|
|
294
256
|
|
|
257
|
+
//#endregion
|
|
295
258
|
export { UploadTask, isMyUpload, isSignMatch, isTerminalUploadError, isUpload, nonRecoverableError, uploadBlob };
|
|
296
|
-
//# sourceMappingURL=upload_task.js.map
|
|
259
|
+
//# sourceMappingURL=upload_task.js.map
|