@milaboratories/pl-drivers 1.11.59 → 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,152 +1,130 @@
1
- import { RestAPI, stringifyWithResourceId, addRTypeToMetadata, createRTypeRoutingHeader } from '@milaboratories/pl-client';
2
- import { PerfTimer } from '@milaboratories/helpers';
3
- import { ConcurrencyLimitingExecutor } from '@milaboratories/ts-helpers';
4
- import * as fs from 'node:fs';
5
- import * as fsp from 'node:fs/promises';
6
- import * as path from 'node:path';
7
- import { Readable } from 'node:stream';
8
- import { RemoteFileDownloader } from '../helpers/download.js';
9
- import { validateAbsolute } from '../helpers/validate.js';
10
- import { DownloadClient } from '../proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.client.js';
1
+ import { RemoteFileDownloader } from "../helpers/download.js";
2
+ import { validateAbsolute } from "../helpers/validate.js";
3
+ import { DownloadClient } from "../proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.client.js";
4
+ import { RestAPI, addRTypeToMetadata, createRTypeRoutingHeader, stringifyWithResourceId } from "@milaboratories/pl-client";
5
+ import * as fsp from "node:fs/promises";
6
+ import { ConcurrencyLimitingExecutor } from "@milaboratories/ts-helpers";
7
+ import { PerfTimer } from "@milaboratories/helpers";
8
+ import * as fs$1 from "node:fs";
9
+ import * as path$1 from "node:path";
10
+ import { Readable } from "node:stream";
11
11
 
12
+ //#region src/clients/download.ts
12
13
  /** Gets URLs for downloading from pl-core, parses them and reads or downloads
13
- * files locally and from the web. */
14
- class ClientDownload {
15
- httpClient;
16
- logger;
17
- wire;
18
- remoteFileDownloader;
19
- /** Helps to find a storage root directory by a storage id from URL scheme. */
20
- localStorageIdsToRoot;
21
- /** Concurrency limiter for local file reads - limit to 32 parallel reads */
22
- localFileReadLimiter = new ConcurrencyLimitingExecutor(32);
23
- constructor(wireClientProviderFactory, httpClient, logger,
24
- /** Pl storages available locally */
25
- localProjections) {
26
- this.httpClient = httpClient;
27
- this.logger = logger;
28
- this.wire = wireClientProviderFactory.createWireClientProvider((wireConn) => {
29
- if (wireConn.type === "grpc") {
30
- return new DownloadClient(wireConn.Transport);
31
- }
32
- else {
33
- return RestAPI.createClient({
34
- hostAndPort: wireConn.Config.hostAndPort,
35
- ssl: wireConn.Config.ssl,
36
- dispatcher: wireConn.Dispatcher,
37
- middlewares: wireConn.Middlewares,
38
- });
39
- }
40
- });
41
- this.remoteFileDownloader = new RemoteFileDownloader(httpClient);
42
- this.localStorageIdsToRoot = newLocalStorageIdsToRoot(localProjections);
43
- }
44
- close() { }
45
- /**
46
- * Gets a presign URL and downloads the file.
47
- * An optional range with 2 numbers from what byte and to what byte to download can be provided.
48
- * @param fromBytes - from byte including this byte
49
- * @param toBytes - to byte excluding this byte
50
- */
51
- async withBlobContent(info, options, ops, handler) {
52
- const { downloadUrl, headers } = await this.grpcGetDownloadUrl(info, options, ops.signal);
53
- const remoteHeaders = Object.fromEntries(headers.map(({ name, value }) => [name, value]));
54
- this.logger.info(`blob ${stringifyWithResourceId(info)} download started, ` +
55
- `url: ${downloadUrl}, ` +
56
- `range: ${JSON.stringify(ops.range ?? null)}`);
57
- const timer = PerfTimer.start();
58
- const result = isLocal(downloadUrl)
59
- ? await this.withLocalFileContent(downloadUrl, ops, handler)
60
- : await this.remoteFileDownloader.withContent(downloadUrl, remoteHeaders, ops, handler);
61
- this.logger.info(`blob ${stringifyWithResourceId(info)} download finished, ` + `took: ${timer.elapsed()}`);
62
- return result;
63
- }
64
- async withLocalFileContent(url, ops, handler) {
65
- const { storageId, relativePath } = parseLocalUrl(url);
66
- const fullPath = getFullPath(storageId, this.localStorageIdsToRoot, relativePath);
67
- return await this.localFileReadLimiter.run(async () => {
68
- const readOps = {
69
- start: ops.range?.from,
70
- end: ops.range?.to !== undefined ? ops.range.to - 1 : undefined,
71
- signal: ops.signal,
72
- };
73
- let stream;
74
- let handlerSuccess = false;
75
- try {
76
- const stat = await fsp.stat(fullPath);
77
- stream = fs.createReadStream(fullPath, readOps);
78
- const webStream = Readable.toWeb(stream);
79
- const result = await handler(webStream, stat.size);
80
- handlerSuccess = true;
81
- return result;
82
- }
83
- catch (error) {
84
- // Cleanup on error (including handler errors)
85
- if (!handlerSuccess && stream && !stream.destroyed) {
86
- stream.destroy();
87
- }
88
- throw error;
89
- }
90
- });
91
- }
92
- async grpcGetDownloadUrl({ id, type }, options, signal) {
93
- const withAbort = options ?? {};
94
- withAbort.abort = signal;
95
- const client = this.wire.get();
96
- if (client instanceof DownloadClient) {
97
- return await client.getDownloadURL({ resourceId: id, isInternalUse: false }, addRTypeToMetadata(type, withAbort)).response;
98
- }
99
- else {
100
- return (await client.POST("/v1/get-download-url", {
101
- body: {
102
- resourceId: id.toString(),
103
- isInternalUse: false,
104
- },
105
- headers: { ...createRTypeRoutingHeader(type) },
106
- })).data;
107
- }
108
- }
109
- }
14
+ * files locally and from the web. */
15
+ var ClientDownload = class {
16
+ wire;
17
+ remoteFileDownloader;
18
+ /** Helps to find a storage root directory by a storage id from URL scheme. */
19
+ localStorageIdsToRoot;
20
+ /** Concurrency limiter for local file reads - limit to 32 parallel reads */
21
+ localFileReadLimiter = new ConcurrencyLimitingExecutor(32);
22
+ constructor(wireClientProviderFactory, httpClient, logger, localProjections) {
23
+ this.httpClient = httpClient;
24
+ this.logger = logger;
25
+ this.wire = wireClientProviderFactory.createWireClientProvider((wireConn) => {
26
+ if (wireConn.type === "grpc") return new DownloadClient(wireConn.Transport);
27
+ else return RestAPI.createClient({
28
+ hostAndPort: wireConn.Config.hostAndPort,
29
+ ssl: wireConn.Config.ssl,
30
+ dispatcher: wireConn.Dispatcher,
31
+ middlewares: wireConn.Middlewares
32
+ });
33
+ });
34
+ this.remoteFileDownloader = new RemoteFileDownloader(httpClient);
35
+ this.localStorageIdsToRoot = newLocalStorageIdsToRoot(localProjections);
36
+ }
37
+ close() {}
38
+ /**
39
+ * Gets a presign URL and downloads the file.
40
+ * An optional range with 2 numbers from what byte and to what byte to download can be provided.
41
+ * @param fromBytes - from byte including this byte
42
+ * @param toBytes - to byte excluding this byte
43
+ */
44
+ async withBlobContent(info, options, ops, handler) {
45
+ const { downloadUrl, headers } = await this.grpcGetDownloadUrl(info, options, ops.signal);
46
+ const remoteHeaders = Object.fromEntries(headers.map(({ name, value }) => [name, value]));
47
+ this.logger.info(`blob ${stringifyWithResourceId(info)} download started, url: ${downloadUrl}, range: ${JSON.stringify(ops.range ?? null)}`);
48
+ const timer = PerfTimer.start();
49
+ const result = isLocal(downloadUrl) ? await this.withLocalFileContent(downloadUrl, ops, handler) : await this.remoteFileDownloader.withContent(downloadUrl, remoteHeaders, ops, handler);
50
+ this.logger.info(`blob ${stringifyWithResourceId(info)} download finished, took: ${timer.elapsed()}`);
51
+ return result;
52
+ }
53
+ async withLocalFileContent(url, ops, handler) {
54
+ const { storageId, relativePath } = parseLocalUrl(url);
55
+ const fullPath = getFullPath(storageId, this.localStorageIdsToRoot, relativePath);
56
+ return await this.localFileReadLimiter.run(async () => {
57
+ const readOps = {
58
+ start: ops.range?.from,
59
+ end: ops.range?.to !== void 0 ? ops.range.to - 1 : void 0,
60
+ signal: ops.signal
61
+ };
62
+ let stream;
63
+ let handlerSuccess = false;
64
+ try {
65
+ const stat = await fsp.stat(fullPath);
66
+ stream = fs$1.createReadStream(fullPath, readOps);
67
+ const result = await handler(Readable.toWeb(stream), stat.size);
68
+ handlerSuccess = true;
69
+ return result;
70
+ } catch (error) {
71
+ if (!handlerSuccess && stream && !stream.destroyed) stream.destroy();
72
+ throw error;
73
+ }
74
+ });
75
+ }
76
+ async grpcGetDownloadUrl({ id, type }, options, signal) {
77
+ const withAbort = options ?? {};
78
+ withAbort.abort = signal;
79
+ const client = this.wire.get();
80
+ if (client instanceof DownloadClient) return await client.getDownloadURL({
81
+ resourceId: id,
82
+ isInternalUse: false
83
+ }, addRTypeToMetadata(type, withAbort)).response;
84
+ else return (await client.POST("/v1/get-download-url", {
85
+ body: {
86
+ resourceId: id.toString(),
87
+ isInternalUse: false
88
+ },
89
+ headers: { ...createRTypeRoutingHeader(type) }
90
+ })).data;
91
+ }
92
+ };
110
93
  function parseLocalUrl(url) {
111
- const parsed = new URL(url);
112
- if (parsed.pathname == "")
113
- throw new WrongLocalFileUrl(`url for local filepath ${url} does not match url scheme`);
114
- return {
115
- storageId: parsed.host,
116
- relativePath: decodeURIComponent(parsed.pathname.slice(1)),
117
- };
94
+ const parsed = new URL(url);
95
+ if (parsed.pathname == "") throw new WrongLocalFileUrl(`url for local filepath ${url} does not match url scheme`);
96
+ return {
97
+ storageId: parsed.host,
98
+ relativePath: decodeURIComponent(parsed.pathname.slice(1))
99
+ };
118
100
  }
119
101
  function getFullPath(storageId, localStorageIdsToRoot, relativePath) {
120
- const root = localStorageIdsToRoot.get(storageId);
121
- if (root === undefined)
122
- throw new UnknownStorageError(`Unknown storage location: ${storageId}`);
123
- if (root === "")
124
- return relativePath;
125
- return path.join(root, relativePath);
102
+ const root = localStorageIdsToRoot.get(storageId);
103
+ if (root === void 0) throw new UnknownStorageError(`Unknown storage location: ${storageId}`);
104
+ if (root === "") return relativePath;
105
+ return path$1.join(root, relativePath);
126
106
  }
127
107
  const storageProtocol = "storage://";
128
108
  function isLocal(url) {
129
- return url.startsWith(storageProtocol);
109
+ return url.startsWith(storageProtocol);
130
110
  }
131
111
  /** Throws when a local URL have invalid scheme. */
132
- class WrongLocalFileUrl extends Error {
133
- name = "WrongLocalFileUrl";
134
- }
112
+ var WrongLocalFileUrl = class extends Error {
113
+ name = "WrongLocalFileUrl";
114
+ };
135
115
  /** Happens when a storage for a local file can't be found. */
136
- class UnknownStorageError extends Error {
137
- name = "UnknownStorageError";
138
- }
116
+ var UnknownStorageError = class extends Error {
117
+ name = "UnknownStorageError";
118
+ };
139
119
  function newLocalStorageIdsToRoot(projections) {
140
- const idToRoot = new Map();
141
- for (const lp of projections) {
142
- // Empty string means no prefix, i.e. any file on this machine can be got from the storage.
143
- if (lp.localPath !== "") {
144
- validateAbsolute(lp.localPath);
145
- }
146
- idToRoot.set(lp.storageId, lp.localPath);
147
- }
148
- return idToRoot;
120
+ const idToRoot = /* @__PURE__ */ new Map();
121
+ for (const lp of projections) {
122
+ if (lp.localPath !== "") validateAbsolute(lp.localPath);
123
+ idToRoot.set(lp.storageId, lp.localPath);
124
+ }
125
+ return idToRoot;
149
126
  }
150
127
 
128
+ //#endregion
151
129
  export { ClientDownload, UnknownStorageError, WrongLocalFileUrl, getFullPath, newLocalStorageIdsToRoot, parseLocalUrl };
152
- //# sourceMappingURL=download.js.map
130
+ //# sourceMappingURL=download.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"download.js","sources":["../../src/clients/download.ts"],"sourcesContent":["/* eslint-disable n/no-unsupported-features/node-builtins */\nimport type { WireClientProvider, WireClientProviderFactory } from \"@milaboratories/pl-client\";\nimport {\n addRTypeToMetadata,\n stringifyWithResourceId,\n RestAPI,\n createRTypeRoutingHeader,\n} from \"@milaboratories/pl-client\";\nimport type { ResourceInfo } from \"@milaboratories/pl-tree\";\nimport { PerfTimer } from \"@milaboratories/helpers\";\nimport type { MiLogger } from \"@milaboratories/ts-helpers\";\nimport { ConcurrencyLimitingExecutor } from \"@milaboratories/ts-helpers\";\nimport type { RpcOptions } from \"@protobuf-ts/runtime-rpc\";\nimport * as fs from \"node:fs\";\nimport * as fsp from \"node:fs/promises\";\nimport * as path from \"node:path\";\nimport { Readable } from \"node:stream\";\nimport type { Dispatcher } from \"undici\";\nimport type { LocalStorageProjection } from \"../drivers/types\";\nimport { type ContentHandler, RemoteFileDownloader } from \"../helpers/download\";\nimport { validateAbsolute } from \"../helpers/validate\";\nimport type { DownloadAPI_GetDownloadURL_Response } from \"../proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol\";\nimport { DownloadClient } from \"../proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.client\";\nimport type { DownloadApiPaths, DownloadRestClientType } from \"../proto-rest\";\nimport { type GetContentOptions } from \"@milaboratories/pl-model-common\";\n\n/** Gets URLs for downloading from pl-core, parses them and reads or downloads\n * files locally and from the web. */\nexport class ClientDownload {\n public readonly wire: WireClientProvider<DownloadRestClientType | DownloadClient>;\n private readonly remoteFileDownloader: RemoteFileDownloader;\n\n /** Helps to find a storage root directory by a storage id from URL scheme. */\n private readonly localStorageIdsToRoot: Map<string, string>;\n\n /** Concurrency limiter for local file reads - limit to 32 parallel reads */\n private readonly localFileReadLimiter = new ConcurrencyLimitingExecutor(32);\n\n constructor(\n wireClientProviderFactory: WireClientProviderFactory,\n public readonly httpClient: Dispatcher,\n public readonly logger: MiLogger,\n /** Pl storages available locally */\n localProjections: LocalStorageProjection[],\n ) {\n this.wire = wireClientProviderFactory.createWireClientProvider((wireConn) => {\n if (wireConn.type === \"grpc\") {\n return new DownloadClient(wireConn.Transport);\n } else {\n return RestAPI.createClient<DownloadApiPaths>({\n hostAndPort: wireConn.Config.hostAndPort,\n ssl: wireConn.Config.ssl,\n dispatcher: wireConn.Dispatcher,\n middlewares: wireConn.Middlewares,\n });\n }\n });\n this.remoteFileDownloader = new RemoteFileDownloader(httpClient);\n this.localStorageIdsToRoot = newLocalStorageIdsToRoot(localProjections);\n }\n\n close() {}\n\n /**\n * Gets a presign URL and downloads the file.\n * An optional range with 2 numbers from what byte and to what byte to download can be provided.\n * @param fromBytes - from byte including this byte\n * @param toBytes - to byte excluding this byte\n */\n async withBlobContent<T>(\n info: ResourceInfo,\n options: RpcOptions | undefined,\n ops: GetContentOptions,\n handler: ContentHandler<T>,\n ): Promise<T> {\n const { downloadUrl, headers } = await this.grpcGetDownloadUrl(info, options, ops.signal);\n\n const remoteHeaders = Object.fromEntries(headers.map(({ name, value }) => [name, value]));\n this.logger.info(\n `blob ${stringifyWithResourceId(info)} download started, ` +\n `url: ${downloadUrl}, ` +\n `range: ${JSON.stringify(ops.range ?? null)}`,\n );\n\n const timer = PerfTimer.start();\n const result = isLocal(downloadUrl)\n ? await this.withLocalFileContent(downloadUrl, ops, handler)\n : await this.remoteFileDownloader.withContent(downloadUrl, remoteHeaders, ops, handler);\n\n this.logger.info(\n `blob ${stringifyWithResourceId(info)} download finished, ` + `took: ${timer.elapsed()}`,\n );\n return result;\n }\n\n async withLocalFileContent<T>(\n url: string,\n ops: GetContentOptions,\n handler: ContentHandler<T>,\n ): Promise<T> {\n const { storageId, relativePath } = parseLocalUrl(url);\n const fullPath = getFullPath(storageId, this.localStorageIdsToRoot, relativePath);\n\n return await this.localFileReadLimiter.run(async () => {\n const readOps = {\n start: ops.range?.from,\n end: ops.range?.to !== undefined ? ops.range.to - 1 : undefined,\n signal: ops.signal,\n };\n let stream: fs.ReadStream | undefined;\n let handlerSuccess = false;\n\n try {\n const stat = await fsp.stat(fullPath);\n stream = fs.createReadStream(fullPath, readOps);\n const webStream = Readable.toWeb(stream);\n\n const result = await handler(webStream, stat.size);\n handlerSuccess = true;\n return result;\n } catch (error) {\n // Cleanup on error (including handler errors)\n if (!handlerSuccess && stream && !stream.destroyed) {\n stream.destroy();\n }\n throw error;\n }\n });\n }\n\n private async grpcGetDownloadUrl(\n { id, type }: ResourceInfo,\n options?: RpcOptions,\n signal?: AbortSignal,\n ): Promise<DownloadAPI_GetDownloadURL_Response> {\n const withAbort = options ?? {};\n withAbort.abort = signal;\n\n const client = this.wire.get();\n if (client instanceof DownloadClient) {\n return await client.getDownloadURL(\n { resourceId: id, isInternalUse: false },\n addRTypeToMetadata(type, withAbort),\n ).response;\n } else {\n return (\n await client.POST(\"/v1/get-download-url\", {\n body: {\n resourceId: id.toString(),\n isInternalUse: false,\n },\n headers: { ...createRTypeRoutingHeader(type) },\n })\n ).data!;\n }\n }\n}\n\nexport function parseLocalUrl(url: string) {\n const parsed = new URL(url);\n if (parsed.pathname == \"\")\n throw new WrongLocalFileUrl(`url for local filepath ${url} does not match url scheme`);\n\n return {\n storageId: parsed.host,\n relativePath: decodeURIComponent(parsed.pathname.slice(1)),\n };\n}\n\nexport function getFullPath(\n storageId: string,\n localStorageIdsToRoot: Map<string, string>,\n relativePath: string,\n) {\n const root = localStorageIdsToRoot.get(storageId);\n if (root === undefined) throw new UnknownStorageError(`Unknown storage location: ${storageId}`);\n\n if (root === \"\") return relativePath;\n\n return path.join(root, relativePath);\n}\n\nconst storageProtocol = \"storage://\";\nfunction isLocal(url: string) {\n return url.startsWith(storageProtocol);\n}\n\n/** Throws when a local URL have invalid scheme. */\nexport class WrongLocalFileUrl extends Error {\n name = \"WrongLocalFileUrl\";\n}\n\n/** Happens when a storage for a local file can't be found. */\nexport class UnknownStorageError extends Error {\n name = \"UnknownStorageError\";\n}\n\nexport function newLocalStorageIdsToRoot(projections: LocalStorageProjection[]) {\n const idToRoot: Map<string, string> = new Map();\n for (const lp of projections) {\n // Empty string means no prefix, i.e. any file on this machine can be got from the storage.\n if (lp.localPath !== \"\") {\n validateAbsolute(lp.localPath);\n }\n idToRoot.set(lp.storageId, lp.localPath);\n }\n\n return idToRoot;\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"download.js","names":["fs","path"],"sources":["../../src/clients/download.ts"],"sourcesContent":["/* eslint-disable n/no-unsupported-features/node-builtins */\nimport type { WireClientProvider, WireClientProviderFactory } from \"@milaboratories/pl-client\";\nimport {\n addRTypeToMetadata,\n stringifyWithResourceId,\n RestAPI,\n createRTypeRoutingHeader,\n} from \"@milaboratories/pl-client\";\nimport type { ResourceInfo } from \"@milaboratories/pl-tree\";\nimport { PerfTimer } from \"@milaboratories/helpers\";\nimport type { MiLogger } from \"@milaboratories/ts-helpers\";\nimport { ConcurrencyLimitingExecutor } from \"@milaboratories/ts-helpers\";\nimport type { RpcOptions } from \"@protobuf-ts/runtime-rpc\";\nimport * as fs from \"node:fs\";\nimport * as fsp from \"node:fs/promises\";\nimport * as path from \"node:path\";\nimport { Readable } from \"node:stream\";\nimport type { Dispatcher } from \"undici\";\nimport type { LocalStorageProjection } from \"../drivers/types\";\nimport { type ContentHandler, RemoteFileDownloader } from \"../helpers/download\";\nimport { validateAbsolute } from \"../helpers/validate\";\nimport type { DownloadAPI_GetDownloadURL_Response } from \"../proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol\";\nimport { DownloadClient } from \"../proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.client\";\nimport type { DownloadApiPaths, DownloadRestClientType } from \"../proto-rest\";\nimport { type GetContentOptions } from \"@milaboratories/pl-model-common\";\n\n/** Gets URLs for downloading from pl-core, parses them and reads or downloads\n * files locally and from the web. */\nexport class ClientDownload {\n public readonly wire: WireClientProvider<DownloadRestClientType | DownloadClient>;\n private readonly remoteFileDownloader: RemoteFileDownloader;\n\n /** Helps to find a storage root directory by a storage id from URL scheme. */\n private readonly localStorageIdsToRoot: Map<string, string>;\n\n /** Concurrency limiter for local file reads - limit to 32 parallel reads */\n private readonly localFileReadLimiter = new ConcurrencyLimitingExecutor(32);\n\n constructor(\n wireClientProviderFactory: WireClientProviderFactory,\n public readonly httpClient: Dispatcher,\n public readonly logger: MiLogger,\n /** Pl storages available locally */\n localProjections: LocalStorageProjection[],\n ) {\n this.wire = wireClientProviderFactory.createWireClientProvider((wireConn) => {\n if (wireConn.type === \"grpc\") {\n return new DownloadClient(wireConn.Transport);\n } else {\n return RestAPI.createClient<DownloadApiPaths>({\n hostAndPort: wireConn.Config.hostAndPort,\n ssl: wireConn.Config.ssl,\n dispatcher: wireConn.Dispatcher,\n middlewares: wireConn.Middlewares,\n });\n }\n });\n this.remoteFileDownloader = new RemoteFileDownloader(httpClient);\n this.localStorageIdsToRoot = newLocalStorageIdsToRoot(localProjections);\n }\n\n close() {}\n\n /**\n * Gets a presign URL and downloads the file.\n * An optional range with 2 numbers from what byte and to what byte to download can be provided.\n * @param fromBytes - from byte including this byte\n * @param toBytes - to byte excluding this byte\n */\n async withBlobContent<T>(\n info: ResourceInfo,\n options: RpcOptions | undefined,\n ops: GetContentOptions,\n handler: ContentHandler<T>,\n ): Promise<T> {\n const { downloadUrl, headers } = await this.grpcGetDownloadUrl(info, options, ops.signal);\n\n const remoteHeaders = Object.fromEntries(headers.map(({ name, value }) => [name, value]));\n this.logger.info(\n `blob ${stringifyWithResourceId(info)} download started, ` +\n `url: ${downloadUrl}, ` +\n `range: ${JSON.stringify(ops.range ?? null)}`,\n );\n\n const timer = PerfTimer.start();\n const result = isLocal(downloadUrl)\n ? await this.withLocalFileContent(downloadUrl, ops, handler)\n : await this.remoteFileDownloader.withContent(downloadUrl, remoteHeaders, ops, handler);\n\n this.logger.info(\n `blob ${stringifyWithResourceId(info)} download finished, ` + `took: ${timer.elapsed()}`,\n );\n return result;\n }\n\n async withLocalFileContent<T>(\n url: string,\n ops: GetContentOptions,\n handler: ContentHandler<T>,\n ): Promise<T> {\n const { storageId, relativePath } = parseLocalUrl(url);\n const fullPath = getFullPath(storageId, this.localStorageIdsToRoot, relativePath);\n\n return await this.localFileReadLimiter.run(async () => {\n const readOps = {\n start: ops.range?.from,\n end: ops.range?.to !== undefined ? ops.range.to - 1 : undefined,\n signal: ops.signal,\n };\n let stream: fs.ReadStream | undefined;\n let handlerSuccess = false;\n\n try {\n const stat = await fsp.stat(fullPath);\n stream = fs.createReadStream(fullPath, readOps);\n const webStream = Readable.toWeb(stream);\n\n const result = await handler(webStream, stat.size);\n handlerSuccess = true;\n return result;\n } catch (error) {\n // Cleanup on error (including handler errors)\n if (!handlerSuccess && stream && !stream.destroyed) {\n stream.destroy();\n }\n throw error;\n }\n });\n }\n\n private async grpcGetDownloadUrl(\n { id, type }: ResourceInfo,\n options?: RpcOptions,\n signal?: AbortSignal,\n ): Promise<DownloadAPI_GetDownloadURL_Response> {\n const withAbort = options ?? {};\n withAbort.abort = signal;\n\n const client = this.wire.get();\n if (client instanceof DownloadClient) {\n return await client.getDownloadURL(\n { resourceId: id, isInternalUse: false },\n addRTypeToMetadata(type, withAbort),\n ).response;\n } else {\n return (\n await client.POST(\"/v1/get-download-url\", {\n body: {\n resourceId: id.toString(),\n isInternalUse: false,\n },\n headers: { ...createRTypeRoutingHeader(type) },\n })\n ).data!;\n }\n }\n}\n\nexport function parseLocalUrl(url: string) {\n const parsed = new URL(url);\n if (parsed.pathname == \"\")\n throw new WrongLocalFileUrl(`url for local filepath ${url} does not match url scheme`);\n\n return {\n storageId: parsed.host,\n relativePath: decodeURIComponent(parsed.pathname.slice(1)),\n };\n}\n\nexport function getFullPath(\n storageId: string,\n localStorageIdsToRoot: Map<string, string>,\n relativePath: string,\n) {\n const root = localStorageIdsToRoot.get(storageId);\n if (root === undefined) throw new UnknownStorageError(`Unknown storage location: ${storageId}`);\n\n if (root === \"\") return relativePath;\n\n return path.join(root, relativePath);\n}\n\nconst storageProtocol = \"storage://\";\nfunction isLocal(url: string) {\n return url.startsWith(storageProtocol);\n}\n\n/** Throws when a local URL have invalid scheme. */\nexport class WrongLocalFileUrl extends Error {\n name = \"WrongLocalFileUrl\";\n}\n\n/** Happens when a storage for a local file can't be found. */\nexport class UnknownStorageError extends Error {\n name = \"UnknownStorageError\";\n}\n\nexport function newLocalStorageIdsToRoot(projections: LocalStorageProjection[]) {\n const idToRoot: Map<string, string> = new Map();\n for (const lp of projections) {\n // Empty string means no prefix, i.e. any file on this machine can be got from the storage.\n if (lp.localPath !== \"\") {\n validateAbsolute(lp.localPath);\n }\n idToRoot.set(lp.storageId, lp.localPath);\n }\n\n return idToRoot;\n}\n"],"mappings":"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"}
@@ -1,85 +1,81 @@
1
- 'use strict';
1
+ const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
2
+ const require_protocol_client = require('../proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.client.cjs');
3
+ let _milaboratories_pl_client = require("@milaboratories/pl-client");
4
+ let _milaboratories_ts_helpers = require("@milaboratories/ts-helpers");
2
5
 
3
- var tsHelpers = require('@milaboratories/ts-helpers');
4
- var plClient = require('@milaboratories/pl-client');
5
- var protocol_client = require('../proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.client.cjs');
6
-
7
- class ClientLogs {
8
- httpClient;
9
- logger;
10
- wire;
11
- constructor(wireClientProviderFactory, httpClient, logger) {
12
- this.httpClient = httpClient;
13
- this.logger = logger;
14
- this.wire = wireClientProviderFactory.createWireClientProvider((wire) => {
15
- if (wire.type === "grpc") {
16
- return new protocol_client.StreamingClient(wire.Transport);
17
- }
18
- return plClient.RestAPI.createClient({
19
- hostAndPort: wire.Config.hostAndPort,
20
- ssl: wire.Config.ssl,
21
- dispatcher: wire.Dispatcher,
22
- middlewares: wire.Middlewares,
23
- });
24
- });
25
- }
26
- close() { }
27
- /** Reads text back and returns the text,
28
- * the new offset
29
- * and the total size of the (currently existing) file. */
30
- async lastLines({ id: rId, type: rType }, lineCount, offsetBytes = 0n, // if 0n, then start from the end.
31
- searchStr, options) {
32
- const client = this.wire.get();
33
- if (client instanceof protocol_client.StreamingClient) {
34
- return (await client.lastLines({ resourceId: rId, lineCount: lineCount, offset: offsetBytes, search: searchStr }, plClient.addRTypeToMetadata(rType, options))).response;
35
- }
36
- const resp = (await client.POST("/v1/last-lines", {
37
- body: {
38
- resourceId: rId.toString(),
39
- lineCount: lineCount,
40
- offset: offsetBytes.toString(),
41
- search: searchStr ?? "",
42
- searchRe: "",
43
- },
44
- headers: { ...plClient.createRTypeRoutingHeader(rType) },
45
- })).data;
46
- return {
47
- data: Buffer.from(resp.data, "base64"),
48
- size: BigInt(resp.size),
49
- newOffset: BigInt(resp.newOffset),
50
- };
51
- }
52
- /** Reads the file forward and returns the text,
53
- * the new offset
54
- * and the total size of the (currently existing) file. */
55
- async readText({ id: rId, type: rType }, lineCount, offsetBytes = 0n, // if 0n, then start from the beginning.
56
- searchStr, options) {
57
- const client = this.wire.get();
58
- if (client instanceof protocol_client.StreamingClient) {
59
- return (await client.readText({
60
- resourceId: tsHelpers.notEmpty(rId),
61
- readLimit: BigInt(lineCount),
62
- offset: offsetBytes,
63
- search: searchStr,
64
- }, plClient.addRTypeToMetadata(rType, options))).response;
65
- }
66
- const resp = (await client.POST("/v1/read/text", {
67
- body: {
68
- resourceId: rId.toString(),
69
- readLimit: lineCount.toString(),
70
- offset: offsetBytes.toString(),
71
- search: searchStr ?? "",
72
- searchRe: "",
73
- },
74
- headers: { ...plClient.createRTypeRoutingHeader(rType) },
75
- })).data;
76
- return {
77
- data: Buffer.from(resp.data, "base64"),
78
- size: BigInt(resp.size),
79
- newOffset: BigInt(resp.newOffset),
80
- };
81
- }
82
- }
6
+ //#region src/clients/logs.ts
7
+ var ClientLogs = class {
8
+ wire;
9
+ constructor(wireClientProviderFactory, httpClient, logger) {
10
+ this.httpClient = httpClient;
11
+ this.logger = logger;
12
+ this.wire = wireClientProviderFactory.createWireClientProvider((wire) => {
13
+ if (wire.type === "grpc") return new require_protocol_client.StreamingClient(wire.Transport);
14
+ return _milaboratories_pl_client.RestAPI.createClient({
15
+ hostAndPort: wire.Config.hostAndPort,
16
+ ssl: wire.Config.ssl,
17
+ dispatcher: wire.Dispatcher,
18
+ middlewares: wire.Middlewares
19
+ });
20
+ });
21
+ }
22
+ close() {}
23
+ /** Reads text back and returns the text,
24
+ * the new offset
25
+ * and the total size of the (currently existing) file. */
26
+ async lastLines({ id: rId, type: rType }, lineCount, offsetBytes = 0n, searchStr, options) {
27
+ const client = this.wire.get();
28
+ if (client instanceof require_protocol_client.StreamingClient) return (await client.lastLines({
29
+ resourceId: rId,
30
+ lineCount,
31
+ offset: offsetBytes,
32
+ search: searchStr
33
+ }, (0, _milaboratories_pl_client.addRTypeToMetadata)(rType, options))).response;
34
+ const resp = (await client.POST("/v1/last-lines", {
35
+ body: {
36
+ resourceId: rId.toString(),
37
+ lineCount,
38
+ offset: offsetBytes.toString(),
39
+ search: searchStr ?? "",
40
+ searchRe: ""
41
+ },
42
+ headers: { ...(0, _milaboratories_pl_client.createRTypeRoutingHeader)(rType) }
43
+ })).data;
44
+ return {
45
+ data: Buffer.from(resp.data, "base64"),
46
+ size: BigInt(resp.size),
47
+ newOffset: BigInt(resp.newOffset)
48
+ };
49
+ }
50
+ /** Reads the file forward and returns the text,
51
+ * the new offset
52
+ * and the total size of the (currently existing) file. */
53
+ async readText({ id: rId, type: rType }, lineCount, offsetBytes = 0n, searchStr, options) {
54
+ const client = this.wire.get();
55
+ if (client instanceof require_protocol_client.StreamingClient) return (await client.readText({
56
+ resourceId: (0, _milaboratories_ts_helpers.notEmpty)(rId),
57
+ readLimit: BigInt(lineCount),
58
+ offset: offsetBytes,
59
+ search: searchStr
60
+ }, (0, _milaboratories_pl_client.addRTypeToMetadata)(rType, options))).response;
61
+ const resp = (await client.POST("/v1/read/text", {
62
+ body: {
63
+ resourceId: rId.toString(),
64
+ readLimit: lineCount.toString(),
65
+ offset: offsetBytes.toString(),
66
+ search: searchStr ?? "",
67
+ searchRe: ""
68
+ },
69
+ headers: { ...(0, _milaboratories_pl_client.createRTypeRoutingHeader)(rType) }
70
+ })).data;
71
+ return {
72
+ data: Buffer.from(resp.data, "base64"),
73
+ size: BigInt(resp.size),
74
+ newOffset: BigInt(resp.newOffset)
75
+ };
76
+ }
77
+ };
83
78
 
79
+ //#endregion
84
80
  exports.ClientLogs = ClientLogs;
85
- //# sourceMappingURL=logs.cjs.map
81
+ //# sourceMappingURL=logs.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"logs.cjs","sources":["../../src/clients/logs.ts"],"sourcesContent":["import type { RpcOptions } from \"@protobuf-ts/runtime-rpc\";\nimport type { MiLogger } from \"@milaboratories/ts-helpers\";\nimport { notEmpty } from \"@milaboratories/ts-helpers\";\nimport type { Dispatcher } from \"undici\";\nimport type { WireClientProvider, WireClientProviderFactory } from \"@milaboratories/pl-client\";\nimport { addRTypeToMetadata, createRTypeRoutingHeader, RestAPI } from \"@milaboratories/pl-client\";\nimport type { StreamingAPI_Response } from \"../proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol\";\nimport { StreamingClient } from \"../proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.client\";\nimport type { StreamingApiPaths, StreamingRestClientType } from \"../proto-rest\";\nimport type { ResourceInfo } from \"@milaboratories/pl-tree\";\n\nexport class ClientLogs {\n public readonly wire: WireClientProvider<StreamingRestClientType | StreamingClient>;\n\n constructor(\n wireClientProviderFactory: WireClientProviderFactory,\n public readonly httpClient: Dispatcher,\n public readonly logger: MiLogger,\n ) {\n this.wire = wireClientProviderFactory.createWireClientProvider((wire) => {\n if (wire.type === \"grpc\") {\n return new StreamingClient(wire.Transport);\n }\n\n return RestAPI.createClient<StreamingApiPaths>({\n hostAndPort: wire.Config.hostAndPort,\n ssl: wire.Config.ssl,\n dispatcher: wire.Dispatcher,\n middlewares: wire.Middlewares,\n });\n });\n }\n\n close() {}\n\n /** Reads text back and returns the text,\n * the new offset\n * and the total size of the (currently existing) file. */\n public async lastLines(\n { id: rId, type: rType }: ResourceInfo,\n lineCount: number,\n offsetBytes: bigint = 0n, // if 0n, then start from the end.\n searchStr?: string,\n options?: RpcOptions,\n ): Promise<StreamingAPI_Response> {\n const client = this.wire.get();\n if (client instanceof StreamingClient) {\n return (\n await client.lastLines(\n { resourceId: rId, lineCount: lineCount, offset: offsetBytes, search: searchStr },\n addRTypeToMetadata(rType, options),\n )\n ).response;\n }\n\n const resp = (\n await client.POST(\"/v1/last-lines\", {\n body: {\n resourceId: rId.toString(),\n lineCount: lineCount,\n offset: offsetBytes.toString(),\n search: searchStr ?? \"\",\n searchRe: \"\",\n },\n headers: { ...createRTypeRoutingHeader(rType) },\n })\n ).data!;\n\n return {\n data: Buffer.from(resp.data, \"base64\"),\n size: BigInt(resp.size),\n newOffset: BigInt(resp.newOffset),\n };\n }\n\n /** Reads the file forward and returns the text,\n * the new offset\n * and the total size of the (currently existing) file. */\n public async readText(\n { id: rId, type: rType }: ResourceInfo,\n lineCount: number,\n offsetBytes: bigint = 0n, // if 0n, then start from the beginning.\n searchStr?: string,\n options?: RpcOptions,\n ): Promise<StreamingAPI_Response> {\n const client = this.wire.get();\n\n if (client instanceof StreamingClient) {\n return (\n await client.readText(\n {\n resourceId: notEmpty(rId),\n readLimit: BigInt(lineCount),\n offset: offsetBytes,\n search: searchStr,\n },\n addRTypeToMetadata(rType, options),\n )\n ).response;\n }\n\n const resp = (\n await client.POST(\"/v1/read/text\", {\n body: {\n resourceId: rId.toString(),\n readLimit: lineCount.toString(),\n offset: offsetBytes.toString(),\n search: searchStr ?? \"\",\n searchRe: \"\",\n },\n headers: { ...createRTypeRoutingHeader(rType) },\n })\n ).data!;\n\n return {\n data: Buffer.from(resp.data, \"base64\"),\n size: BigInt(resp.size),\n newOffset: BigInt(resp.newOffset),\n };\n }\n}\n"],"names":["StreamingClient","RestAPI","addRTypeToMetadata","createRTypeRoutingHeader","notEmpty"],"mappings":"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"}
1
+ {"version":3,"file":"logs.cjs","names":["StreamingClient","RestAPI"],"sources":["../../src/clients/logs.ts"],"sourcesContent":["import type { RpcOptions } from \"@protobuf-ts/runtime-rpc\";\nimport type { MiLogger } from \"@milaboratories/ts-helpers\";\nimport { notEmpty } from \"@milaboratories/ts-helpers\";\nimport type { Dispatcher } from \"undici\";\nimport type { WireClientProvider, WireClientProviderFactory } from \"@milaboratories/pl-client\";\nimport { addRTypeToMetadata, createRTypeRoutingHeader, RestAPI } from \"@milaboratories/pl-client\";\nimport type { StreamingAPI_Response } from \"../proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol\";\nimport { StreamingClient } from \"../proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.client\";\nimport type { StreamingApiPaths, StreamingRestClientType } from \"../proto-rest\";\nimport type { ResourceInfo } from \"@milaboratories/pl-tree\";\n\nexport class ClientLogs {\n public readonly wire: WireClientProvider<StreamingRestClientType | StreamingClient>;\n\n constructor(\n wireClientProviderFactory: WireClientProviderFactory,\n public readonly httpClient: Dispatcher,\n public readonly logger: MiLogger,\n ) {\n this.wire = wireClientProviderFactory.createWireClientProvider((wire) => {\n if (wire.type === \"grpc\") {\n return new StreamingClient(wire.Transport);\n }\n\n return RestAPI.createClient<StreamingApiPaths>({\n hostAndPort: wire.Config.hostAndPort,\n ssl: wire.Config.ssl,\n dispatcher: wire.Dispatcher,\n middlewares: wire.Middlewares,\n });\n });\n }\n\n close() {}\n\n /** Reads text back and returns the text,\n * the new offset\n * and the total size of the (currently existing) file. */\n public async lastLines(\n { id: rId, type: rType }: ResourceInfo,\n lineCount: number,\n offsetBytes: bigint = 0n, // if 0n, then start from the end.\n searchStr?: string,\n options?: RpcOptions,\n ): Promise<StreamingAPI_Response> {\n const client = this.wire.get();\n if (client instanceof StreamingClient) {\n return (\n await client.lastLines(\n { resourceId: rId, lineCount: lineCount, offset: offsetBytes, search: searchStr },\n addRTypeToMetadata(rType, options),\n )\n ).response;\n }\n\n const resp = (\n await client.POST(\"/v1/last-lines\", {\n body: {\n resourceId: rId.toString(),\n lineCount: lineCount,\n offset: offsetBytes.toString(),\n search: searchStr ?? \"\",\n searchRe: \"\",\n },\n headers: { ...createRTypeRoutingHeader(rType) },\n })\n ).data!;\n\n return {\n data: Buffer.from(resp.data, \"base64\"),\n size: BigInt(resp.size),\n newOffset: BigInt(resp.newOffset),\n };\n }\n\n /** Reads the file forward and returns the text,\n * the new offset\n * and the total size of the (currently existing) file. */\n public async readText(\n { id: rId, type: rType }: ResourceInfo,\n lineCount: number,\n offsetBytes: bigint = 0n, // if 0n, then start from the beginning.\n searchStr?: string,\n options?: RpcOptions,\n ): Promise<StreamingAPI_Response> {\n const client = this.wire.get();\n\n if (client instanceof StreamingClient) {\n return (\n await client.readText(\n {\n resourceId: notEmpty(rId),\n readLimit: BigInt(lineCount),\n offset: offsetBytes,\n search: searchStr,\n },\n addRTypeToMetadata(rType, options),\n )\n ).response;\n }\n\n const resp = (\n await client.POST(\"/v1/read/text\", {\n body: {\n resourceId: rId.toString(),\n readLimit: lineCount.toString(),\n offset: offsetBytes.toString(),\n search: searchStr ?? \"\",\n searchRe: \"\",\n },\n headers: { ...createRTypeRoutingHeader(rType) },\n })\n ).data!;\n\n return {\n data: Buffer.from(resp.data, \"base64\"),\n size: BigInt(resp.size),\n newOffset: BigInt(resp.newOffset),\n };\n }\n}\n"],"mappings":";;;;;;AAWA,IAAa,aAAb,MAAwB;CACtB,AAAgB;CAEhB,YACE,2BACA,AAAgB,YAChB,AAAgB,QAChB;EAFgB;EACA;AAEhB,OAAK,OAAO,0BAA0B,0BAA0B,SAAS;AACvE,OAAI,KAAK,SAAS,OAChB,QAAO,IAAIA,wCAAgB,KAAK,UAAU;AAG5C,UAAOC,kCAAQ,aAAgC;IAC7C,aAAa,KAAK,OAAO;IACzB,KAAK,KAAK,OAAO;IACjB,YAAY,KAAK;IACjB,aAAa,KAAK;IACnB,CAAC;IACF;;CAGJ,QAAQ;;;;CAKR,MAAa,UACX,EAAE,IAAI,KAAK,MAAM,SACjB,WACA,cAAsB,IACtB,WACA,SACgC;EAChC,MAAM,SAAS,KAAK,KAAK,KAAK;AAC9B,MAAI,kBAAkBD,wCACpB,SACE,MAAM,OAAO,UACX;GAAE,YAAY;GAAgB;GAAW,QAAQ;GAAa,QAAQ;GAAW,oDAC9D,OAAO,QAAQ,CACnC,EACD;EAGJ,MAAM,QACJ,MAAM,OAAO,KAAK,kBAAkB;GAClC,MAAM;IACJ,YAAY,IAAI,UAAU;IACf;IACX,QAAQ,YAAY,UAAU;IAC9B,QAAQ,aAAa;IACrB,UAAU;IACX;GACD,SAAS,EAAE,2DAA4B,MAAM,EAAE;GAChD,CAAC,EACF;AAEF,SAAO;GACL,MAAM,OAAO,KAAK,KAAK,MAAM,SAAS;GACtC,MAAM,OAAO,KAAK,KAAK;GACvB,WAAW,OAAO,KAAK,UAAU;GAClC;;;;;CAMH,MAAa,SACX,EAAE,IAAI,KAAK,MAAM,SACjB,WACA,cAAsB,IACtB,WACA,SACgC;EAChC,MAAM,SAAS,KAAK,KAAK,KAAK;AAE9B,MAAI,kBAAkBA,wCACpB,SACE,MAAM,OAAO,SACX;GACE,qDAAqB,IAAI;GACzB,WAAW,OAAO,UAAU;GAC5B,QAAQ;GACR,QAAQ;GACT,oDACkB,OAAO,QAAQ,CACnC,EACD;EAGJ,MAAM,QACJ,MAAM,OAAO,KAAK,iBAAiB;GACjC,MAAM;IACJ,YAAY,IAAI,UAAU;IAC1B,WAAW,UAAU,UAAU;IAC/B,QAAQ,YAAY,UAAU;IAC9B,QAAQ,aAAa;IACrB,UAAU;IACX;GACD,SAAS,EAAE,2DAA4B,MAAM,EAAE;GAChD,CAAC,EACF;AAEF,SAAO;GACL,MAAM,OAAO,KAAK,KAAK,MAAM,SAAS;GACtC,MAAM,OAAO,KAAK,KAAK;GACvB,WAAW,OAAO,KAAK,UAAU;GAClC"}
@@ -1,26 +1,36 @@
1
- import type { RpcOptions } from "@protobuf-ts/runtime-rpc";
2
- import type { MiLogger } from "@milaboratories/ts-helpers";
3
- import type { Dispatcher } from "undici";
4
- import type { WireClientProvider, WireClientProviderFactory } from "@milaboratories/pl-client";
5
- import type { StreamingAPI_Response } from "../proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol";
6
- import { StreamingClient } from "../proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.client";
7
- import type { StreamingRestClientType } from "../proto-rest";
8
- import type { ResourceInfo } from "@milaboratories/pl-tree";
9
- export declare class ClientLogs {
10
- readonly httpClient: Dispatcher;
11
- readonly logger: MiLogger;
12
- readonly wire: WireClientProvider<StreamingRestClientType | StreamingClient>;
13
- constructor(wireClientProviderFactory: WireClientProviderFactory, httpClient: Dispatcher, logger: MiLogger);
14
- close(): void;
15
- /** Reads text back and returns the text,
16
- * the new offset
17
- * and the total size of the (currently existing) file. */
18
- lastLines({ id: rId, type: rType }: ResourceInfo, lineCount: number, offsetBytes?: bigint, // if 0n, then start from the end.
19
- searchStr?: string, options?: RpcOptions): Promise<StreamingAPI_Response>;
20
- /** Reads the file forward and returns the text,
21
- * the new offset
22
- * and the total size of the (currently existing) file. */
23
- readText({ id: rId, type: rType }: ResourceInfo, lineCount: number, offsetBytes?: bigint, // if 0n, then start from the beginning.
24
- searchStr?: string, options?: RpcOptions): Promise<StreamingAPI_Response>;
1
+ import { StreamingRestClientType } from "../proto-rest/index.js";
2
+ import { StreamingAPI_Response } from "../proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.js";
3
+ import { StreamingClient } from "../proto-grpc/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.client.js";
4
+ import { WireClientProvider, WireClientProviderFactory } from "@milaboratories/pl-client";
5
+ import { Dispatcher } from "undici";
6
+ import { RpcOptions } from "@protobuf-ts/runtime-rpc";
7
+ import { MiLogger } from "@milaboratories/ts-helpers";
8
+ import { ResourceInfo } from "@milaboratories/pl-tree";
9
+
10
+ //#region src/clients/logs.d.ts
11
+ declare class ClientLogs {
12
+ readonly httpClient: Dispatcher;
13
+ readonly logger: MiLogger;
14
+ readonly wire: WireClientProvider<StreamingRestClientType | StreamingClient>;
15
+ constructor(wireClientProviderFactory: WireClientProviderFactory, httpClient: Dispatcher, logger: MiLogger);
16
+ close(): void;
17
+ /** Reads text back and returns the text,
18
+ * the new offset
19
+ * and the total size of the (currently existing) file. */
20
+ lastLines({
21
+ id: rId,
22
+ type: rType
23
+ }: ResourceInfo, lineCount: number, offsetBytes?: bigint, // if 0n, then start from the end.
24
+ searchStr?: string, options?: RpcOptions): Promise<StreamingAPI_Response>;
25
+ /** Reads the file forward and returns the text,
26
+ * the new offset
27
+ * and the total size of the (currently existing) file. */
28
+ readText({
29
+ id: rId,
30
+ type: rType
31
+ }: ResourceInfo, lineCount: number, offsetBytes?: bigint, // if 0n, then start from the beginning.
32
+ searchStr?: string, options?: RpcOptions): Promise<StreamingAPI_Response>;
25
33
  }
34
+ //#endregion
35
+ export { ClientLogs };
26
36
  //# sourceMappingURL=logs.d.ts.map