@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.
Files changed (330) hide show
  1. package/dist/_virtual/_rolldown/runtime.cjs +29 -0
  2. package/dist/clients/constructors.cjs +28 -28
  3. package/dist/clients/constructors.cjs.map +1 -1
  4. package/dist/clients/constructors.d.ts +17 -13
  5. package/dist/clients/constructors.js +28 -26
  6. package/dist/clients/constructors.js.map +1 -1
  7. package/dist/clients/crc32c.cjs +8 -13
  8. package/dist/clients/crc32c.cjs.map +1 -1
  9. package/dist/clients/crc32c.js +8 -12
  10. package/dist/clients/crc32c.js.map +1 -1
  11. package/dist/clients/download.cjs +119 -160
  12. package/dist/clients/download.cjs.map +1 -1
  13. package/dist/clients/download.d.ts +45 -41
  14. package/dist/clients/download.js +115 -137
  15. package/dist/clients/download.js.map +1 -1
  16. package/dist/clients/logs.cjs +78 -82
  17. package/dist/clients/logs.cjs.map +1 -1
  18. package/dist/clients/logs.d.ts +34 -24
  19. package/dist/clients/logs.js +77 -80
  20. package/dist/clients/logs.js.map +1 -1
  21. package/dist/clients/ls_api.cjs +62 -68
  22. package/dist/clients/ls_api.cjs.map +1 -1
  23. package/dist/clients/ls_api.d.ts +15 -11
  24. package/dist/clients/ls_api.js +61 -66
  25. package/dist/clients/ls_api.js.map +1 -1
  26. package/dist/clients/progress.cjs +49 -59
  27. package/dist/clients/progress.cjs.map +1 -1
  28. package/dist/clients/progress.d.ts +27 -20
  29. package/dist/clients/progress.js +48 -57
  30. package/dist/clients/progress.js.map +1 -1
  31. package/dist/clients/upload.cjs +189 -250
  32. package/dist/clients/upload.cjs.map +1 -1
  33. package/dist/clients/upload.d.ts +44 -34
  34. package/dist/clients/upload.js +187 -229
  35. package/dist/clients/upload.js.map +1 -1
  36. package/dist/drivers/download_blob/blob_key.cjs +9 -26
  37. package/dist/drivers/download_blob/blob_key.cjs.map +1 -1
  38. package/dist/drivers/download_blob/blob_key.js +7 -5
  39. package/dist/drivers/download_blob/blob_key.js.map +1 -1
  40. package/dist/drivers/download_blob/download_blob.cjs +395 -478
  41. package/dist/drivers/download_blob/download_blob.cjs.map +1 -1
  42. package/dist/drivers/download_blob/download_blob.d.ts +102 -100
  43. package/dist/drivers/download_blob/download_blob.js +388 -453
  44. package/dist/drivers/download_blob/download_blob.js.map +1 -1
  45. package/dist/drivers/download_blob/download_blob_task.cjs +128 -163
  46. package/dist/drivers/download_blob/download_blob_task.cjs.map +1 -1
  47. package/dist/drivers/download_blob/download_blob_task.js +125 -141
  48. package/dist/drivers/download_blob/download_blob_task.js.map +1 -1
  49. package/dist/drivers/download_blob/sparse_cache/cache.cjs +166 -195
  50. package/dist/drivers/download_blob/sparse_cache/cache.cjs.map +1 -1
  51. package/dist/drivers/download_blob/sparse_cache/cache.js +164 -193
  52. package/dist/drivers/download_blob/sparse_cache/cache.js.map +1 -1
  53. package/dist/drivers/download_blob/sparse_cache/file.cjs +29 -50
  54. package/dist/drivers/download_blob/sparse_cache/file.cjs.map +1 -1
  55. package/dist/drivers/download_blob/sparse_cache/file.js +28 -29
  56. package/dist/drivers/download_blob/sparse_cache/file.js.map +1 -1
  57. package/dist/drivers/download_blob/sparse_cache/ranges.cjs +48 -76
  58. package/dist/drivers/download_blob/sparse_cache/ranges.cjs.map +1 -1
  59. package/dist/drivers/download_blob/sparse_cache/ranges.js +47 -54
  60. package/dist/drivers/download_blob/sparse_cache/ranges.js.map +1 -1
  61. package/dist/drivers/download_blob_url/driver.cjs +125 -165
  62. package/dist/drivers/download_blob_url/driver.cjs.map +1 -1
  63. package/dist/drivers/download_blob_url/driver.d.ts +45 -42
  64. package/dist/drivers/download_blob_url/driver.js +123 -144
  65. package/dist/drivers/download_blob_url/driver.js.map +1 -1
  66. package/dist/drivers/download_blob_url/driver_id.cjs +4 -4
  67. package/dist/drivers/download_blob_url/driver_id.cjs.map +1 -1
  68. package/dist/drivers/download_blob_url/driver_id.js +4 -3
  69. package/dist/drivers/download_blob_url/driver_id.js.map +1 -1
  70. package/dist/drivers/download_blob_url/snapshot.cjs +7 -11
  71. package/dist/drivers/download_blob_url/snapshot.cjs.map +1 -1
  72. package/dist/drivers/download_blob_url/snapshot.d.ts +10 -5
  73. package/dist/drivers/download_blob_url/snapshot.js +5 -8
  74. package/dist/drivers/download_blob_url/snapshot.js.map +1 -1
  75. package/dist/drivers/download_blob_url/task.cjs +147 -194
  76. package/dist/drivers/download_blob_url/task.cjs.map +1 -1
  77. package/dist/drivers/download_blob_url/task.d.ts +55 -57
  78. package/dist/drivers/download_blob_url/task.js +140 -170
  79. package/dist/drivers/download_blob_url/task.js.map +1 -1
  80. package/dist/drivers/download_url/driver.cjs +109 -146
  81. package/dist/drivers/download_url/driver.cjs.map +1 -1
  82. package/dist/drivers/download_url/driver.d.ts +59 -57
  83. package/dist/drivers/download_url/driver.js +107 -125
  84. package/dist/drivers/download_url/driver.js.map +1 -1
  85. package/dist/drivers/download_url/task.cjs +104 -137
  86. package/dist/drivers/download_url/task.cjs.map +1 -1
  87. package/dist/drivers/download_url/task.d.ts +33 -37
  88. package/dist/drivers/download_url/task.js +99 -113
  89. package/dist/drivers/download_url/task.js.map +1 -1
  90. package/dist/drivers/helpers/download_local_handle.cjs +13 -14
  91. package/dist/drivers/helpers/download_local_handle.cjs.map +1 -1
  92. package/dist/drivers/helpers/download_local_handle.js +13 -13
  93. package/dist/drivers/helpers/download_local_handle.js.map +1 -1
  94. package/dist/drivers/helpers/download_remote_handle.cjs +23 -24
  95. package/dist/drivers/helpers/download_remote_handle.cjs.map +1 -1
  96. package/dist/drivers/helpers/download_remote_handle.js +22 -22
  97. package/dist/drivers/helpers/download_remote_handle.js.map +1 -1
  98. package/dist/drivers/helpers/files_cache.cjs +53 -64
  99. package/dist/drivers/helpers/files_cache.cjs.map +1 -1
  100. package/dist/drivers/helpers/files_cache.js +52 -62
  101. package/dist/drivers/helpers/files_cache.js.map +1 -1
  102. package/dist/drivers/helpers/helpers.cjs +24 -28
  103. package/dist/drivers/helpers/helpers.cjs.map +1 -1
  104. package/dist/drivers/helpers/helpers.d.ts +10 -7
  105. package/dist/drivers/helpers/helpers.js +24 -27
  106. package/dist/drivers/helpers/helpers.js.map +1 -1
  107. package/dist/drivers/helpers/logs_handle.cjs +24 -33
  108. package/dist/drivers/helpers/logs_handle.cjs.map +1 -1
  109. package/dist/drivers/helpers/logs_handle.js +24 -29
  110. package/dist/drivers/helpers/logs_handle.js.map +1 -1
  111. package/dist/drivers/helpers/ls_remote_import_handle.cjs +20 -20
  112. package/dist/drivers/helpers/ls_remote_import_handle.cjs.map +1 -1
  113. package/dist/drivers/helpers/ls_remote_import_handle.js +20 -18
  114. package/dist/drivers/helpers/ls_remote_import_handle.js.map +1 -1
  115. package/dist/drivers/helpers/ls_storage_entry.cjs +36 -40
  116. package/dist/drivers/helpers/ls_storage_entry.cjs.map +1 -1
  117. package/dist/drivers/helpers/ls_storage_entry.js +36 -37
  118. package/dist/drivers/helpers/ls_storage_entry.js.map +1 -1
  119. package/dist/drivers/helpers/polling_ops.d.ts +6 -5
  120. package/dist/drivers/helpers/read_file.cjs +34 -57
  121. package/dist/drivers/helpers/read_file.cjs.map +1 -1
  122. package/dist/drivers/helpers/read_file.js +30 -34
  123. package/dist/drivers/helpers/read_file.js.map +1 -1
  124. package/dist/drivers/logs.cjs +94 -112
  125. package/dist/drivers/logs.cjs.map +1 -1
  126. package/dist/drivers/logs.d.ts +35 -32
  127. package/dist/drivers/logs.js +93 -110
  128. package/dist/drivers/logs.js.map +1 -1
  129. package/dist/drivers/logs_stream.cjs +210 -242
  130. package/dist/drivers/logs_stream.cjs.map +1 -1
  131. package/dist/drivers/logs_stream.d.ts +55 -53
  132. package/dist/drivers/logs_stream.js +209 -240
  133. package/dist/drivers/logs_stream.js.map +1 -1
  134. package/dist/drivers/ls.cjs +151 -238
  135. package/dist/drivers/ls.cjs.map +1 -1
  136. package/dist/drivers/ls.d.ts +53 -49
  137. package/dist/drivers/ls.js +148 -216
  138. package/dist/drivers/ls.js.map +1 -1
  139. package/dist/drivers/types.cjs +25 -53
  140. package/dist/drivers/types.cjs.map +1 -1
  141. package/dist/drivers/types.d.ts +91 -106
  142. package/dist/drivers/types.js +23 -50
  143. package/dist/drivers/types.js.map +1 -1
  144. package/dist/drivers/upload.cjs +127 -153
  145. package/dist/drivers/upload.cjs.map +1 -1
  146. package/dist/drivers/upload.d.ts +52 -50
  147. package/dist/drivers/upload.js +126 -151
  148. package/dist/drivers/upload.js.map +1 -1
  149. package/dist/drivers/upload_task.cjs +223 -260
  150. package/dist/drivers/upload_task.cjs.map +1 -1
  151. package/dist/drivers/upload_task.d.ts +54 -52
  152. package/dist/drivers/upload_task.js +221 -258
  153. package/dist/drivers/upload_task.js.map +1 -1
  154. package/dist/drivers/urls/url.cjs +30 -35
  155. package/dist/drivers/urls/url.cjs.map +1 -1
  156. package/dist/drivers/urls/url.js +28 -33
  157. package/dist/drivers/urls/url.js.map +1 -1
  158. package/dist/drivers/virtual_storages.cjs +36 -48
  159. package/dist/drivers/virtual_storages.cjs.map +1 -1
  160. package/dist/drivers/virtual_storages.d.ts +6 -2
  161. package/dist/drivers/virtual_storages.js +32 -46
  162. package/dist/drivers/virtual_storages.js.map +1 -1
  163. package/dist/helpers/download.cjs +72 -95
  164. package/dist/helpers/download.cjs.map +1 -1
  165. package/dist/helpers/download.d.ts +13 -9
  166. package/dist/helpers/download.js +71 -93
  167. package/dist/helpers/download.js.map +1 -1
  168. package/dist/helpers/download_errors.cjs +28 -27
  169. package/dist/helpers/download_errors.cjs.map +1 -1
  170. package/dist/helpers/download_errors.d.ts +16 -13
  171. package/dist/helpers/download_errors.js +28 -26
  172. package/dist/helpers/download_errors.js.map +1 -1
  173. package/dist/helpers/validate.cjs +8 -7
  174. package/dist/helpers/validate.cjs.map +1 -1
  175. package/dist/helpers/validate.d.ts +4 -1
  176. package/dist/helpers/validate.js +6 -5
  177. package/dist/helpers/validate.js.map +1 -1
  178. package/dist/index.cjs +75 -79
  179. package/dist/index.d.ts +22 -22
  180. package/dist/index.js +22 -21
  181. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.cjs +238 -249
  182. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.cjs.map +1 -1
  183. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.client.cjs +27 -27
  184. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.client.cjs.map +1 -1
  185. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.client.d.ts +25 -23
  186. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.client.js +26 -25
  187. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.client.js.map +1 -1
  188. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.d.ts +51 -87
  189. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.js +238 -245
  190. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.js.map +1 -1
  191. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/lsapi/protocol.cjs +295 -289
  192. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/lsapi/protocol.cjs.map +1 -1
  193. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/lsapi/protocol.client.cjs +30 -30
  194. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/lsapi/protocol.client.cjs.map +1 -1
  195. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/lsapi/protocol.client.js +29 -28
  196. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/lsapi/protocol.client.js.map +1 -1
  197. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/lsapi/protocol.d.ts +86 -150
  198. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/lsapi/protocol.js +295 -285
  199. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/lsapi/protocol.js.map +1 -1
  200. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.cjs +385 -393
  201. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.cjs.map +1 -1
  202. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.client.cjs +34 -34
  203. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.client.cjs.map +1 -1
  204. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.client.d.ts +33 -34
  205. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.client.js +33 -32
  206. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.client.js.map +1 -1
  207. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.d.ts +78 -129
  208. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.js +385 -387
  209. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.js.map +1 -1
  210. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.cjs +570 -468
  211. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.cjs.map +1 -1
  212. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.client.cjs +82 -82
  213. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.client.cjs.map +1 -1
  214. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.client.d.ts +109 -112
  215. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.client.js +81 -80
  216. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.client.js.map +1 -1
  217. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.d.ts +243 -264
  218. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.js +569 -460
  219. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.js.map +1 -1
  220. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.cjs +751 -729
  221. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.cjs.map +1 -1
  222. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.client.cjs +67 -67
  223. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.client.cjs.map +1 -1
  224. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.client.js +66 -65
  225. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.client.js.map +1 -1
  226. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.d.ts +15 -381
  227. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.js +749 -718
  228. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.js.map +1 -1
  229. package/dist/proto-grpc/google/protobuf/duration.cjs +92 -100
  230. package/dist/proto-grpc/google/protobuf/duration.cjs.map +1 -1
  231. package/dist/proto-grpc/google/protobuf/duration.d.ts +38 -43
  232. package/dist/proto-grpc/google/protobuf/duration.js +91 -98
  233. package/dist/proto-grpc/google/protobuf/duration.js.map +1 -1
  234. package/dist/proto-grpc/google/protobuf/timestamp.cjs +117 -128
  235. package/dist/proto-grpc/google/protobuf/timestamp.cjs.map +1 -1
  236. package/dist/proto-grpc/google/protobuf/timestamp.d.ts +50 -55
  237. package/dist/proto-grpc/google/protobuf/timestamp.js +116 -126
  238. package/dist/proto-grpc/google/protobuf/timestamp.js.map +1 -1
  239. package/dist/proto-rest/downloadapi.d.ts +85 -91
  240. package/dist/proto-rest/index.d.ts +11 -16
  241. package/dist/proto-rest/progressapi.d.ts +130 -140
  242. package/dist/proto-rest/streamingapi.d.ts +413 -434
  243. package/package.json +12 -12
  244. package/dist/clients/constructors.d.ts.map +0 -1
  245. package/dist/clients/crc32c.d.ts +0 -2
  246. package/dist/clients/crc32c.d.ts.map +0 -1
  247. package/dist/clients/download.d.ts.map +0 -1
  248. package/dist/clients/logs.d.ts.map +0 -1
  249. package/dist/clients/ls_api.d.ts.map +0 -1
  250. package/dist/clients/progress.d.ts.map +0 -1
  251. package/dist/clients/upload.d.ts.map +0 -1
  252. package/dist/drivers/download_blob/blob_key.d.ts +0 -5
  253. package/dist/drivers/download_blob/blob_key.d.ts.map +0 -1
  254. package/dist/drivers/download_blob/download_blob.d.ts.map +0 -1
  255. package/dist/drivers/download_blob/download_blob_task.d.ts +0 -56
  256. package/dist/drivers/download_blob/download_blob_task.d.ts.map +0 -1
  257. package/dist/drivers/download_blob/sparse_cache/cache.d.ts +0 -82
  258. package/dist/drivers/download_blob/sparse_cache/cache.d.ts.map +0 -1
  259. package/dist/drivers/download_blob/sparse_cache/file.d.ts +0 -8
  260. package/dist/drivers/download_blob/sparse_cache/file.d.ts.map +0 -1
  261. package/dist/drivers/download_blob/sparse_cache/ranges.d.ts +0 -46
  262. package/dist/drivers/download_blob/sparse_cache/ranges.d.ts.map +0 -1
  263. package/dist/drivers/download_blob_url/driver.d.ts.map +0 -1
  264. package/dist/drivers/download_blob_url/driver_id.d.ts +0 -6
  265. package/dist/drivers/download_blob_url/driver_id.d.ts.map +0 -1
  266. package/dist/drivers/download_blob_url/snapshot.d.ts.map +0 -1
  267. package/dist/drivers/download_blob_url/task.d.ts.map +0 -1
  268. package/dist/drivers/download_url/driver.d.ts.map +0 -1
  269. package/dist/drivers/download_url/task.d.ts.map +0 -1
  270. package/dist/drivers/helpers/download_local_handle.d.ts +0 -11
  271. package/dist/drivers/helpers/download_local_handle.d.ts.map +0 -1
  272. package/dist/drivers/helpers/download_remote_handle.d.ts +0 -13
  273. package/dist/drivers/helpers/download_remote_handle.d.ts.map +0 -1
  274. package/dist/drivers/helpers/files_cache.d.ts +0 -29
  275. package/dist/drivers/helpers/files_cache.d.ts.map +0 -1
  276. package/dist/drivers/helpers/helpers.d.ts.map +0 -1
  277. package/dist/drivers/helpers/logs_handle.d.ts +0 -15
  278. package/dist/drivers/helpers/logs_handle.d.ts.map +0 -1
  279. package/dist/drivers/helpers/ls_remote_import_handle.d.ts +0 -8
  280. package/dist/drivers/helpers/ls_remote_import_handle.d.ts.map +0 -1
  281. package/dist/drivers/helpers/ls_storage_entry.d.ts +0 -23
  282. package/dist/drivers/helpers/ls_storage_entry.d.ts.map +0 -1
  283. package/dist/drivers/helpers/polling_ops.d.ts.map +0 -1
  284. package/dist/drivers/helpers/read_file.d.ts +0 -12
  285. package/dist/drivers/helpers/read_file.d.ts.map +0 -1
  286. package/dist/drivers/helpers/test_helpers.d.ts +0 -2
  287. package/dist/drivers/helpers/test_helpers.d.ts.map +0 -1
  288. package/dist/drivers/logs.d.ts.map +0 -1
  289. package/dist/drivers/logs_stream.d.ts.map +0 -1
  290. package/dist/drivers/ls.d.ts.map +0 -1
  291. package/dist/drivers/types.d.ts.map +0 -1
  292. package/dist/drivers/upload.d.ts.map +0 -1
  293. package/dist/drivers/upload_task.d.ts.map +0 -1
  294. package/dist/drivers/urls/url.d.ts +0 -13
  295. package/dist/drivers/urls/url.d.ts.map +0 -1
  296. package/dist/drivers/virtual_storages.d.ts.map +0 -1
  297. package/dist/helpers/download.d.ts.map +0 -1
  298. package/dist/helpers/download_errors.d.ts.map +0 -1
  299. package/dist/helpers/validate.d.ts.map +0 -1
  300. package/dist/index.cjs.map +0 -1
  301. package/dist/index.d.ts.map +0 -1
  302. package/dist/index.js.map +0 -1
  303. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.client.d.ts.map +0 -1
  304. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.d.ts.map +0 -1
  305. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/lsapi/protocol.client.d.ts +0 -46
  306. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/lsapi/protocol.client.d.ts.map +0 -1
  307. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/lsapi/protocol.d.ts.map +0 -1
  308. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.client.d.ts.map +0 -1
  309. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.d.ts.map +0 -1
  310. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.client.d.ts.map +0 -1
  311. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.d.ts.map +0 -1
  312. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.client.d.ts +0 -108
  313. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.client.d.ts.map +0 -1
  314. package/dist/proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.d.ts.map +0 -1
  315. package/dist/proto-grpc/google/api/http.d.ts +0 -460
  316. package/dist/proto-grpc/google/api/http.d.ts.map +0 -1
  317. package/dist/proto-grpc/google/protobuf/descriptor.d.ts +0 -2340
  318. package/dist/proto-grpc/google/protobuf/descriptor.d.ts.map +0 -1
  319. package/dist/proto-grpc/google/protobuf/duration.d.ts.map +0 -1
  320. package/dist/proto-grpc/google/protobuf/timestamp.d.ts.map +0 -1
  321. package/dist/proto-rest/downloadapi.d.ts.map +0 -1
  322. package/dist/proto-rest/index.d.ts.map +0 -1
  323. package/dist/proto-rest/lsapi.d.ts +0 -148
  324. package/dist/proto-rest/lsapi.d.ts.map +0 -1
  325. package/dist/proto-rest/progressapi.d.ts.map +0 -1
  326. package/dist/proto-rest/streamingapi.d.ts.map +0 -1
  327. package/dist/proto-rest/uploadapi.d.ts +0 -355
  328. package/dist/proto-rest/uploadapi.d.ts.map +0 -1
  329. package/dist/test_env.d.ts +0 -6
  330. package/dist/test_env.d.ts.map +0 -1
@@ -1,148 +1,127 @@
1
- import { Computable } from '@milaboratories/computable';
2
- import { TaskProcessor } from '@milaboratories/ts-helpers';
3
- import { randomUUID } from 'node:crypto';
4
- import * as path from 'node:path';
5
- import { FilesCache } from '../helpers/files_cache.js';
6
- import { stringifyWithResourceId, resourceIdToString } from '@milaboratories/pl-client';
7
- import { isFolderURL } from '@milaboratories/pl-model-common';
8
- import { makeDownloadableBlobSnapshot } from './snapshot.js';
9
- import { isPlTreeEntry } from '@milaboratories/pl-tree';
10
- import { rmRFDir, DownloadAndUnarchiveTask } from './task.js';
11
- import { getPathForFolderURL } from '../urls/url.js';
12
- import { newId } from './driver_id.js';
13
- import { nonRecoverableError } from '../download_blob/download_blob_task.js';
1
+ import { nonRecoverableError } from "../download_blob/download_blob_task.js";
2
+ import { FilesCache } from "../helpers/files_cache.js";
3
+ import { makeDownloadableBlobSnapshot } from "./snapshot.js";
4
+ import { getPathForFolderURL } from "../urls/url.js";
5
+ import { DownloadAndUnarchiveTask, rmRFDir } from "./task.js";
6
+ import { newId } from "./driver_id.js";
7
+ import { resourceIdToString, stringifyWithResourceId } from "@milaboratories/pl-client";
8
+ import { TaskProcessor } from "@milaboratories/ts-helpers";
9
+ import * as path$1 from "node:path";
10
+ import { Computable } from "@milaboratories/computable";
11
+ import { isFolderURL } from "@milaboratories/pl-model-common";
12
+ import { isPlTreeEntry } from "@milaboratories/pl-tree";
13
+ import { randomUUID } from "node:crypto";
14
14
 
15
+ //#region src/drivers/download_blob_url/driver.ts
15
16
  /** Downloads .tar, .tar.gz or zip archives,
16
- * extracts them into saveDir and gets a url for it. */
17
- class DownloadBlobToURLDriver {
18
- logger;
19
- signer;
20
- clientDownload;
21
- saveDir;
22
- opts;
23
- idToDownload = new Map();
24
- downloadQueue;
25
- /** Writes and removes files to a hard drive and holds a counter for every
26
- * file that should be kept. */
27
- cache;
28
- constructor(logger, signer, clientDownload, saveDir, opts = {
29
- cacheSoftSizeBytes: 50 * 1024 * 1024,
30
- nConcurrentDownloads: 50,
31
- }) {
32
- this.logger = logger;
33
- this.signer = signer;
34
- this.clientDownload = clientDownload;
35
- this.saveDir = saveDir;
36
- this.opts = opts;
37
- this.downloadQueue = new TaskProcessor(this.logger, this.opts.nConcurrentDownloads, {
38
- type: "exponentialWithMaxDelayBackoff",
39
- initialDelay: 10000,
40
- maxDelay: 30000,
41
- backoffMultiplier: 1.5,
42
- jitter: 0.5,
43
- });
44
- this.cache = new FilesCache(this.opts.cacheSoftSizeBytes);
45
- }
46
- info() {
47
- return {
48
- saveDir: this.saveDir,
49
- opts: this.opts,
50
- idToDownloadSize: this.idToDownload.size,
51
- idToDownloadKeys: this.idToDownload.keys(),
52
- idToDownload: Array.from(this.idToDownload.entries()).map(([id, task]) => [id, task.info()]),
53
- };
54
- }
55
- /**
56
- * @returns full path to the referenced file
57
- */
58
- getPathForCustomProtocol(url) {
59
- if (isFolderURL(url)) {
60
- return getPathForFolderURL(this.signer, url, this.saveDir);
61
- }
62
- throw new Error(`getPathForCustomProtocol: ${url} is invalid`);
63
- }
64
- extractArchiveAndGetURL(res, format, ctx) {
65
- // wrap result as computable, if we were not given an existing computable context
66
- if (ctx === undefined)
67
- return Computable.make((c) => this.extractArchiveAndGetURL(res, format, c));
68
- const rInfo = isPlTreeEntry(res)
69
- ? makeDownloadableBlobSnapshot(res, ctx)
70
- : res;
71
- const callerId = randomUUID();
72
- ctx.addOnDestroy(() => this.releasePath(rInfo.id, format, callerId));
73
- const result = this.extractArchiveAndGetURLNoCtx(rInfo, format, ctx.watcher, callerId);
74
- if (result?.url === undefined)
75
- ctx.markUnstable(`a path to the downloaded archive might be undefined. The current result: ${result}`);
76
- if (result?.error !== undefined)
77
- throw result?.error;
78
- return result?.url;
79
- }
80
- extractArchiveAndGetURLNoCtx(rInfo, format, w, callerId) {
81
- const task = this.idToDownload.get(newId(rInfo.id, format));
82
- if (task != undefined) {
83
- task.attach(w, callerId);
84
- return task.getURL();
85
- }
86
- const newTask = this.setNewTask(w, rInfo, format, callerId);
87
- this.downloadQueue.push({
88
- fn: async () => this.downloadUrl(newTask, callerId),
89
- recoverableErrorPredicate: (e) => !nonRecoverableError(e),
90
- });
91
- return newTask.getURL();
92
- }
93
- /** Downloads and extracts a tar archive if it wasn't downloaded yet. */
94
- async downloadUrl(task, callerId) {
95
- await task.download();
96
- // Might be undefined if a error happened
97
- if (task.getURL()?.url != undefined)
98
- this.cache.addCache(task, callerId);
99
- }
100
- /** Removes a directory and aborts a downloading task when all callers
101
- * are not interested in it. */
102
- async releasePath(id, format, callerId) {
103
- const task = this.idToDownload.get(newId(id, format));
104
- if (task == undefined)
105
- return;
106
- if (this.cache.existsFile(task.path)) {
107
- const toDelete = this.cache.removeFile(task.path, callerId);
108
- await Promise.all(toDelete.map(async (task) => {
109
- await rmRFDir(task.path);
110
- this.cache.removeCache(task);
111
- this.removeTask(task, `the task ${stringifyWithResourceId(task.info())} was removed` +
112
- `from cache along with ${stringifyWithResourceId(toDelete.map((t) => t.info()))}`);
113
- }));
114
- }
115
- else {
116
- // The task is still in a downloading queue.
117
- const deleted = task.counter.dec(callerId);
118
- if (deleted)
119
- this.removeTask(task, `the task ${stringifyWithResourceId(task.info())} was removed from cache`);
120
- }
121
- }
122
- /** Removes all files from a hard drive. */
123
- async releaseAll() {
124
- this.downloadQueue.stop();
125
- await Promise.all(Array.from(this.idToDownload.entries()).map(async ([_, task]) => {
126
- await rmRFDir(task.path);
127
- this.cache.removeCache(task);
128
- this.removeTask(task, `the task ${stringifyWithResourceId(task.info())} was released when the driver was closed`);
129
- }));
130
- }
131
- setNewTask(w, rInfo, format, callerId) {
132
- const result = new DownloadAndUnarchiveTask(this.logger, this.signer, this.saveDir, this.getFilePath(rInfo.id, format), rInfo, format, this.clientDownload);
133
- result.attach(w, callerId);
134
- this.idToDownload.set(newId(rInfo.id, format), result);
135
- return result;
136
- }
137
- removeTask(task, reason) {
138
- task.abort(reason);
139
- task.change.markChanged(`task for ${resourceIdToString(task.rInfo.id)} removed: ${reason}`);
140
- this.idToDownload.delete(newId(task.rInfo.id, task.format));
141
- }
142
- getFilePath(id, format) {
143
- return path.join(this.saveDir, `${String(BigInt(id))}_${format}`);
144
- }
145
- }
17
+ * extracts them into saveDir and gets a url for it. */
18
+ var DownloadBlobToURLDriver = class {
19
+ idToDownload = /* @__PURE__ */ new Map();
20
+ downloadQueue;
21
+ /** Writes and removes files to a hard drive and holds a counter for every
22
+ * file that should be kept. */
23
+ cache;
24
+ constructor(logger, signer, clientDownload, saveDir, opts = {
25
+ cacheSoftSizeBytes: 50 * 1024 * 1024,
26
+ nConcurrentDownloads: 50
27
+ }) {
28
+ this.logger = logger;
29
+ this.signer = signer;
30
+ this.clientDownload = clientDownload;
31
+ this.saveDir = saveDir;
32
+ this.opts = opts;
33
+ this.downloadQueue = new TaskProcessor(this.logger, this.opts.nConcurrentDownloads, {
34
+ type: "exponentialWithMaxDelayBackoff",
35
+ initialDelay: 1e4,
36
+ maxDelay: 3e4,
37
+ backoffMultiplier: 1.5,
38
+ jitter: .5
39
+ });
40
+ this.cache = new FilesCache(this.opts.cacheSoftSizeBytes);
41
+ }
42
+ info() {
43
+ return {
44
+ saveDir: this.saveDir,
45
+ opts: this.opts,
46
+ idToDownloadSize: this.idToDownload.size,
47
+ idToDownloadKeys: this.idToDownload.keys(),
48
+ idToDownload: Array.from(this.idToDownload.entries()).map(([id, task]) => [id, task.info()])
49
+ };
50
+ }
51
+ /**
52
+ * @returns full path to the referenced file
53
+ */
54
+ getPathForCustomProtocol(url) {
55
+ if (isFolderURL(url)) return getPathForFolderURL(this.signer, url, this.saveDir);
56
+ throw new Error(`getPathForCustomProtocol: ${url} is invalid`);
57
+ }
58
+ extractArchiveAndGetURL(res, format, ctx) {
59
+ if (ctx === void 0) return Computable.make((c) => this.extractArchiveAndGetURL(res, format, c));
60
+ const rInfo = isPlTreeEntry(res) ? makeDownloadableBlobSnapshot(res, ctx) : res;
61
+ const callerId = randomUUID();
62
+ ctx.addOnDestroy(() => this.releasePath(rInfo.id, format, callerId));
63
+ const result = this.extractArchiveAndGetURLNoCtx(rInfo, format, ctx.watcher, callerId);
64
+ if (result?.url === void 0) ctx.markUnstable(`a path to the downloaded archive might be undefined. The current result: ${result}`);
65
+ if (result?.error !== void 0) throw result?.error;
66
+ return result?.url;
67
+ }
68
+ extractArchiveAndGetURLNoCtx(rInfo, format, w, callerId) {
69
+ const task = this.idToDownload.get(newId(rInfo.id, format));
70
+ if (task != void 0) {
71
+ task.attach(w, callerId);
72
+ return task.getURL();
73
+ }
74
+ const newTask = this.setNewTask(w, rInfo, format, callerId);
75
+ this.downloadQueue.push({
76
+ fn: async () => this.downloadUrl(newTask, callerId),
77
+ recoverableErrorPredicate: (e) => !nonRecoverableError(e)
78
+ });
79
+ return newTask.getURL();
80
+ }
81
+ /** Downloads and extracts a tar archive if it wasn't downloaded yet. */
82
+ async downloadUrl(task, callerId) {
83
+ await task.download();
84
+ if (task.getURL()?.url != void 0) this.cache.addCache(task, callerId);
85
+ }
86
+ /** Removes a directory and aborts a downloading task when all callers
87
+ * are not interested in it. */
88
+ async releasePath(id, format, callerId) {
89
+ const task = this.idToDownload.get(newId(id, format));
90
+ if (task == void 0) return;
91
+ if (this.cache.existsFile(task.path)) {
92
+ const toDelete = this.cache.removeFile(task.path, callerId);
93
+ await Promise.all(toDelete.map(async (task) => {
94
+ await rmRFDir(task.path);
95
+ this.cache.removeCache(task);
96
+ this.removeTask(task, `the task ${stringifyWithResourceId(task.info())} was removedfrom cache along with ${stringifyWithResourceId(toDelete.map((t) => t.info()))}`);
97
+ }));
98
+ } else if (task.counter.dec(callerId)) this.removeTask(task, `the task ${stringifyWithResourceId(task.info())} was removed from cache`);
99
+ }
100
+ /** Removes all files from a hard drive. */
101
+ async releaseAll() {
102
+ this.downloadQueue.stop();
103
+ await Promise.all(Array.from(this.idToDownload.entries()).map(async ([_, task]) => {
104
+ await rmRFDir(task.path);
105
+ this.cache.removeCache(task);
106
+ this.removeTask(task, `the task ${stringifyWithResourceId(task.info())} was released when the driver was closed`);
107
+ }));
108
+ }
109
+ setNewTask(w, rInfo, format, callerId) {
110
+ const result = new DownloadAndUnarchiveTask(this.logger, this.signer, this.saveDir, this.getFilePath(rInfo.id, format), rInfo, format, this.clientDownload);
111
+ result.attach(w, callerId);
112
+ this.idToDownload.set(newId(rInfo.id, format), result);
113
+ return result;
114
+ }
115
+ removeTask(task, reason) {
116
+ task.abort(reason);
117
+ task.change.markChanged(`task for ${resourceIdToString(task.rInfo.id)} removed: ${reason}`);
118
+ this.idToDownload.delete(newId(task.rInfo.id, task.format));
119
+ }
120
+ getFilePath(id, format) {
121
+ return path$1.join(this.saveDir, `${String(BigInt(id))}_${format}`);
122
+ }
123
+ };
146
124
 
125
+ //#endregion
147
126
  export { DownloadBlobToURLDriver };
148
- //# sourceMappingURL=driver.js.map
127
+ //# sourceMappingURL=driver.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"driver.js","sources":["../../../src/drivers/download_blob_url/driver.ts"],"sourcesContent":["import type { ComputableCtx, Watcher } from \"@milaboratories/computable\";\nimport { Computable } from \"@milaboratories/computable\";\nimport type { MiLogger, Signer } from \"@milaboratories/ts-helpers\";\nimport { TaskProcessor } from \"@milaboratories/ts-helpers\";\nimport { randomUUID } from \"node:crypto\";\nimport * as path from \"node:path\";\nimport { FilesCache } from \"../helpers/files_cache\";\nimport type { ResourceId } from \"@milaboratories/pl-client\";\nimport { resourceIdToString, stringifyWithResourceId } from \"@milaboratories/pl-client\";\nimport {\n type ArchiveFormat,\n type BlobToURLDriver,\n type FolderURL,\n isFolderURL,\n} from \"@milaboratories/pl-model-common\";\nimport type { DownloadableBlobSnapshot } from \"./snapshot\";\nimport { makeDownloadableBlobSnapshot } from \"./snapshot\";\nimport type { PlTreeEntry } from \"@milaboratories/pl-tree\";\nimport { isPlTreeEntry } from \"@milaboratories/pl-tree\";\nimport { DownloadAndUnarchiveTask, rmRFDir } from \"./task\";\nimport type { ClientDownload } from \"../../clients/download\";\nimport { getPathForFolderURL } from \"../urls/url\";\nimport type { Id } from \"./driver_id\";\nimport { newId } from \"./driver_id\";\nimport { nonRecoverableError } from \"../download_blob/download_blob_task\";\n\nexport type DownloadBlobToURLDriverOps = {\n cacheSoftSizeBytes: number;\n nConcurrentDownloads: number;\n};\n\n/** Downloads .tar, .tar.gz or zip archives,\n * extracts them into saveDir and gets a url for it. */\nexport class DownloadBlobToURLDriver implements BlobToURLDriver {\n private idToDownload: Map<Id, DownloadAndUnarchiveTask> = new Map();\n private downloadQueue: TaskProcessor;\n\n /** Writes and removes files to a hard drive and holds a counter for every\n * file that should be kept. */\n private cache: FilesCache<DownloadAndUnarchiveTask>;\n\n constructor(\n private readonly logger: MiLogger,\n private readonly signer: Signer,\n private readonly clientDownload: ClientDownload,\n private readonly saveDir: string,\n private readonly opts: DownloadBlobToURLDriverOps = {\n cacheSoftSizeBytes: 50 * 1024 * 1024,\n nConcurrentDownloads: 50,\n },\n ) {\n this.downloadQueue = new TaskProcessor(this.logger, this.opts.nConcurrentDownloads, {\n type: \"exponentialWithMaxDelayBackoff\",\n initialDelay: 10000,\n maxDelay: 30000,\n backoffMultiplier: 1.5,\n jitter: 0.5,\n });\n this.cache = new FilesCache(this.opts.cacheSoftSizeBytes);\n }\n\n public info(): any {\n return {\n saveDir: this.saveDir,\n opts: this.opts,\n idToDownloadSize: this.idToDownload.size,\n idToDownloadKeys: this.idToDownload.keys(),\n idToDownload: Array.from(this.idToDownload.entries()).map(([id, task]) => [id, task.info()]),\n };\n }\n\n /**\n * @returns full path to the referenced file\n */\n getPathForCustomProtocol(url: FolderURL): string {\n if (isFolderURL(url)) {\n return getPathForFolderURL(this.signer, url, this.saveDir);\n }\n\n throw new Error(`getPathForCustomProtocol: ${url} is invalid`);\n }\n\n extractArchiveAndGetURL(\n res: DownloadableBlobSnapshot | PlTreeEntry,\n format: ArchiveFormat,\n ctx: ComputableCtx,\n ): FolderURL | undefined;\n\n extractArchiveAndGetURL(\n res: DownloadableBlobSnapshot | PlTreeEntry,\n format: ArchiveFormat,\n ): Computable<FolderURL | undefined>;\n\n extractArchiveAndGetURL(\n res: DownloadableBlobSnapshot | PlTreeEntry,\n format: ArchiveFormat,\n ctx?: ComputableCtx,\n ): Computable<FolderURL | undefined> | FolderURL | undefined {\n // wrap result as computable, if we were not given an existing computable context\n if (ctx === undefined)\n return Computable.make((c) => this.extractArchiveAndGetURL(res, format, c));\n\n const rInfo: DownloadableBlobSnapshot = isPlTreeEntry(res)\n ? makeDownloadableBlobSnapshot(res, ctx)\n : res;\n\n const callerId = randomUUID();\n\n ctx.addOnDestroy(() => this.releasePath(rInfo.id, format, callerId));\n\n const result = this.extractArchiveAndGetURLNoCtx(rInfo, format, ctx.watcher, callerId);\n if (result?.url === undefined)\n ctx.markUnstable(\n `a path to the downloaded archive might be undefined. The current result: ${result}`,\n );\n\n if (result?.error !== undefined) throw result?.error;\n\n return result?.url;\n }\n\n private extractArchiveAndGetURLNoCtx(\n rInfo: DownloadableBlobSnapshot,\n format: ArchiveFormat,\n w: Watcher,\n callerId: string,\n ) {\n const task = this.idToDownload.get(newId(rInfo.id, format));\n\n if (task != undefined) {\n task.attach(w, callerId);\n return task.getURL();\n }\n\n const newTask = this.setNewTask(w, rInfo, format, callerId);\n this.downloadQueue.push({\n fn: async () => this.downloadUrl(newTask, callerId),\n recoverableErrorPredicate: (e) => !nonRecoverableError(e),\n });\n\n return newTask.getURL();\n }\n\n /** Downloads and extracts a tar archive if it wasn't downloaded yet. */\n async downloadUrl(task: DownloadAndUnarchiveTask, callerId: string) {\n await task.download();\n // Might be undefined if a error happened\n if (task.getURL()?.url != undefined) this.cache.addCache(task, callerId);\n }\n\n /** Removes a directory and aborts a downloading task when all callers\n * are not interested in it. */\n async releasePath(id: ResourceId, format: ArchiveFormat, callerId: string): Promise<void> {\n const task = this.idToDownload.get(newId(id, format));\n if (task == undefined) return;\n\n if (this.cache.existsFile(task.path)) {\n const toDelete = this.cache.removeFile(task.path, callerId);\n\n await Promise.all(\n toDelete.map(async (task: DownloadAndUnarchiveTask) => {\n await rmRFDir(task.path);\n this.cache.removeCache(task);\n\n this.removeTask(\n task,\n `the task ${stringifyWithResourceId(task.info())} was removed` +\n `from cache along with ${stringifyWithResourceId(toDelete.map((t) => t.info()))}`,\n );\n }),\n );\n } else {\n // The task is still in a downloading queue.\n const deleted = task.counter.dec(callerId);\n if (deleted)\n this.removeTask(\n task,\n `the task ${stringifyWithResourceId(task.info())} was removed from cache`,\n );\n }\n }\n\n /** Removes all files from a hard drive. */\n async releaseAll() {\n this.downloadQueue.stop();\n\n await Promise.all(\n Array.from(this.idToDownload.entries()).map(async ([_, task]) => {\n await rmRFDir(task.path);\n this.cache.removeCache(task);\n\n this.removeTask(\n task,\n `the task ${stringifyWithResourceId(task.info())} was released when the driver was closed`,\n );\n }),\n );\n }\n\n private setNewTask(\n w: Watcher,\n rInfo: DownloadableBlobSnapshot,\n format: ArchiveFormat,\n callerId: string,\n ) {\n const result = new DownloadAndUnarchiveTask(\n this.logger,\n this.signer,\n this.saveDir,\n this.getFilePath(rInfo.id, format),\n rInfo,\n format,\n this.clientDownload,\n );\n result.attach(w, callerId);\n this.idToDownload.set(newId(rInfo.id, format), result);\n\n return result;\n }\n\n private removeTask(task: DownloadAndUnarchiveTask, reason: string) {\n task.abort(reason);\n task.change.markChanged(`task for ${resourceIdToString(task.rInfo.id)} removed: ${reason}`);\n this.idToDownload.delete(newId(task.rInfo.id, task.format));\n }\n\n private getFilePath(id: ResourceId, format: ArchiveFormat): string {\n return path.join(this.saveDir, `${String(BigInt(id))}_${format}`);\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"driver.js","names":["path"],"sources":["../../../src/drivers/download_blob_url/driver.ts"],"sourcesContent":["import type { ComputableCtx, Watcher } from \"@milaboratories/computable\";\nimport { Computable } from \"@milaboratories/computable\";\nimport type { MiLogger, Signer } from \"@milaboratories/ts-helpers\";\nimport { TaskProcessor } from \"@milaboratories/ts-helpers\";\nimport { randomUUID } from \"node:crypto\";\nimport * as path from \"node:path\";\nimport { FilesCache } from \"../helpers/files_cache\";\nimport type { ResourceId } from \"@milaboratories/pl-client\";\nimport { resourceIdToString, stringifyWithResourceId } from \"@milaboratories/pl-client\";\nimport {\n type ArchiveFormat,\n type BlobToURLDriver,\n type FolderURL,\n isFolderURL,\n} from \"@milaboratories/pl-model-common\";\nimport type { DownloadableBlobSnapshot } from \"./snapshot\";\nimport { makeDownloadableBlobSnapshot } from \"./snapshot\";\nimport type { PlTreeEntry } from \"@milaboratories/pl-tree\";\nimport { isPlTreeEntry } from \"@milaboratories/pl-tree\";\nimport { DownloadAndUnarchiveTask, rmRFDir } from \"./task\";\nimport type { ClientDownload } from \"../../clients/download\";\nimport { getPathForFolderURL } from \"../urls/url\";\nimport type { Id } from \"./driver_id\";\nimport { newId } from \"./driver_id\";\nimport { nonRecoverableError } from \"../download_blob/download_blob_task\";\n\nexport type DownloadBlobToURLDriverOps = {\n cacheSoftSizeBytes: number;\n nConcurrentDownloads: number;\n};\n\n/** Downloads .tar, .tar.gz or zip archives,\n * extracts them into saveDir and gets a url for it. */\nexport class DownloadBlobToURLDriver implements BlobToURLDriver {\n private idToDownload: Map<Id, DownloadAndUnarchiveTask> = new Map();\n private downloadQueue: TaskProcessor;\n\n /** Writes and removes files to a hard drive and holds a counter for every\n * file that should be kept. */\n private cache: FilesCache<DownloadAndUnarchiveTask>;\n\n constructor(\n private readonly logger: MiLogger,\n private readonly signer: Signer,\n private readonly clientDownload: ClientDownload,\n private readonly saveDir: string,\n private readonly opts: DownloadBlobToURLDriverOps = {\n cacheSoftSizeBytes: 50 * 1024 * 1024,\n nConcurrentDownloads: 50,\n },\n ) {\n this.downloadQueue = new TaskProcessor(this.logger, this.opts.nConcurrentDownloads, {\n type: \"exponentialWithMaxDelayBackoff\",\n initialDelay: 10000,\n maxDelay: 30000,\n backoffMultiplier: 1.5,\n jitter: 0.5,\n });\n this.cache = new FilesCache(this.opts.cacheSoftSizeBytes);\n }\n\n public info(): any {\n return {\n saveDir: this.saveDir,\n opts: this.opts,\n idToDownloadSize: this.idToDownload.size,\n idToDownloadKeys: this.idToDownload.keys(),\n idToDownload: Array.from(this.idToDownload.entries()).map(([id, task]) => [id, task.info()]),\n };\n }\n\n /**\n * @returns full path to the referenced file\n */\n getPathForCustomProtocol(url: FolderURL): string {\n if (isFolderURL(url)) {\n return getPathForFolderURL(this.signer, url, this.saveDir);\n }\n\n throw new Error(`getPathForCustomProtocol: ${url} is invalid`);\n }\n\n extractArchiveAndGetURL(\n res: DownloadableBlobSnapshot | PlTreeEntry,\n format: ArchiveFormat,\n ctx: ComputableCtx,\n ): FolderURL | undefined;\n\n extractArchiveAndGetURL(\n res: DownloadableBlobSnapshot | PlTreeEntry,\n format: ArchiveFormat,\n ): Computable<FolderURL | undefined>;\n\n extractArchiveAndGetURL(\n res: DownloadableBlobSnapshot | PlTreeEntry,\n format: ArchiveFormat,\n ctx?: ComputableCtx,\n ): Computable<FolderURL | undefined> | FolderURL | undefined {\n // wrap result as computable, if we were not given an existing computable context\n if (ctx === undefined)\n return Computable.make((c) => this.extractArchiveAndGetURL(res, format, c));\n\n const rInfo: DownloadableBlobSnapshot = isPlTreeEntry(res)\n ? makeDownloadableBlobSnapshot(res, ctx)\n : res;\n\n const callerId = randomUUID();\n\n ctx.addOnDestroy(() => this.releasePath(rInfo.id, format, callerId));\n\n const result = this.extractArchiveAndGetURLNoCtx(rInfo, format, ctx.watcher, callerId);\n if (result?.url === undefined)\n ctx.markUnstable(\n `a path to the downloaded archive might be undefined. The current result: ${result}`,\n );\n\n if (result?.error !== undefined) throw result?.error;\n\n return result?.url;\n }\n\n private extractArchiveAndGetURLNoCtx(\n rInfo: DownloadableBlobSnapshot,\n format: ArchiveFormat,\n w: Watcher,\n callerId: string,\n ) {\n const task = this.idToDownload.get(newId(rInfo.id, format));\n\n if (task != undefined) {\n task.attach(w, callerId);\n return task.getURL();\n }\n\n const newTask = this.setNewTask(w, rInfo, format, callerId);\n this.downloadQueue.push({\n fn: async () => this.downloadUrl(newTask, callerId),\n recoverableErrorPredicate: (e) => !nonRecoverableError(e),\n });\n\n return newTask.getURL();\n }\n\n /** Downloads and extracts a tar archive if it wasn't downloaded yet. */\n async downloadUrl(task: DownloadAndUnarchiveTask, callerId: string) {\n await task.download();\n // Might be undefined if a error happened\n if (task.getURL()?.url != undefined) this.cache.addCache(task, callerId);\n }\n\n /** Removes a directory and aborts a downloading task when all callers\n * are not interested in it. */\n async releasePath(id: ResourceId, format: ArchiveFormat, callerId: string): Promise<void> {\n const task = this.idToDownload.get(newId(id, format));\n if (task == undefined) return;\n\n if (this.cache.existsFile(task.path)) {\n const toDelete = this.cache.removeFile(task.path, callerId);\n\n await Promise.all(\n toDelete.map(async (task: DownloadAndUnarchiveTask) => {\n await rmRFDir(task.path);\n this.cache.removeCache(task);\n\n this.removeTask(\n task,\n `the task ${stringifyWithResourceId(task.info())} was removed` +\n `from cache along with ${stringifyWithResourceId(toDelete.map((t) => t.info()))}`,\n );\n }),\n );\n } else {\n // The task is still in a downloading queue.\n const deleted = task.counter.dec(callerId);\n if (deleted)\n this.removeTask(\n task,\n `the task ${stringifyWithResourceId(task.info())} was removed from cache`,\n );\n }\n }\n\n /** Removes all files from a hard drive. */\n async releaseAll() {\n this.downloadQueue.stop();\n\n await Promise.all(\n Array.from(this.idToDownload.entries()).map(async ([_, task]) => {\n await rmRFDir(task.path);\n this.cache.removeCache(task);\n\n this.removeTask(\n task,\n `the task ${stringifyWithResourceId(task.info())} was released when the driver was closed`,\n );\n }),\n );\n }\n\n private setNewTask(\n w: Watcher,\n rInfo: DownloadableBlobSnapshot,\n format: ArchiveFormat,\n callerId: string,\n ) {\n const result = new DownloadAndUnarchiveTask(\n this.logger,\n this.signer,\n this.saveDir,\n this.getFilePath(rInfo.id, format),\n rInfo,\n format,\n this.clientDownload,\n );\n result.attach(w, callerId);\n this.idToDownload.set(newId(rInfo.id, format), result);\n\n return result;\n }\n\n private removeTask(task: DownloadAndUnarchiveTask, reason: string) {\n task.abort(reason);\n task.change.markChanged(`task for ${resourceIdToString(task.rInfo.id)} removed: ${reason}`);\n this.idToDownload.delete(newId(task.rInfo.id, task.format));\n }\n\n private getFilePath(id: ResourceId, format: ArchiveFormat): string {\n return path.join(this.saveDir, `${String(BigInt(id))}_${format}`);\n }\n}\n"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- 'use strict';
2
1
 
2
+ //#region src/drivers/download_blob_url/driver_id.ts
3
3
  function newId(id, format) {
4
- return `id:${String(BigInt(id))}-${format}`;
4
+ return `id:${String(BigInt(id))}-${format}`;
5
5
  }
6
- // export function
7
6
 
7
+ //#endregion
8
8
  exports.newId = newId;
9
- //# sourceMappingURL=driver_id.cjs.map
9
+ //# sourceMappingURL=driver_id.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"driver_id.cjs","sources":["../../../src/drivers/download_blob_url/driver_id.ts"],"sourcesContent":["import type { ResourceId } from \"@milaboratories/pl-client\";\nimport type { ArchiveFormat } from \"@milaboratories/pl-model-common\";\n\n/** A key in the driver task queue. */\nexport type Id = string;\n\nexport function newId(id: ResourceId, format: ArchiveFormat): Id {\n return `id:${String(BigInt(id))}-${format}`;\n}\n\n// export function\n"],"names":[],"mappings":";;AAMM,SAAU,KAAK,CAAC,EAAc,EAAE,MAAqB,EAAA;IACzD,OAAO,CAAA,GAAA,EAAM,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA,CAAA,EAAI,MAAM,CAAA,CAAE;AAC7C;AAEA;;;;"}
1
+ {"version":3,"file":"driver_id.cjs","names":[],"sources":["../../../src/drivers/download_blob_url/driver_id.ts"],"sourcesContent":["import type { ResourceId } from \"@milaboratories/pl-client\";\nimport type { ArchiveFormat } from \"@milaboratories/pl-model-common\";\n\n/** A key in the driver task queue. */\nexport type Id = string;\n\nexport function newId(id: ResourceId, format: ArchiveFormat): Id {\n return `id:${String(BigInt(id))}-${format}`;\n}\n\n// export function\n"],"mappings":";;AAMA,SAAgB,MAAM,IAAgB,QAA2B;AAC/D,QAAO,MAAM,OAAO,OAAO,GAAG,CAAC,CAAC,GAAG"}
@@ -1,7 +1,8 @@
1
+ //#region src/drivers/download_blob_url/driver_id.ts
1
2
  function newId(id, format) {
2
- return `id:${String(BigInt(id))}-${format}`;
3
+ return `id:${String(BigInt(id))}-${format}`;
3
4
  }
4
- // export function
5
5
 
6
+ //#endregion
6
7
  export { newId };
7
- //# sourceMappingURL=driver_id.js.map
8
+ //# sourceMappingURL=driver_id.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"driver_id.js","sources":["../../../src/drivers/download_blob_url/driver_id.ts"],"sourcesContent":["import type { ResourceId } from \"@milaboratories/pl-client\";\nimport type { ArchiveFormat } from \"@milaboratories/pl-model-common\";\n\n/** A key in the driver task queue. */\nexport type Id = string;\n\nexport function newId(id: ResourceId, format: ArchiveFormat): Id {\n return `id:${String(BigInt(id))}-${format}`;\n}\n\n// export function\n"],"names":[],"mappings":"AAMM,SAAU,KAAK,CAAC,EAAc,EAAE,MAAqB,EAAA;IACzD,OAAO,CAAA,GAAA,EAAM,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA,CAAA,EAAI,MAAM,CAAA,CAAE;AAC7C;AAEA;;;;"}
1
+ {"version":3,"file":"driver_id.js","names":[],"sources":["../../../src/drivers/download_blob_url/driver_id.ts"],"sourcesContent":["import type { ResourceId } from \"@milaboratories/pl-client\";\nimport type { ArchiveFormat } from \"@milaboratories/pl-model-common\";\n\n/** A key in the driver task queue. */\nexport type Id = string;\n\nexport function newId(id: ResourceId, format: ArchiveFormat): Id {\n return `id:${String(BigInt(id))}-${format}`;\n}\n\n// export function\n"],"mappings":";AAMA,SAAgB,MAAM,IAAgB,QAA2B;AAC/D,QAAO,MAAM,OAAO,OAAO,GAAG,CAAC,CAAC,GAAG"}
@@ -1,18 +1,14 @@
1
- 'use strict';
2
-
3
- var plTree = require('@milaboratories/pl-tree');
1
+ const require_runtime = require('../../_virtual/_rolldown/runtime.cjs');
2
+ let _milaboratories_pl_tree = require("@milaboratories/pl-tree");
4
3
 
4
+ //#region src/drivers/download_blob_url/snapshot.ts
5
5
  /** We need only resource type for this driver. */
6
- const DownloadableBlobSnapshot = plTree.rsSchema({});
6
+ const DownloadableBlobSnapshot = (0, _milaboratories_pl_tree.rsSchema)({});
7
7
  function makeDownloadableBlobSnapshot(entryOrAccessor, ctx) {
8
- const node = plTree.isPlTreeEntry(entryOrAccessor)
9
- ? ctx.accessor(entryOrAccessor).node()
10
- : plTree.isPlTreeEntryAccessor(entryOrAccessor)
11
- ? entryOrAccessor.node()
12
- : entryOrAccessor;
13
- return plTree.makeResourceSnapshot(node, DownloadableBlobSnapshot);
8
+ return (0, _milaboratories_pl_tree.makeResourceSnapshot)((0, _milaboratories_pl_tree.isPlTreeEntry)(entryOrAccessor) ? ctx.accessor(entryOrAccessor).node() : (0, _milaboratories_pl_tree.isPlTreeEntryAccessor)(entryOrAccessor) ? entryOrAccessor.node() : entryOrAccessor, DownloadableBlobSnapshot);
14
9
  }
15
10
 
11
+ //#endregion
16
12
  exports.DownloadableBlobSnapshot = DownloadableBlobSnapshot;
17
13
  exports.makeDownloadableBlobSnapshot = makeDownloadableBlobSnapshot;
18
- //# sourceMappingURL=snapshot.cjs.map
14
+ //# sourceMappingURL=snapshot.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"snapshot.cjs","sources":["../../../src/drivers/download_blob_url/snapshot.ts"],"sourcesContent":["import type { ComputableCtx } from \"@milaboratories/computable\";\nimport type {\n InferSnapshot,\n PlTreeEntry,\n PlTreeEntryAccessor,\n PlTreeNodeAccessor,\n} from \"@milaboratories/pl-tree\";\nimport {\n isPlTreeEntry,\n isPlTreeEntryAccessor,\n makeResourceSnapshot,\n rsSchema,\n} from \"@milaboratories/pl-tree\";\n\n/** We need only resource type for this driver. */\nexport const DownloadableBlobSnapshot = rsSchema({});\nexport type DownloadableBlobSnapshot = InferSnapshot<typeof DownloadableBlobSnapshot>;\n\nexport function makeDownloadableBlobSnapshot(\n entryOrAccessor: PlTreeEntry | PlTreeNodeAccessor | PlTreeEntryAccessor,\n ctx: ComputableCtx,\n): DownloadableBlobSnapshot {\n const node = isPlTreeEntry(entryOrAccessor)\n ? ctx.accessor(entryOrAccessor).node()\n : isPlTreeEntryAccessor(entryOrAccessor)\n ? entryOrAccessor.node()\n : entryOrAccessor;\n\n return makeResourceSnapshot(node, DownloadableBlobSnapshot);\n}\n"],"names":["rsSchema","isPlTreeEntry","isPlTreeEntryAccessor","makeResourceSnapshot"],"mappings":";;;;AAcA;MACa,wBAAwB,GAAGA,eAAQ,CAAC,EAAE;AAG7C,SAAU,4BAA4B,CAC1C,eAAuE,EACvE,GAAkB,EAAA;AAElB,IAAA,MAAM,IAAI,GAAGC,oBAAa,CAAC,eAAe;UACtC,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,IAAI;AACpC,UAAEC,4BAAqB,CAAC,eAAe;AACrC,cAAE,eAAe,CAAC,IAAI;cACpB,eAAe;AAErB,IAAA,OAAOC,2BAAoB,CAAC,IAAI,EAAE,wBAAwB,CAAC;AAC7D;;;;;"}
1
+ {"version":3,"file":"snapshot.cjs","names":[],"sources":["../../../src/drivers/download_blob_url/snapshot.ts"],"sourcesContent":["import type { ComputableCtx } from \"@milaboratories/computable\";\nimport type {\n InferSnapshot,\n PlTreeEntry,\n PlTreeEntryAccessor,\n PlTreeNodeAccessor,\n} from \"@milaboratories/pl-tree\";\nimport {\n isPlTreeEntry,\n isPlTreeEntryAccessor,\n makeResourceSnapshot,\n rsSchema,\n} from \"@milaboratories/pl-tree\";\n\n/** We need only resource type for this driver. */\nexport const DownloadableBlobSnapshot = rsSchema({});\nexport type DownloadableBlobSnapshot = InferSnapshot<typeof DownloadableBlobSnapshot>;\n\nexport function makeDownloadableBlobSnapshot(\n entryOrAccessor: PlTreeEntry | PlTreeNodeAccessor | PlTreeEntryAccessor,\n ctx: ComputableCtx,\n): DownloadableBlobSnapshot {\n const node = isPlTreeEntry(entryOrAccessor)\n ? ctx.accessor(entryOrAccessor).node()\n : isPlTreeEntryAccessor(entryOrAccessor)\n ? entryOrAccessor.node()\n : entryOrAccessor;\n\n return makeResourceSnapshot(node, DownloadableBlobSnapshot);\n}\n"],"mappings":";;;;;AAeA,MAAa,iEAAoC,EAAE,CAAC;AAGpD,SAAgB,6BACd,iBACA,KAC0B;AAO1B,qGAN2B,gBAAgB,GACvC,IAAI,SAAS,gBAAgB,CAAC,MAAM,sDACd,gBAAgB,GACpC,gBAAgB,MAAM,GACtB,iBAE4B,yBAAyB"}
@@ -1,7 +1,12 @@
1
- import type { ComputableCtx } from "@milaboratories/computable";
2
- import type { InferSnapshot, PlTreeEntry, PlTreeEntryAccessor, PlTreeNodeAccessor } from "@milaboratories/pl-tree";
1
+ import { ComputableCtx } from "@milaboratories/computable";
2
+ import * as _milaboratories_pl_tree0 from "@milaboratories/pl-tree";
3
+ import { InferSnapshot, PlTreeEntry, PlTreeEntryAccessor, PlTreeNodeAccessor } from "@milaboratories/pl-tree";
4
+
5
+ //#region src/drivers/download_blob_url/snapshot.d.ts
3
6
  /** We need only resource type for this driver. */
4
- export declare const DownloadableBlobSnapshot: import("@milaboratories/pl-tree").ResourceSnapshotSchema<undefined, undefined, undefined>;
5
- export type DownloadableBlobSnapshot = InferSnapshot<typeof DownloadableBlobSnapshot>;
6
- export declare function makeDownloadableBlobSnapshot(entryOrAccessor: PlTreeEntry | PlTreeNodeAccessor | PlTreeEntryAccessor, ctx: ComputableCtx): DownloadableBlobSnapshot;
7
+ declare const DownloadableBlobSnapshot: _milaboratories_pl_tree0.ResourceSnapshotSchema<undefined, undefined, undefined>;
8
+ type DownloadableBlobSnapshot = InferSnapshot<typeof DownloadableBlobSnapshot>;
9
+ declare function makeDownloadableBlobSnapshot(entryOrAccessor: PlTreeEntry | PlTreeNodeAccessor | PlTreeEntryAccessor, ctx: ComputableCtx): DownloadableBlobSnapshot;
10
+ //#endregion
11
+ export { DownloadableBlobSnapshot, makeDownloadableBlobSnapshot };
7
12
  //# sourceMappingURL=snapshot.d.ts.map
@@ -1,15 +1,12 @@
1
- import { rsSchema, isPlTreeEntry, isPlTreeEntryAccessor, makeResourceSnapshot } from '@milaboratories/pl-tree';
1
+ import { isPlTreeEntry, isPlTreeEntryAccessor, makeResourceSnapshot, rsSchema } from "@milaboratories/pl-tree";
2
2
 
3
+ //#region src/drivers/download_blob_url/snapshot.ts
3
4
  /** We need only resource type for this driver. */
4
5
  const DownloadableBlobSnapshot = rsSchema({});
5
6
  function makeDownloadableBlobSnapshot(entryOrAccessor, ctx) {
6
- const node = isPlTreeEntry(entryOrAccessor)
7
- ? ctx.accessor(entryOrAccessor).node()
8
- : isPlTreeEntryAccessor(entryOrAccessor)
9
- ? entryOrAccessor.node()
10
- : entryOrAccessor;
11
- return makeResourceSnapshot(node, DownloadableBlobSnapshot);
7
+ return makeResourceSnapshot(isPlTreeEntry(entryOrAccessor) ? ctx.accessor(entryOrAccessor).node() : isPlTreeEntryAccessor(entryOrAccessor) ? entryOrAccessor.node() : entryOrAccessor, DownloadableBlobSnapshot);
12
8
  }
13
9
 
10
+ //#endregion
14
11
  export { DownloadableBlobSnapshot, makeDownloadableBlobSnapshot };
15
- //# sourceMappingURL=snapshot.js.map
12
+ //# sourceMappingURL=snapshot.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"snapshot.js","sources":["../../../src/drivers/download_blob_url/snapshot.ts"],"sourcesContent":["import type { ComputableCtx } from \"@milaboratories/computable\";\nimport type {\n InferSnapshot,\n PlTreeEntry,\n PlTreeEntryAccessor,\n PlTreeNodeAccessor,\n} from \"@milaboratories/pl-tree\";\nimport {\n isPlTreeEntry,\n isPlTreeEntryAccessor,\n makeResourceSnapshot,\n rsSchema,\n} from \"@milaboratories/pl-tree\";\n\n/** We need only resource type for this driver. */\nexport const DownloadableBlobSnapshot = rsSchema({});\nexport type DownloadableBlobSnapshot = InferSnapshot<typeof DownloadableBlobSnapshot>;\n\nexport function makeDownloadableBlobSnapshot(\n entryOrAccessor: PlTreeEntry | PlTreeNodeAccessor | PlTreeEntryAccessor,\n ctx: ComputableCtx,\n): DownloadableBlobSnapshot {\n const node = isPlTreeEntry(entryOrAccessor)\n ? ctx.accessor(entryOrAccessor).node()\n : isPlTreeEntryAccessor(entryOrAccessor)\n ? entryOrAccessor.node()\n : entryOrAccessor;\n\n return makeResourceSnapshot(node, DownloadableBlobSnapshot);\n}\n"],"names":[],"mappings":";;AAcA;MACa,wBAAwB,GAAG,QAAQ,CAAC,EAAE;AAG7C,SAAU,4BAA4B,CAC1C,eAAuE,EACvE,GAAkB,EAAA;AAElB,IAAA,MAAM,IAAI,GAAG,aAAa,CAAC,eAAe;UACtC,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,IAAI;AACpC,UAAE,qBAAqB,CAAC,eAAe;AACrC,cAAE,eAAe,CAAC,IAAI;cACpB,eAAe;AAErB,IAAA,OAAO,oBAAoB,CAAC,IAAI,EAAE,wBAAwB,CAAC;AAC7D;;;;"}
1
+ {"version":3,"file":"snapshot.js","names":[],"sources":["../../../src/drivers/download_blob_url/snapshot.ts"],"sourcesContent":["import type { ComputableCtx } from \"@milaboratories/computable\";\nimport type {\n InferSnapshot,\n PlTreeEntry,\n PlTreeEntryAccessor,\n PlTreeNodeAccessor,\n} from \"@milaboratories/pl-tree\";\nimport {\n isPlTreeEntry,\n isPlTreeEntryAccessor,\n makeResourceSnapshot,\n rsSchema,\n} from \"@milaboratories/pl-tree\";\n\n/** We need only resource type for this driver. */\nexport const DownloadableBlobSnapshot = rsSchema({});\nexport type DownloadableBlobSnapshot = InferSnapshot<typeof DownloadableBlobSnapshot>;\n\nexport function makeDownloadableBlobSnapshot(\n entryOrAccessor: PlTreeEntry | PlTreeNodeAccessor | PlTreeEntryAccessor,\n ctx: ComputableCtx,\n): DownloadableBlobSnapshot {\n const node = isPlTreeEntry(entryOrAccessor)\n ? ctx.accessor(entryOrAccessor).node()\n : isPlTreeEntryAccessor(entryOrAccessor)\n ? entryOrAccessor.node()\n : entryOrAccessor;\n\n return makeResourceSnapshot(node, DownloadableBlobSnapshot);\n}\n"],"mappings":";;;;AAeA,MAAa,2BAA2B,SAAS,EAAE,CAAC;AAGpD,SAAgB,6BACd,iBACA,KAC0B;AAO1B,QAAO,qBANM,cAAc,gBAAgB,GACvC,IAAI,SAAS,gBAAgB,CAAC,MAAM,GACpC,sBAAsB,gBAAgB,GACpC,gBAAgB,MAAM,GACtB,iBAE4B,yBAAyB"}