@milaboratories/pl-drivers 1.9.0 → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (334) hide show
  1. package/dist/clients/constructors.cjs +45 -0
  2. package/dist/clients/constructors.cjs.map +1 -0
  3. package/dist/clients/constructors.d.ts +0 -1
  4. package/dist/clients/constructors.js +39 -0
  5. package/dist/clients/constructors.js.map +1 -0
  6. package/dist/clients/download.cjs +149 -0
  7. package/dist/clients/download.cjs.map +1 -0
  8. package/dist/clients/download.d.ts +0 -1
  9. package/dist/clients/download.js +121 -0
  10. package/dist/clients/download.js.map +1 -0
  11. package/dist/clients/logs.cjs +44 -0
  12. package/dist/clients/logs.cjs.map +1 -0
  13. package/dist/clients/logs.d.ts +0 -1
  14. package/dist/clients/logs.js +42 -0
  15. package/dist/clients/logs.js.map +1 -0
  16. package/dist/clients/ls_api.cjs +23 -0
  17. package/dist/clients/ls_api.cjs.map +1 -0
  18. package/dist/clients/ls_api.d.ts +0 -1
  19. package/dist/clients/ls_api.js +21 -0
  20. package/dist/clients/ls_api.js.map +1 -0
  21. package/dist/clients/progress.cjs +58 -0
  22. package/dist/clients/progress.cjs.map +1 -0
  23. package/dist/clients/progress.d.ts +1 -3
  24. package/dist/clients/progress.js +56 -0
  25. package/dist/clients/progress.js.map +1 -0
  26. package/dist/clients/upload.cjs +209 -0
  27. package/dist/clients/upload.cjs.map +1 -0
  28. package/dist/clients/upload.d.ts +8 -4
  29. package/dist/clients/upload.js +183 -0
  30. package/dist/clients/upload.js.map +1 -0
  31. package/dist/drivers/download_blob/blob_key.cjs +34 -0
  32. package/dist/drivers/download_blob/blob_key.cjs.map +1 -0
  33. package/dist/drivers/download_blob/blob_key.d.ts +0 -1
  34. package/dist/drivers/download_blob/blob_key.js +12 -0
  35. package/dist/drivers/download_blob/blob_key.js.map +1 -0
  36. package/dist/drivers/download_blob/download_blob.cjs +442 -0
  37. package/dist/drivers/download_blob/download_blob.cjs.map +1 -0
  38. package/dist/drivers/download_blob/download_blob.d.ts +0 -1
  39. package/dist/drivers/download_blob/download_blob.js +417 -0
  40. package/dist/drivers/download_blob/download_blob.js.map +1 -0
  41. package/dist/drivers/download_blob/download_blob_task.cjs +170 -0
  42. package/dist/drivers/download_blob/download_blob_task.cjs.map +1 -0
  43. package/dist/drivers/download_blob/download_blob_task.d.ts +0 -1
  44. package/dist/drivers/download_blob/download_blob_task.js +146 -0
  45. package/dist/drivers/download_blob/download_blob_task.js.map +1 -0
  46. package/dist/drivers/download_blob/sparse_cache/cache.cjs +202 -0
  47. package/dist/drivers/download_blob/sparse_cache/cache.cjs.map +1 -0
  48. package/dist/drivers/download_blob/sparse_cache/cache.d.ts +0 -1
  49. package/dist/drivers/download_blob/sparse_cache/cache.js +197 -0
  50. package/dist/drivers/download_blob/sparse_cache/cache.js.map +1 -0
  51. package/dist/drivers/download_blob/sparse_cache/file.cjs +61 -0
  52. package/dist/drivers/download_blob/sparse_cache/file.cjs.map +1 -0
  53. package/dist/drivers/download_blob/sparse_cache/file.d.ts +0 -1
  54. package/dist/drivers/download_blob/sparse_cache/file.js +39 -0
  55. package/dist/drivers/download_blob/sparse_cache/file.js.map +1 -0
  56. package/dist/drivers/download_blob/sparse_cache/ranges.cjs +104 -0
  57. package/dist/drivers/download_blob/sparse_cache/ranges.cjs.map +1 -0
  58. package/dist/drivers/download_blob/sparse_cache/ranges.d.ts +0 -1
  59. package/dist/drivers/download_blob/sparse_cache/ranges.js +76 -0
  60. package/dist/drivers/download_blob/sparse_cache/ranges.js.map +1 -0
  61. package/dist/drivers/download_blob_url/driver.cjs +169 -0
  62. package/dist/drivers/download_blob_url/driver.cjs.map +1 -0
  63. package/dist/drivers/download_blob_url/driver.d.ts +0 -1
  64. package/dist/drivers/download_blob_url/driver.js +148 -0
  65. package/dist/drivers/download_blob_url/driver.js.map +1 -0
  66. package/dist/drivers/download_blob_url/driver_id.cjs +9 -0
  67. package/dist/drivers/download_blob_url/driver_id.cjs.map +1 -0
  68. package/dist/drivers/download_blob_url/driver_id.d.ts +0 -1
  69. package/dist/drivers/download_blob_url/driver_id.js +7 -0
  70. package/dist/drivers/download_blob_url/driver_id.js.map +1 -0
  71. package/dist/drivers/download_blob_url/snapshot.cjs +18 -0
  72. package/dist/drivers/download_blob_url/snapshot.cjs.map +1 -0
  73. package/dist/drivers/download_blob_url/snapshot.d.ts +2 -3
  74. package/dist/drivers/download_blob_url/snapshot.js +15 -0
  75. package/dist/drivers/download_blob_url/snapshot.js.map +1 -0
  76. package/dist/drivers/download_blob_url/task.cjs +209 -0
  77. package/dist/drivers/download_blob_url/task.cjs.map +1 -0
  78. package/dist/drivers/download_blob_url/task.d.ts +0 -1
  79. package/dist/drivers/download_blob_url/task.js +184 -0
  80. package/dist/drivers/download_blob_url/task.js.map +1 -0
  81. package/dist/drivers/download_blob_url/url.d.ts +1 -1
  82. package/dist/drivers/download_url/driver.cjs +149 -0
  83. package/dist/drivers/download_url/driver.cjs.map +1 -0
  84. package/dist/drivers/download_url/driver.d.ts +0 -1
  85. package/dist/drivers/download_url/driver.js +128 -0
  86. package/dist/drivers/download_url/driver.js.map +1 -0
  87. package/dist/drivers/download_url/task.cjs +150 -0
  88. package/dist/drivers/download_url/task.cjs.map +1 -0
  89. package/dist/drivers/download_url/task.d.ts +0 -1
  90. package/dist/drivers/download_url/task.js +124 -0
  91. package/dist/drivers/download_url/task.js.map +1 -0
  92. package/dist/drivers/helpers/download_local_handle.cjs +26 -0
  93. package/dist/drivers/helpers/download_local_handle.cjs.map +1 -0
  94. package/dist/drivers/helpers/download_local_handle.d.ts +0 -1
  95. package/dist/drivers/helpers/download_local_handle.js +22 -0
  96. package/dist/drivers/helpers/download_local_handle.js.map +1 -0
  97. package/dist/drivers/helpers/download_remote_handle.cjs +36 -0
  98. package/dist/drivers/helpers/download_remote_handle.cjs.map +1 -0
  99. package/dist/drivers/helpers/download_remote_handle.d.ts +0 -1
  100. package/dist/drivers/helpers/download_remote_handle.js +32 -0
  101. package/dist/drivers/helpers/download_remote_handle.js.map +1 -0
  102. package/dist/drivers/helpers/files_cache.cjs +68 -0
  103. package/dist/drivers/helpers/files_cache.cjs.map +1 -0
  104. package/dist/drivers/helpers/files_cache.d.ts +0 -1
  105. package/dist/drivers/helpers/files_cache.js +66 -0
  106. package/dist/drivers/helpers/files_cache.js.map +1 -0
  107. package/dist/drivers/helpers/helpers.cjs +34 -0
  108. package/dist/drivers/helpers/helpers.cjs.map +1 -0
  109. package/dist/drivers/helpers/helpers.d.ts +0 -1
  110. package/dist/drivers/helpers/helpers.js +31 -0
  111. package/dist/drivers/helpers/helpers.js.map +1 -0
  112. package/dist/drivers/helpers/logs_handle.cjs +50 -0
  113. package/dist/drivers/helpers/logs_handle.cjs.map +1 -0
  114. package/dist/drivers/helpers/logs_handle.d.ts +0 -1
  115. package/dist/drivers/helpers/logs_handle.js +43 -0
  116. package/dist/drivers/helpers/logs_handle.js.map +1 -0
  117. package/dist/drivers/helpers/ls_remote_import_handle.cjs +34 -0
  118. package/dist/drivers/helpers/ls_remote_import_handle.cjs.map +1 -0
  119. package/dist/drivers/helpers/ls_remote_import_handle.d.ts +0 -1
  120. package/dist/drivers/helpers/ls_remote_import_handle.js +29 -0
  121. package/dist/drivers/helpers/ls_remote_import_handle.js.map +1 -0
  122. package/dist/drivers/helpers/ls_storage_entry.cjs +64 -0
  123. package/dist/drivers/helpers/ls_storage_entry.cjs.map +1 -0
  124. package/dist/drivers/helpers/ls_storage_entry.d.ts +0 -1
  125. package/dist/drivers/helpers/ls_storage_entry.js +58 -0
  126. package/dist/drivers/helpers/ls_storage_entry.js.map +1 -0
  127. package/dist/drivers/helpers/polling_ops.d.ts +0 -1
  128. package/dist/drivers/helpers/read_file.cjs +54 -0
  129. package/dist/drivers/helpers/read_file.cjs.map +1 -0
  130. package/dist/drivers/helpers/read_file.d.ts +0 -1
  131. package/dist/drivers/helpers/read_file.js +33 -0
  132. package/dist/drivers/helpers/read_file.js.map +1 -0
  133. package/dist/drivers/helpers/test_helpers.d.ts +0 -1
  134. package/dist/drivers/logs.cjs +118 -0
  135. package/dist/drivers/logs.cjs.map +1 -0
  136. package/dist/drivers/logs.d.ts +0 -1
  137. package/dist/drivers/logs.js +116 -0
  138. package/dist/drivers/logs.js.map +1 -0
  139. package/dist/drivers/logs_stream.cjs +238 -0
  140. package/dist/drivers/logs_stream.cjs.map +1 -0
  141. package/dist/drivers/logs_stream.d.ts +0 -1
  142. package/dist/drivers/logs_stream.js +236 -0
  143. package/dist/drivers/logs_stream.js.map +1 -0
  144. package/dist/drivers/ls.cjs +236 -0
  145. package/dist/drivers/ls.cjs.map +1 -0
  146. package/dist/drivers/ls.d.ts +0 -1
  147. package/dist/drivers/ls.js +214 -0
  148. package/dist/drivers/ls.js.map +1 -0
  149. package/dist/drivers/types.cjs +72 -0
  150. package/dist/drivers/types.cjs.map +1 -0
  151. package/dist/drivers/types.d.ts +4 -5
  152. package/dist/drivers/types.js +64 -0
  153. package/dist/drivers/types.js.map +1 -0
  154. package/dist/drivers/upload.cjs +154 -0
  155. package/dist/drivers/upload.cjs.map +1 -0
  156. package/dist/drivers/upload.d.ts +0 -1
  157. package/dist/drivers/upload.js +151 -0
  158. package/dist/drivers/upload.js.map +1 -0
  159. package/dist/drivers/upload_task.cjs +297 -0
  160. package/dist/drivers/upload_task.cjs.map +1 -0
  161. package/dist/drivers/upload_task.d.ts +2 -3
  162. package/dist/drivers/upload_task.js +289 -0
  163. package/dist/drivers/upload_task.js.map +1 -0
  164. package/dist/drivers/urls/url.cjs +59 -0
  165. package/dist/drivers/urls/url.cjs.map +1 -0
  166. package/dist/drivers/urls/url.d.ts +0 -1
  167. package/dist/drivers/urls/url.js +54 -0
  168. package/dist/drivers/urls/url.js.map +1 -0
  169. package/dist/drivers/virtual_storages.cjs +53 -0
  170. package/dist/drivers/virtual_storages.cjs.map +1 -0
  171. package/dist/drivers/virtual_storages.d.ts +0 -1
  172. package/dist/drivers/virtual_storages.js +51 -0
  173. package/dist/drivers/virtual_storages.js.map +1 -0
  174. package/dist/helpers/download.cjs +63 -0
  175. package/dist/helpers/download.cjs.map +1 -0
  176. package/dist/helpers/download.d.ts +0 -1
  177. package/dist/helpers/download.js +60 -0
  178. package/dist/helpers/download.js.map +1 -0
  179. package/dist/helpers/validate.cjs +12 -0
  180. package/dist/helpers/validate.cjs.map +1 -0
  181. package/dist/helpers/validate.d.ts +0 -1
  182. package/dist/helpers/validate.js +10 -0
  183. package/dist/helpers/validate.js.map +1 -0
  184. package/dist/index.cjs +73 -0
  185. package/dist/index.cjs.map +1 -0
  186. package/dist/index.d.ts +0 -1
  187. package/dist/index.js +19 -2
  188. package/dist/index.js.map +1 -1
  189. package/dist/proto/github.com/googleapis/googleapis/google/rpc/status.d.ts +0 -1
  190. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.cjs +261 -0
  191. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.cjs.map +1 -0
  192. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.client.cjs +31 -0
  193. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.client.cjs.map +1 -0
  194. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.client.d.ts +3 -5
  195. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.client.js +29 -0
  196. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.client.js.map +1 -0
  197. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.d.ts +0 -1
  198. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.js +256 -0
  199. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.js.map +1 -0
  200. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/lsapi/protocol.cjs +301 -0
  201. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/lsapi/protocol.cjs.map +1 -0
  202. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/lsapi/protocol.client.cjs +34 -0
  203. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/lsapi/protocol.client.cjs.map +1 -0
  204. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/lsapi/protocol.client.d.ts +3 -5
  205. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/lsapi/protocol.client.js +32 -0
  206. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/lsapi/protocol.client.js.map +1 -0
  207. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/lsapi/protocol.d.ts +0 -1
  208. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/lsapi/protocol.js +296 -0
  209. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/lsapi/protocol.js.map +1 -0
  210. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.cjs +410 -0
  211. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.cjs.map +1 -0
  212. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.client.cjs +38 -0
  213. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.client.cjs.map +1 -0
  214. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.client.d.ts +3 -5
  215. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.client.js +36 -0
  216. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.client.js.map +1 -0
  217. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.d.ts +0 -1
  218. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.js +403 -0
  219. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.js.map +1 -0
  220. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.cjs +486 -0
  221. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.cjs.map +1 -0
  222. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.client.cjs +86 -0
  223. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.client.cjs.map +1 -0
  224. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.client.d.ts +3 -5
  225. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.client.js +84 -0
  226. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.client.js.map +1 -0
  227. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.d.ts +0 -1
  228. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.js +478 -0
  229. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.js.map +1 -0
  230. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.cjs +758 -0
  231. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.cjs.map +1 -0
  232. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.client.cjs +71 -0
  233. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.client.cjs.map +1 -0
  234. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.client.d.ts +3 -5
  235. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.client.js +69 -0
  236. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.client.js.map +1 -0
  237. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.d.ts +36 -1
  238. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.js +747 -0
  239. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.js.map +1 -0
  240. package/dist/proto/github.com/milaboratory/pl/plapi/plapiproto/api.client.d.ts +3 -5
  241. package/dist/proto/github.com/milaboratory/pl/plapi/plapiproto/api.d.ts +0 -1
  242. package/dist/proto/github.com/milaboratory/pl/plapi/plapiproto/api_types.d.ts +0 -1
  243. package/dist/proto/github.com/milaboratory/pl/plapi/plapiproto/base_types.d.ts +0 -1
  244. package/dist/proto/github.com/milaboratory/pl/plapi/plapiproto/import.d.ts +0 -1
  245. package/dist/proto/github.com/milaboratory/pl/plapi/plapiproto/resource_types.d.ts +0 -1
  246. package/dist/proto/google/api/http.d.ts +0 -1
  247. package/dist/proto/google/protobuf/any.d.ts +0 -1
  248. package/dist/proto/google/protobuf/descriptor.d.ts +0 -1
  249. package/dist/proto/google/protobuf/duration.cjs +105 -0
  250. package/dist/proto/google/protobuf/duration.cjs.map +1 -0
  251. package/dist/proto/google/protobuf/duration.d.ts +0 -1
  252. package/dist/proto/google/protobuf/duration.js +103 -0
  253. package/dist/proto/google/protobuf/duration.js.map +1 -0
  254. package/dist/proto/google/protobuf/empty.d.ts +0 -1
  255. package/dist/proto/google/protobuf/struct.d.ts +0 -1
  256. package/dist/proto/google/protobuf/timestamp.cjs +133 -0
  257. package/dist/proto/google/protobuf/timestamp.cjs.map +1 -0
  258. package/dist/proto/google/protobuf/timestamp.d.ts +0 -1
  259. package/dist/proto/google/protobuf/timestamp.js +131 -0
  260. package/dist/proto/google/protobuf/timestamp.js.map +1 -0
  261. package/dist/proto/google/protobuf/wrappers.d.ts +0 -1
  262. package/dist/test_env.d.ts +0 -1
  263. package/package.json +17 -15
  264. package/src/clients/upload.ts +38 -14
  265. package/src/drivers/upload_task.ts +10 -3
  266. package/src/proto/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.ts +69 -1
  267. package/dist/clients/constructors.d.ts.map +0 -1
  268. package/dist/clients/download.d.ts.map +0 -1
  269. package/dist/clients/logs.d.ts.map +0 -1
  270. package/dist/clients/ls_api.d.ts.map +0 -1
  271. package/dist/clients/progress.d.ts.map +0 -1
  272. package/dist/clients/upload.d.ts.map +0 -1
  273. package/dist/drivers/download_blob/blob_key.d.ts.map +0 -1
  274. package/dist/drivers/download_blob/download_blob.d.ts.map +0 -1
  275. package/dist/drivers/download_blob/download_blob_task.d.ts.map +0 -1
  276. package/dist/drivers/download_blob/sparse_cache/cache.d.ts.map +0 -1
  277. package/dist/drivers/download_blob/sparse_cache/file.d.ts.map +0 -1
  278. package/dist/drivers/download_blob/sparse_cache/ranges.d.ts.map +0 -1
  279. package/dist/drivers/download_blob_url/driver.d.ts.map +0 -1
  280. package/dist/drivers/download_blob_url/driver_id.d.ts.map +0 -1
  281. package/dist/drivers/download_blob_url/snapshot.d.ts.map +0 -1
  282. package/dist/drivers/download_blob_url/task.d.ts.map +0 -1
  283. package/dist/drivers/download_blob_url/url.d.ts.map +0 -1
  284. package/dist/drivers/download_url/driver.d.ts.map +0 -1
  285. package/dist/drivers/download_url/task.d.ts.map +0 -1
  286. package/dist/drivers/helpers/download_local_handle.d.ts.map +0 -1
  287. package/dist/drivers/helpers/download_remote_handle.d.ts.map +0 -1
  288. package/dist/drivers/helpers/files_cache.d.ts.map +0 -1
  289. package/dist/drivers/helpers/helpers.d.ts.map +0 -1
  290. package/dist/drivers/helpers/logs_handle.d.ts.map +0 -1
  291. package/dist/drivers/helpers/ls_remote_import_handle.d.ts.map +0 -1
  292. package/dist/drivers/helpers/ls_storage_entry.d.ts.map +0 -1
  293. package/dist/drivers/helpers/polling_ops.d.ts.map +0 -1
  294. package/dist/drivers/helpers/read_file.d.ts.map +0 -1
  295. package/dist/drivers/helpers/test_helpers.d.ts.map +0 -1
  296. package/dist/drivers/logs.d.ts.map +0 -1
  297. package/dist/drivers/logs_stream.d.ts.map +0 -1
  298. package/dist/drivers/ls.d.ts.map +0 -1
  299. package/dist/drivers/types.d.ts.map +0 -1
  300. package/dist/drivers/upload.d.ts.map +0 -1
  301. package/dist/drivers/upload_task.d.ts.map +0 -1
  302. package/dist/drivers/urls/url.d.ts.map +0 -1
  303. package/dist/drivers/virtual_storages.d.ts.map +0 -1
  304. package/dist/helpers/download.d.ts.map +0 -1
  305. package/dist/helpers/validate.d.ts.map +0 -1
  306. package/dist/index.d.ts.map +0 -1
  307. package/dist/index.mjs +0 -4892
  308. package/dist/index.mjs.map +0 -1
  309. package/dist/proto/github.com/googleapis/googleapis/google/rpc/status.d.ts.map +0 -1
  310. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.client.d.ts.map +0 -1
  311. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/downloadapi/protocol.d.ts.map +0 -1
  312. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/lsapi/protocol.client.d.ts.map +0 -1
  313. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/lsapi/protocol.d.ts.map +0 -1
  314. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.client.d.ts.map +0 -1
  315. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/progressapi/protocol.d.ts.map +0 -1
  316. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.client.d.ts.map +0 -1
  317. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol.d.ts.map +0 -1
  318. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.client.d.ts.map +0 -1
  319. package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.d.ts.map +0 -1
  320. package/dist/proto/github.com/milaboratory/pl/plapi/plapiproto/api.client.d.ts.map +0 -1
  321. package/dist/proto/github.com/milaboratory/pl/plapi/plapiproto/api.d.ts.map +0 -1
  322. package/dist/proto/github.com/milaboratory/pl/plapi/plapiproto/api_types.d.ts.map +0 -1
  323. package/dist/proto/github.com/milaboratory/pl/plapi/plapiproto/base_types.d.ts.map +0 -1
  324. package/dist/proto/github.com/milaboratory/pl/plapi/plapiproto/import.d.ts.map +0 -1
  325. package/dist/proto/github.com/milaboratory/pl/plapi/plapiproto/resource_types.d.ts.map +0 -1
  326. package/dist/proto/google/api/http.d.ts.map +0 -1
  327. package/dist/proto/google/protobuf/any.d.ts.map +0 -1
  328. package/dist/proto/google/protobuf/descriptor.d.ts.map +0 -1
  329. package/dist/proto/google/protobuf/duration.d.ts.map +0 -1
  330. package/dist/proto/google/protobuf/empty.d.ts.map +0 -1
  331. package/dist/proto/google/protobuf/struct.d.ts.map +0 -1
  332. package/dist/proto/google/protobuf/timestamp.d.ts.map +0 -1
  333. package/dist/proto/google/protobuf/wrappers.d.ts.map +0 -1
  334. package/dist/test_env.d.ts.map +0 -1
@@ -0,0 +1,118 @@
1
+ 'use strict';
2
+
3
+ var computable = require('@milaboratories/computable');
4
+ var logs_handle = require('./helpers/logs_handle.cjs');
5
+
6
+ class LogsDriver {
7
+ logger;
8
+ logsStreamDriver;
9
+ downloadDriver;
10
+ constructor(logger, logsStreamDriver, downloadDriver) {
11
+ this.logger = logger;
12
+ this.logsStreamDriver = logsStreamDriver;
13
+ this.downloadDriver = downloadDriver;
14
+ }
15
+ getLastLogs(res, lines, ctx) {
16
+ if (ctx === undefined)
17
+ return computable.Computable.make((ctx) => this.getLastLogs(res, lines, ctx));
18
+ const stream = streamManagerGetStream(ctx, res);
19
+ if (stream === undefined) {
20
+ ctx.markUnstable('no stream in stream manager');
21
+ return undefined;
22
+ }
23
+ if (isBlob(stream))
24
+ return this.downloadDriver.getLastLogs(stream, lines, ctx);
25
+ try {
26
+ return this.logsStreamDriver.getLastLogs(stream, lines, ctx);
27
+ }
28
+ catch (e) {
29
+ if (e.name == 'RpcError' && e.code == 'NOT_FOUND') {
30
+ ctx.markUnstable(`NOT_FOUND in logs stream driver while getting last logs: ${e}`);
31
+ return undefined;
32
+ }
33
+ throw e;
34
+ }
35
+ }
36
+ getProgressLog(res, patternToSearch, ctx) {
37
+ if (ctx === undefined)
38
+ return computable.Computable.make((ctx) => this.getProgressLog(res, patternToSearch, ctx));
39
+ const stream = streamManagerGetStream(ctx, res);
40
+ if (stream === undefined) {
41
+ ctx.markUnstable('no stream in stream manager');
42
+ return undefined;
43
+ }
44
+ if (isBlob(stream))
45
+ return this.downloadDriver.getProgressLog(stream, patternToSearch, ctx);
46
+ try {
47
+ return this.logsStreamDriver.getProgressLog(stream, patternToSearch, ctx);
48
+ }
49
+ catch (e) {
50
+ if (e.name == 'RpcError' && e.code == 'NOT_FOUND') {
51
+ ctx.markUnstable(`NOT_FOUND in logs stream driver while getting a progress log: ${e}`);
52
+ return undefined;
53
+ }
54
+ throw e;
55
+ }
56
+ }
57
+ getProgressLogWithInfo(res, patternToSearch, ctx) {
58
+ if (ctx === undefined)
59
+ return computable.Computable.make((ctx) => this.getProgressLogWithInfo(res, patternToSearch, ctx));
60
+ const stream = streamManagerGetStream(ctx, res);
61
+ if (stream === undefined) {
62
+ ctx.markUnstable('no stream in stream manager');
63
+ return undefined;
64
+ }
65
+ if (isBlob(stream)) {
66
+ const log = this.downloadDriver.getProgressLog(stream, patternToSearch, ctx);
67
+ return {
68
+ progressLine: log,
69
+ live: false,
70
+ };
71
+ }
72
+ try {
73
+ const log = this.logsStreamDriver.getProgressLog(stream, patternToSearch, ctx);
74
+ return {
75
+ progressLine: log,
76
+ live: true,
77
+ };
78
+ }
79
+ catch (e) {
80
+ if (e.name == 'RpcError' && e.code == 'NOT_FOUND') {
81
+ ctx.markUnstable(`NOT_FOUND in logs stream driver while getting a progress log with info: ${e}`);
82
+ return undefined;
83
+ }
84
+ throw e;
85
+ }
86
+ }
87
+ getLogHandle(res, ctx) {
88
+ if (ctx === undefined)
89
+ return computable.Computable.make((ctx) => this.getLogHandle(res, ctx));
90
+ const stream = streamManagerGetStream(ctx, res);
91
+ if (stream === undefined) {
92
+ ctx.markUnstable('no stream in stream manager');
93
+ return undefined;
94
+ }
95
+ if (isBlob(stream))
96
+ return this.downloadDriver.getLogHandle(stream, ctx);
97
+ return this.logsStreamDriver.getLogHandle(stream, ctx);
98
+ }
99
+ async lastLines(handle, lineCount, offsetBytes, searchStr) {
100
+ if (logs_handle.isLiveLogHandle(handle))
101
+ return await this.logsStreamDriver.lastLines(handle, lineCount, offsetBytes, searchStr);
102
+ return await this.downloadDriver.lastLines(handle, lineCount, offsetBytes, searchStr);
103
+ }
104
+ async readText(handle, lineCount, offsetBytes, searchStr) {
105
+ if (logs_handle.isLiveLogHandle(handle))
106
+ return await this.logsStreamDriver.readText(handle, lineCount, offsetBytes, searchStr);
107
+ return await this.downloadDriver.readText(handle, lineCount, offsetBytes, searchStr);
108
+ }
109
+ }
110
+ function isBlob(rInfo) {
111
+ return !rInfo.type.name.startsWith('StreamWorkdir');
112
+ }
113
+ function streamManagerGetStream(ctx, manager) {
114
+ return ctx.accessor(manager).node().traverse('stream')?.resourceInfo;
115
+ }
116
+
117
+ exports.LogsDriver = LogsDriver;
118
+ //# sourceMappingURL=logs.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.cjs","sources":["../../src/drivers/logs.ts"],"sourcesContent":["import type { ComputableCtx } from '@milaboratories/computable';\nimport { Computable } from '@milaboratories/computable';\nimport type { PlTreeEntry, ResourceInfo } from '@milaboratories/pl-tree';\nimport type { LogsStreamDriver } from './logs_stream';\nimport type * as sdk from '@milaboratories/pl-model-common';\nimport type { MiLogger } from '@milaboratories/ts-helpers';\nimport type { DownloadDriver } from './download_blob/download_blob';\nimport { isLiveLogHandle } from './helpers/logs_handle';\n\nexport class LogsDriver implements sdk.LogsDriver {\n constructor(\n private readonly logger: MiLogger,\n private readonly logsStreamDriver: LogsStreamDriver,\n private readonly downloadDriver: DownloadDriver,\n ) {}\n\n /** Returns all logs and schedules a job that reads remain logs.\n * Notifies when a new portion of the log appeared. */\n getLastLogs(res: PlTreeEntry, lines: number): Computable<string | undefined>;\n getLastLogs(res: PlTreeEntry, lines: number, ctx: ComputableCtx): Computable<string | undefined>;\n getLastLogs(\n res: PlTreeEntry,\n lines: number,\n ctx?: ComputableCtx,\n ): Computable<string | undefined> | string | undefined {\n if (ctx === undefined) return Computable.make((ctx) => this.getLastLogs(res, lines, ctx));\n\n const stream = streamManagerGetStream(ctx, res);\n if (stream === undefined) {\n ctx.markUnstable('no stream in stream manager');\n return undefined;\n }\n\n if (isBlob(stream)) return this.downloadDriver.getLastLogs(stream, lines, ctx);\n\n try {\n return this.logsStreamDriver.getLastLogs(stream, lines, ctx);\n } catch (e: any) {\n if (e.name == 'RpcError' && e.code == 'NOT_FOUND') {\n ctx.markUnstable(`NOT_FOUND in logs stream driver while getting last logs: ${e}`);\n return undefined;\n }\n throw e;\n }\n }\n\n /** Returns a last line that has patternToSearch.\n * Notifies when a new line appeared or EOF reached. */\n getProgressLog(res: PlTreeEntry, patternToSearch: string): Computable<string | undefined>;\n getProgressLog(res: PlTreeEntry, patternToSearch: string, ctx: ComputableCtx): string | undefined;\n getProgressLog(\n res: PlTreeEntry,\n patternToSearch: string,\n ctx?: ComputableCtx,\n ): Computable<string | undefined> | string | undefined {\n if (ctx === undefined)\n return Computable.make((ctx) => this.getProgressLog(res, patternToSearch, ctx));\n\n const stream = streamManagerGetStream(ctx, res);\n if (stream === undefined) {\n ctx.markUnstable('no stream in stream manager');\n return undefined;\n }\n\n if (isBlob(stream)) return this.downloadDriver.getProgressLog(stream, patternToSearch, ctx);\n\n try {\n return this.logsStreamDriver.getProgressLog(stream, patternToSearch, ctx);\n } catch (e: any) {\n if (e.name == 'RpcError' && e.code == 'NOT_FOUND') {\n ctx.markUnstable(`NOT_FOUND in logs stream driver while getting a progress log: ${e}`);\n return undefined;\n }\n throw e;\n }\n }\n\n /** Same as getProgressLog but also returns a liveliness of the log.\n * The previous getProgressLog couldn't be extended.\n * Returns a last line that has patternToSearch.\n * Notifies when a new line appeared or EOF reached. */\n getProgressLogWithInfo(res: PlTreeEntry, patternToSearch: string): Computable<sdk.ProgressLogWithInfo | undefined>;\n getProgressLogWithInfo(res: PlTreeEntry, patternToSearch: string, ctx: ComputableCtx): sdk.ProgressLogWithInfo | undefined;\n getProgressLogWithInfo(\n res: PlTreeEntry,\n patternToSearch: string,\n ctx?: ComputableCtx,\n ): Computable<sdk.ProgressLogWithInfo | undefined> | sdk.ProgressLogWithInfo | undefined {\n if (ctx === undefined)\n return Computable.make((ctx) => this.getProgressLogWithInfo(res, patternToSearch, ctx));\n\n const stream = streamManagerGetStream(ctx, res);\n if (stream === undefined) {\n ctx.markUnstable('no stream in stream manager');\n return undefined;\n }\n\n if (isBlob(stream)) {\n const log = this.downloadDriver.getProgressLog(stream, patternToSearch, ctx);\n return {\n progressLine: log,\n live: false,\n }\n }\n\n try {\n const log = this.logsStreamDriver.getProgressLog(stream, patternToSearch, ctx);\n return {\n progressLine: log,\n live: true,\n }\n } catch (e: any) {\n if (e.name == 'RpcError' && e.code == 'NOT_FOUND') {\n ctx.markUnstable(`NOT_FOUND in logs stream driver while getting a progress log with info: ${e}`);\n return undefined;\n }\n throw e;\n }\n }\n\n /** Returns an Id of a smart object, that can read logs directly from\n * the platform. */\n getLogHandle(res: ResourceInfo | PlTreeEntry): Computable<sdk.AnyLogHandle | undefined>;\n getLogHandle(res: PlTreeEntry, ctx: ComputableCtx): sdk.AnyLogHandle | undefined;\n getLogHandle(\n res: PlTreeEntry,\n ctx?: ComputableCtx,\n ): Computable<sdk.AnyLogHandle | undefined> | sdk.AnyLogHandle | undefined {\n if (ctx === undefined) return Computable.make((ctx) => this.getLogHandle(res, ctx));\n\n const stream = streamManagerGetStream(ctx, res);\n if (stream === undefined) {\n ctx.markUnstable('no stream in stream manager');\n return undefined;\n }\n\n if (isBlob(stream)) return this.downloadDriver.getLogHandle(stream, ctx);\n\n return this.logsStreamDriver.getLogHandle(stream, ctx);\n }\n\n async lastLines(\n handle: sdk.AnyLogHandle,\n lineCount: number,\n offsetBytes?: number,\n searchStr?: string,\n ): Promise<sdk.StreamingApiResponse> {\n if (isLiveLogHandle(handle))\n return await this.logsStreamDriver.lastLines(handle, lineCount, offsetBytes, searchStr);\n return await this.downloadDriver.lastLines(handle, lineCount, offsetBytes, searchStr);\n }\n\n async readText(\n handle: sdk.AnyLogHandle,\n lineCount: number,\n offsetBytes?: number,\n searchStr?: string,\n ): Promise<sdk.StreamingApiResponse> {\n if (isLiveLogHandle(handle))\n return await this.logsStreamDriver.readText(handle, lineCount, offsetBytes, searchStr);\n return await this.downloadDriver.readText(handle, lineCount, offsetBytes, searchStr);\n }\n}\n\nfunction isBlob(rInfo: ResourceInfo) {\n return !rInfo.type.name.startsWith('StreamWorkdir');\n}\n\nfunction streamManagerGetStream(ctx: ComputableCtx, manager: PlTreeEntry) {\n return ctx.accessor(manager).node().traverse('stream')?.resourceInfo;\n}\n"],"names":["Computable","isLiveLogHandle"],"mappings":"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"}
@@ -30,4 +30,3 @@ export declare class LogsDriver implements sdk.LogsDriver {
30
30
  lastLines(handle: sdk.AnyLogHandle, lineCount: number, offsetBytes?: number, searchStr?: string): Promise<sdk.StreamingApiResponse>;
31
31
  readText(handle: sdk.AnyLogHandle, lineCount: number, offsetBytes?: number, searchStr?: string): Promise<sdk.StreamingApiResponse>;
32
32
  }
33
- //# sourceMappingURL=logs.d.ts.map
@@ -0,0 +1,116 @@
1
+ import { Computable } from '@milaboratories/computable';
2
+ import { isLiveLogHandle } from './helpers/logs_handle.js';
3
+
4
+ class LogsDriver {
5
+ logger;
6
+ logsStreamDriver;
7
+ downloadDriver;
8
+ constructor(logger, logsStreamDriver, downloadDriver) {
9
+ this.logger = logger;
10
+ this.logsStreamDriver = logsStreamDriver;
11
+ this.downloadDriver = downloadDriver;
12
+ }
13
+ getLastLogs(res, lines, ctx) {
14
+ if (ctx === undefined)
15
+ return Computable.make((ctx) => this.getLastLogs(res, lines, ctx));
16
+ const stream = streamManagerGetStream(ctx, res);
17
+ if (stream === undefined) {
18
+ ctx.markUnstable('no stream in stream manager');
19
+ return undefined;
20
+ }
21
+ if (isBlob(stream))
22
+ return this.downloadDriver.getLastLogs(stream, lines, ctx);
23
+ try {
24
+ return this.logsStreamDriver.getLastLogs(stream, lines, ctx);
25
+ }
26
+ catch (e) {
27
+ if (e.name == 'RpcError' && e.code == 'NOT_FOUND') {
28
+ ctx.markUnstable(`NOT_FOUND in logs stream driver while getting last logs: ${e}`);
29
+ return undefined;
30
+ }
31
+ throw e;
32
+ }
33
+ }
34
+ getProgressLog(res, patternToSearch, ctx) {
35
+ if (ctx === undefined)
36
+ return Computable.make((ctx) => this.getProgressLog(res, patternToSearch, ctx));
37
+ const stream = streamManagerGetStream(ctx, res);
38
+ if (stream === undefined) {
39
+ ctx.markUnstable('no stream in stream manager');
40
+ return undefined;
41
+ }
42
+ if (isBlob(stream))
43
+ return this.downloadDriver.getProgressLog(stream, patternToSearch, ctx);
44
+ try {
45
+ return this.logsStreamDriver.getProgressLog(stream, patternToSearch, ctx);
46
+ }
47
+ catch (e) {
48
+ if (e.name == 'RpcError' && e.code == 'NOT_FOUND') {
49
+ ctx.markUnstable(`NOT_FOUND in logs stream driver while getting a progress log: ${e}`);
50
+ return undefined;
51
+ }
52
+ throw e;
53
+ }
54
+ }
55
+ getProgressLogWithInfo(res, patternToSearch, ctx) {
56
+ if (ctx === undefined)
57
+ return Computable.make((ctx) => this.getProgressLogWithInfo(res, patternToSearch, ctx));
58
+ const stream = streamManagerGetStream(ctx, res);
59
+ if (stream === undefined) {
60
+ ctx.markUnstable('no stream in stream manager');
61
+ return undefined;
62
+ }
63
+ if (isBlob(stream)) {
64
+ const log = this.downloadDriver.getProgressLog(stream, patternToSearch, ctx);
65
+ return {
66
+ progressLine: log,
67
+ live: false,
68
+ };
69
+ }
70
+ try {
71
+ const log = this.logsStreamDriver.getProgressLog(stream, patternToSearch, ctx);
72
+ return {
73
+ progressLine: log,
74
+ live: true,
75
+ };
76
+ }
77
+ catch (e) {
78
+ if (e.name == 'RpcError' && e.code == 'NOT_FOUND') {
79
+ ctx.markUnstable(`NOT_FOUND in logs stream driver while getting a progress log with info: ${e}`);
80
+ return undefined;
81
+ }
82
+ throw e;
83
+ }
84
+ }
85
+ getLogHandle(res, ctx) {
86
+ if (ctx === undefined)
87
+ return Computable.make((ctx) => this.getLogHandle(res, ctx));
88
+ const stream = streamManagerGetStream(ctx, res);
89
+ if (stream === undefined) {
90
+ ctx.markUnstable('no stream in stream manager');
91
+ return undefined;
92
+ }
93
+ if (isBlob(stream))
94
+ return this.downloadDriver.getLogHandle(stream, ctx);
95
+ return this.logsStreamDriver.getLogHandle(stream, ctx);
96
+ }
97
+ async lastLines(handle, lineCount, offsetBytes, searchStr) {
98
+ if (isLiveLogHandle(handle))
99
+ return await this.logsStreamDriver.lastLines(handle, lineCount, offsetBytes, searchStr);
100
+ return await this.downloadDriver.lastLines(handle, lineCount, offsetBytes, searchStr);
101
+ }
102
+ async readText(handle, lineCount, offsetBytes, searchStr) {
103
+ if (isLiveLogHandle(handle))
104
+ return await this.logsStreamDriver.readText(handle, lineCount, offsetBytes, searchStr);
105
+ return await this.downloadDriver.readText(handle, lineCount, offsetBytes, searchStr);
106
+ }
107
+ }
108
+ function isBlob(rInfo) {
109
+ return !rInfo.type.name.startsWith('StreamWorkdir');
110
+ }
111
+ function streamManagerGetStream(ctx, manager) {
112
+ return ctx.accessor(manager).node().traverse('stream')?.resourceInfo;
113
+ }
114
+
115
+ export { LogsDriver };
116
+ //# sourceMappingURL=logs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.js","sources":["../../src/drivers/logs.ts"],"sourcesContent":["import type { ComputableCtx } from '@milaboratories/computable';\nimport { Computable } from '@milaboratories/computable';\nimport type { PlTreeEntry, ResourceInfo } from '@milaboratories/pl-tree';\nimport type { LogsStreamDriver } from './logs_stream';\nimport type * as sdk from '@milaboratories/pl-model-common';\nimport type { MiLogger } from '@milaboratories/ts-helpers';\nimport type { DownloadDriver } from './download_blob/download_blob';\nimport { isLiveLogHandle } from './helpers/logs_handle';\n\nexport class LogsDriver implements sdk.LogsDriver {\n constructor(\n private readonly logger: MiLogger,\n private readonly logsStreamDriver: LogsStreamDriver,\n private readonly downloadDriver: DownloadDriver,\n ) {}\n\n /** Returns all logs and schedules a job that reads remain logs.\n * Notifies when a new portion of the log appeared. */\n getLastLogs(res: PlTreeEntry, lines: number): Computable<string | undefined>;\n getLastLogs(res: PlTreeEntry, lines: number, ctx: ComputableCtx): Computable<string | undefined>;\n getLastLogs(\n res: PlTreeEntry,\n lines: number,\n ctx?: ComputableCtx,\n ): Computable<string | undefined> | string | undefined {\n if (ctx === undefined) return Computable.make((ctx) => this.getLastLogs(res, lines, ctx));\n\n const stream = streamManagerGetStream(ctx, res);\n if (stream === undefined) {\n ctx.markUnstable('no stream in stream manager');\n return undefined;\n }\n\n if (isBlob(stream)) return this.downloadDriver.getLastLogs(stream, lines, ctx);\n\n try {\n return this.logsStreamDriver.getLastLogs(stream, lines, ctx);\n } catch (e: any) {\n if (e.name == 'RpcError' && e.code == 'NOT_FOUND') {\n ctx.markUnstable(`NOT_FOUND in logs stream driver while getting last logs: ${e}`);\n return undefined;\n }\n throw e;\n }\n }\n\n /** Returns a last line that has patternToSearch.\n * Notifies when a new line appeared or EOF reached. */\n getProgressLog(res: PlTreeEntry, patternToSearch: string): Computable<string | undefined>;\n getProgressLog(res: PlTreeEntry, patternToSearch: string, ctx: ComputableCtx): string | undefined;\n getProgressLog(\n res: PlTreeEntry,\n patternToSearch: string,\n ctx?: ComputableCtx,\n ): Computable<string | undefined> | string | undefined {\n if (ctx === undefined)\n return Computable.make((ctx) => this.getProgressLog(res, patternToSearch, ctx));\n\n const stream = streamManagerGetStream(ctx, res);\n if (stream === undefined) {\n ctx.markUnstable('no stream in stream manager');\n return undefined;\n }\n\n if (isBlob(stream)) return this.downloadDriver.getProgressLog(stream, patternToSearch, ctx);\n\n try {\n return this.logsStreamDriver.getProgressLog(stream, patternToSearch, ctx);\n } catch (e: any) {\n if (e.name == 'RpcError' && e.code == 'NOT_FOUND') {\n ctx.markUnstable(`NOT_FOUND in logs stream driver while getting a progress log: ${e}`);\n return undefined;\n }\n throw e;\n }\n }\n\n /** Same as getProgressLog but also returns a liveliness of the log.\n * The previous getProgressLog couldn't be extended.\n * Returns a last line that has patternToSearch.\n * Notifies when a new line appeared or EOF reached. */\n getProgressLogWithInfo(res: PlTreeEntry, patternToSearch: string): Computable<sdk.ProgressLogWithInfo | undefined>;\n getProgressLogWithInfo(res: PlTreeEntry, patternToSearch: string, ctx: ComputableCtx): sdk.ProgressLogWithInfo | undefined;\n getProgressLogWithInfo(\n res: PlTreeEntry,\n patternToSearch: string,\n ctx?: ComputableCtx,\n ): Computable<sdk.ProgressLogWithInfo | undefined> | sdk.ProgressLogWithInfo | undefined {\n if (ctx === undefined)\n return Computable.make((ctx) => this.getProgressLogWithInfo(res, patternToSearch, ctx));\n\n const stream = streamManagerGetStream(ctx, res);\n if (stream === undefined) {\n ctx.markUnstable('no stream in stream manager');\n return undefined;\n }\n\n if (isBlob(stream)) {\n const log = this.downloadDriver.getProgressLog(stream, patternToSearch, ctx);\n return {\n progressLine: log,\n live: false,\n }\n }\n\n try {\n const log = this.logsStreamDriver.getProgressLog(stream, patternToSearch, ctx);\n return {\n progressLine: log,\n live: true,\n }\n } catch (e: any) {\n if (e.name == 'RpcError' && e.code == 'NOT_FOUND') {\n ctx.markUnstable(`NOT_FOUND in logs stream driver while getting a progress log with info: ${e}`);\n return undefined;\n }\n throw e;\n }\n }\n\n /** Returns an Id of a smart object, that can read logs directly from\n * the platform. */\n getLogHandle(res: ResourceInfo | PlTreeEntry): Computable<sdk.AnyLogHandle | undefined>;\n getLogHandle(res: PlTreeEntry, ctx: ComputableCtx): sdk.AnyLogHandle | undefined;\n getLogHandle(\n res: PlTreeEntry,\n ctx?: ComputableCtx,\n ): Computable<sdk.AnyLogHandle | undefined> | sdk.AnyLogHandle | undefined {\n if (ctx === undefined) return Computable.make((ctx) => this.getLogHandle(res, ctx));\n\n const stream = streamManagerGetStream(ctx, res);\n if (stream === undefined) {\n ctx.markUnstable('no stream in stream manager');\n return undefined;\n }\n\n if (isBlob(stream)) return this.downloadDriver.getLogHandle(stream, ctx);\n\n return this.logsStreamDriver.getLogHandle(stream, ctx);\n }\n\n async lastLines(\n handle: sdk.AnyLogHandle,\n lineCount: number,\n offsetBytes?: number,\n searchStr?: string,\n ): Promise<sdk.StreamingApiResponse> {\n if (isLiveLogHandle(handle))\n return await this.logsStreamDriver.lastLines(handle, lineCount, offsetBytes, searchStr);\n return await this.downloadDriver.lastLines(handle, lineCount, offsetBytes, searchStr);\n }\n\n async readText(\n handle: sdk.AnyLogHandle,\n lineCount: number,\n offsetBytes?: number,\n searchStr?: string,\n ): Promise<sdk.StreamingApiResponse> {\n if (isLiveLogHandle(handle))\n return await this.logsStreamDriver.readText(handle, lineCount, offsetBytes, searchStr);\n return await this.downloadDriver.readText(handle, lineCount, offsetBytes, searchStr);\n }\n}\n\nfunction isBlob(rInfo: ResourceInfo) {\n return !rInfo.type.name.startsWith('StreamWorkdir');\n}\n\nfunction streamManagerGetStream(ctx: ComputableCtx, manager: PlTreeEntry) {\n return ctx.accessor(manager).node().traverse('stream')?.resourceInfo;\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,238 @@
1
+ 'use strict';
2
+
3
+ var computable = require('@milaboratories/computable');
4
+ var plClient = require('@milaboratories/pl-client');
5
+ var tsHelpers = require('@milaboratories/ts-helpers');
6
+ var node_crypto = require('node:crypto');
7
+ var plTree = require('@milaboratories/pl-tree');
8
+ var promises = require('node:timers/promises');
9
+ var logs_handle = require('./helpers/logs_handle.cjs');
10
+ var helpers = require('./helpers/helpers.cjs');
11
+
12
+ class LogsStreamDriver {
13
+ logger;
14
+ clientLogs;
15
+ opts;
16
+ /** Holds a map of StreamManager Resource Id to all logs of this stream. */
17
+ idToLastLines = new Map();
18
+ /** Holds a map of StreamManager Resource Id to the last log line of this stream. */
19
+ idToProgressLog = new Map();
20
+ /** Holds a map of StreamManager Resource Id to log id smart object. */
21
+ hooks;
22
+ constructor(logger, clientLogs, opts = {
23
+ nConcurrentGetLogs: 10,
24
+ pollingInterval: 1000,
25
+ stopPollingDelay: 1000,
26
+ }) {
27
+ this.logger = logger;
28
+ this.clientLogs = clientLogs;
29
+ this.opts = opts;
30
+ this.hooks = new computable.PollingComputableHooks(() => this.startUpdating(), () => this.stopUpdating(), { stopDebounce: opts.stopPollingDelay }, (resolve, reject) => this.scheduleOnNextState(resolve, reject));
31
+ }
32
+ getLastLogs(res, lines, ctx) {
33
+ if (ctx == undefined)
34
+ return computable.Computable.make((ctx) => this.getLastLogs(res, lines, ctx));
35
+ const r = plTree.treeEntryToResourceInfo(res, ctx);
36
+ const callerId = node_crypto.randomUUID();
37
+ ctx.attacheHooks(this.hooks);
38
+ ctx.addOnDestroy(() => this.releaseLastLogs(r.id, callerId));
39
+ const result = this.getLastLogsNoCtx(ctx.watcher, r, lines, callerId);
40
+ ctx.markUnstable('The logs are from stream, so we consider them unstable. Final values will be got from blobs.');
41
+ return result;
42
+ }
43
+ getLastLogsNoCtx(w, rInfo, lines, callerId) {
44
+ validateResourceType('getLastLogs', rInfo.type);
45
+ let logGetter = this.idToLastLines.get(rInfo.id);
46
+ if (logGetter == undefined) {
47
+ const newLogGetter = new LogGetter(this.logger, this.clientLogs, rInfo, lines);
48
+ this.idToLastLines.set(rInfo.id, newLogGetter);
49
+ logGetter = newLogGetter;
50
+ }
51
+ logGetter.attach(w, callerId);
52
+ const result = logGetter.getLog();
53
+ if (result.error != undefined)
54
+ throw result.error;
55
+ return result.log;
56
+ }
57
+ getProgressLog(res, patternToSearch, ctx) {
58
+ if (ctx == undefined)
59
+ return computable.Computable.make((ctx) => this.getProgressLog(res, patternToSearch, ctx));
60
+ const r = plTree.treeEntryToResourceInfo(res, ctx);
61
+ const callerId = node_crypto.randomUUID();
62
+ ctx.attacheHooks(this.hooks);
63
+ ctx.addOnDestroy(() => this.releaseProgressLog(r.id, callerId));
64
+ const result = this.getProgressLogNoCtx(ctx.watcher, r, patternToSearch, callerId);
65
+ ctx.markUnstable('The progress log is from the stream, so we consider it unstable. Final value will be got from blobs.');
66
+ return result;
67
+ }
68
+ getProgressLogNoCtx(w, rInfo, patternToSearch, callerId) {
69
+ validateResourceType('getProgressLog', rInfo.type);
70
+ let logGetter = this.idToProgressLog.get(rInfo.id);
71
+ if (logGetter == undefined) {
72
+ const newLogGetter = new LogGetter(this.logger, this.clientLogs, rInfo, 1, patternToSearch);
73
+ this.idToProgressLog.set(rInfo.id, newLogGetter);
74
+ logGetter = newLogGetter;
75
+ }
76
+ logGetter.attach(w, callerId);
77
+ const result = logGetter.getLog();
78
+ if (result.error)
79
+ throw result.error;
80
+ return result.log;
81
+ }
82
+ getLogHandle(res, ctx) {
83
+ if (ctx == undefined)
84
+ return computable.Computable.make((ctx) => this.getLogHandle(res, ctx));
85
+ const r = plTree.treeEntryToResourceInfo(res, ctx);
86
+ const result = this.getLogHandleNoCtx(r);
87
+ // All logs from streams should be considered unstable,
88
+ // final value will be got from blobs.
89
+ ctx.markUnstable(`live_log:${plClient.resourceIdToString(r.id)}`);
90
+ return result;
91
+ }
92
+ getLogHandleNoCtx(rInfo) {
93
+ validateResourceType('getLogHandle', rInfo.type);
94
+ return logs_handle.newLogHandle(true, rInfo);
95
+ }
96
+ async lastLines(handle, lineCount, offsetBytes, searchStr) {
97
+ return await this.tryWithNotFound(handle, () => this.clientLogs.lastLines(logs_handle.getResourceInfoFromLogHandle(handle), lineCount, BigInt(offsetBytes ?? 0), searchStr));
98
+ }
99
+ async readText(handle, lineCount, offsetBytes, searchStr) {
100
+ return await this.tryWithNotFound(handle, () => this.clientLogs.readText(logs_handle.getResourceInfoFromLogHandle(handle), lineCount, BigInt(offsetBytes ?? 0), searchStr));
101
+ }
102
+ async tryWithNotFound(handle, method) {
103
+ if (!logs_handle.isLiveLogHandle(handle))
104
+ throw new Error(`Not live log handle was passed to live log driver, handle: ${handle}`);
105
+ try {
106
+ const resp = await method();
107
+ return {
108
+ live: true,
109
+ shouldUpdateHandle: false,
110
+ data: resp.data,
111
+ size: Number(resp.size),
112
+ newOffset: Number(resp.newOffset),
113
+ };
114
+ }
115
+ catch (e) {
116
+ if (e.name == 'RpcError' && e.code == 'NOT_FOUND') {
117
+ return { shouldUpdateHandle: true };
118
+ }
119
+ throw e;
120
+ }
121
+ }
122
+ async releaseLastLogs(rId, callerId) {
123
+ const deleted = this.idToLastLines.get(rId)?.release(callerId);
124
+ if (deleted)
125
+ this.idToLastLines.delete(rId);
126
+ }
127
+ async releaseProgressLog(rId, callerId) {
128
+ const deleted = this.idToProgressLog.get(rId)?.release(callerId);
129
+ if (deleted)
130
+ this.idToProgressLog.delete(rId);
131
+ }
132
+ async releaseAll() { }
133
+ scheduledOnNextState = [];
134
+ scheduleOnNextState(resolve, reject) {
135
+ this.scheduledOnNextState.push({ resolve, reject });
136
+ }
137
+ /** Called from observer */
138
+ startUpdating() {
139
+ this.keepRunning = true;
140
+ if (this.currentLoop === undefined)
141
+ this.currentLoop = this.mainLoop();
142
+ }
143
+ /** Called from observer */
144
+ stopUpdating() {
145
+ this.keepRunning = false;
146
+ }
147
+ /** If true, main loop will continue polling pl state. */
148
+ keepRunning = false;
149
+ /** Actual state of main loop. */
150
+ currentLoop = undefined;
151
+ async mainLoop() {
152
+ while (this.keepRunning) {
153
+ const toNotify = this.scheduledOnNextState;
154
+ this.scheduledOnNextState = [];
155
+ try {
156
+ const logs = this.getAllLogs();
157
+ await tsHelpers.asyncPool(this.opts.nConcurrentGetLogs, logs.map((getter) => async () => await getter.update()));
158
+ toNotify.forEach((n) => n.resolve());
159
+ }
160
+ catch (e) {
161
+ console.error(e);
162
+ toNotify.forEach((n) => n.reject(e));
163
+ }
164
+ if (!this.keepRunning)
165
+ break;
166
+ await promises.scheduler.wait(this.opts.pollingInterval);
167
+ }
168
+ this.currentLoop = undefined;
169
+ }
170
+ getAllLogs() {
171
+ return Array.from(this.idToLastLines.entries())
172
+ .concat(Array.from(this.idToProgressLog.entries()))
173
+ .map(([_, getter]) => getter);
174
+ }
175
+ }
176
+ /** A job that gets last lines from a StreamWorkdir resource. */
177
+ class LogGetter {
178
+ logger;
179
+ clientLogs;
180
+ rInfo;
181
+ lines;
182
+ patternToSearch;
183
+ logs;
184
+ error = undefined;
185
+ change = new computable.ChangeSource();
186
+ counter = new tsHelpers.CallersCounter();
187
+ constructor(logger, clientLogs, rInfo, lines, patternToSearch) {
188
+ this.logger = logger;
189
+ this.clientLogs = clientLogs;
190
+ this.rInfo = rInfo;
191
+ this.lines = lines;
192
+ this.patternToSearch = patternToSearch;
193
+ }
194
+ getLog() {
195
+ return {
196
+ log: this.logs,
197
+ error: this.error,
198
+ };
199
+ }
200
+ attach(w, callerId) {
201
+ this.change.attachWatcher(w);
202
+ this.counter.inc(callerId);
203
+ }
204
+ release(callerId) {
205
+ return this.counter.dec(callerId);
206
+ }
207
+ async update() {
208
+ try {
209
+ const resp = await this.clientLogs.lastLines(this.rInfo, this.lines, 0n, this.patternToSearch);
210
+ const newLogs = new TextDecoder().decode(resp.data);
211
+ if (this.logs != newLogs)
212
+ this.change.markChanged(`logs for ${plClient.resourceIdToString(this.rInfo.id)} updated`);
213
+ this.logs = newLogs;
214
+ this.error = undefined;
215
+ return;
216
+ }
217
+ catch (e) {
218
+ if (e.name == 'RpcError' && e.code == 'NOT_FOUND') {
219
+ // No resource
220
+ this.logs = '';
221
+ this.error = e;
222
+ this.change.markChanged();
223
+ return;
224
+ }
225
+ this.logger.error(`Stream log lines for ${plClient.stringifyWithResourceId(this.rInfo.id)} failed, reason: ${e}`);
226
+ throw e;
227
+ }
228
+ }
229
+ }
230
+ function validateResourceType(methodName, rType) {
231
+ if (!rType.name.startsWith('StreamWorkdir')) {
232
+ throw new helpers.WrongResourceTypeError(`${methodName}: wrong resource type: ${rType.name}, `
233
+ + `expected: a resource of type 'StreamWorkdir'.`);
234
+ }
235
+ }
236
+
237
+ exports.LogsStreamDriver = LogsStreamDriver;
238
+ //# sourceMappingURL=logs_stream.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs_stream.cjs","sources":["../../src/drivers/logs_stream.ts"],"sourcesContent":["import type {\n ComputableCtx,\n Watcher,\n} from '@milaboratories/computable';\nimport {\n ChangeSource,\n Computable,\n PollingComputableHooks,\n} from '@milaboratories/computable';\nimport type {\n ResourceId,\n ResourceType } from '@milaboratories/pl-client';\nimport {\n resourceIdToString,\n stringifyWithResourceId,\n} from '@milaboratories/pl-client';\nimport type { MiLogger } from '@milaboratories/ts-helpers';\nimport { asyncPool, CallersCounter } from '@milaboratories/ts-helpers';\nimport type { ClientLogs } from '../clients/logs';\nimport { randomUUID } from 'node:crypto';\nimport type { PlTreeEntry, ResourceInfo } from '@milaboratories/pl-tree';\nimport { treeEntryToResourceInfo } from '@milaboratories/pl-tree';\nimport { scheduler } from 'node:timers/promises';\nimport type { StreamingAPI_Response } from '../proto/github.com/milaboratory/pl/controllers/shared/grpc/streamingapi/protocol';\nimport type * as sdk from '@milaboratories/pl-model-common';\nimport type { PollingOps } from './helpers/polling_ops';\nimport type { RpcError } from '@protobuf-ts/runtime-rpc';\nimport { getResourceInfoFromLogHandle, isLiveLogHandle, newLogHandle } from './helpers/logs_handle';\nimport { WrongResourceTypeError } from './helpers/helpers';\n\nexport type LogsStreamDriverOps = PollingOps & {\n /** Max number of concurrent requests to log streaming backend while calculating computable states */\n nConcurrentGetLogs: number;\n};\n\nexport class LogsStreamDriver implements sdk.LogsDriver {\n /** Holds a map of StreamManager Resource Id to all logs of this stream. */\n private readonly idToLastLines: Map<ResourceId, LogGetter> = new Map();\n\n /** Holds a map of StreamManager Resource Id to the last log line of this stream. */\n private readonly idToProgressLog: Map<ResourceId, LogGetter> = new Map();\n\n /** Holds a map of StreamManager Resource Id to log id smart object. */\n private readonly hooks: PollingComputableHooks;\n\n constructor(\n private readonly logger: MiLogger,\n private readonly clientLogs: ClientLogs,\n private readonly opts: LogsStreamDriverOps = {\n nConcurrentGetLogs: 10,\n pollingInterval: 1000,\n stopPollingDelay: 1000,\n },\n ) {\n this.hooks = new PollingComputableHooks(\n () => this.startUpdating(),\n () => this.stopUpdating(),\n { stopDebounce: opts.stopPollingDelay },\n (resolve, reject) => this.scheduleOnNextState(resolve, reject),\n );\n }\n\n getLastLogs(res: ResourceInfo | PlTreeEntry, lines: number): Computable<string | undefined>;\n getLastLogs(\n res: ResourceInfo | PlTreeEntry,\n lines: number,\n ctx: ComputableCtx\n ): Computable<string | undefined>;\n getLastLogs(\n res: ResourceInfo | PlTreeEntry,\n lines: number,\n ctx?: ComputableCtx,\n ): Computable<string | undefined> | string | undefined {\n if (ctx == undefined) return Computable.make((ctx) => this.getLastLogs(res, lines, ctx));\n\n const r = treeEntryToResourceInfo(res, ctx);\n const callerId = randomUUID();\n ctx.attacheHooks(this.hooks);\n ctx.addOnDestroy(() => this.releaseLastLogs(r.id, callerId));\n\n const result = this.getLastLogsNoCtx(ctx.watcher, r, lines, callerId);\n ctx.markUnstable(\n 'The logs are from stream, so we consider them unstable. Final values will be got from blobs.',\n );\n\n return result;\n }\n\n private getLastLogsNoCtx(\n w: Watcher,\n rInfo: ResourceInfo,\n lines: number,\n callerId: string,\n ): string | undefined {\n validateResourceType('getLastLogs', rInfo.type);\n\n let logGetter = this.idToLastLines.get(rInfo.id);\n\n if (logGetter == undefined) {\n const newLogGetter = new LogGetter(this.logger, this.clientLogs, rInfo, lines);\n this.idToLastLines.set(rInfo.id, newLogGetter);\n\n logGetter = newLogGetter;\n }\n\n logGetter.attach(w, callerId);\n const result = logGetter.getLog();\n if (result.error != undefined) throw result.error;\n\n return result.log;\n }\n\n /** Returns a last line that has patternToSearch.\n * Notifies when a new line appeared or EOF reached. */\n getProgressLog(\n res: ResourceInfo | PlTreeEntry,\n patternToSearch: string\n ): Computable<string | undefined>;\n getProgressLog(\n res: ResourceInfo | PlTreeEntry,\n patternToSearch: string,\n ctx: ComputableCtx\n ): string | undefined;\n getProgressLog(\n res: ResourceInfo | PlTreeEntry,\n patternToSearch: string,\n ctx?: ComputableCtx,\n ): Computable<string | undefined> | string | undefined {\n if (ctx == undefined)\n return Computable.make((ctx) => this.getProgressLog(res, patternToSearch, ctx));\n\n const r = treeEntryToResourceInfo(res, ctx);\n const callerId = randomUUID();\n ctx.attacheHooks(this.hooks);\n ctx.addOnDestroy(() => this.releaseProgressLog(r.id, callerId));\n\n const result = this.getProgressLogNoCtx(ctx.watcher, r, patternToSearch, callerId);\n ctx.markUnstable(\n 'The progress log is from the stream, so we consider it unstable. Final value will be got from blobs.',\n );\n\n return result;\n }\n\n private getProgressLogNoCtx(\n w: Watcher,\n rInfo: ResourceInfo,\n patternToSearch: string,\n callerId: string,\n ): string | undefined {\n validateResourceType('getProgressLog', rInfo.type);\n\n let logGetter = this.idToProgressLog.get(rInfo.id);\n\n if (logGetter == undefined) {\n const newLogGetter = new LogGetter(this.logger, this.clientLogs, rInfo, 1, patternToSearch);\n this.idToProgressLog.set(rInfo.id, newLogGetter);\n\n logGetter = newLogGetter;\n }\n\n logGetter.attach(w, callerId);\n const result = logGetter.getLog();\n if (result.error) throw result.error;\n\n return result.log;\n }\n\n getLogHandle(res: ResourceInfo | PlTreeEntry): Computable<sdk.AnyLogHandle>;\n getLogHandle(res: ResourceInfo | PlTreeEntry, ctx: ComputableCtx): sdk.AnyLogHandle;\n getLogHandle(\n res: ResourceInfo | PlTreeEntry,\n ctx?: ComputableCtx,\n ): Computable<sdk.AnyLogHandle> | sdk.AnyLogHandle {\n if (ctx == undefined) return Computable.make((ctx) => this.getLogHandle(res, ctx));\n\n const r = treeEntryToResourceInfo(res, ctx);\n\n const result = this.getLogHandleNoCtx(r);\n\n // All logs from streams should be considered unstable,\n // final value will be got from blobs.\n ctx.markUnstable(`live_log:${resourceIdToString(r.id)}`);\n\n return result;\n }\n\n private getLogHandleNoCtx(rInfo: ResourceInfo): sdk.AnyLogHandle {\n validateResourceType('getLogHandle', rInfo.type);\n\n return newLogHandle(true, rInfo);\n }\n\n async lastLines(\n handle: sdk.AnyLogHandle,\n lineCount: number,\n offsetBytes?: number,\n searchStr?: string | undefined,\n ) {\n return await this.tryWithNotFound(handle, () =>\n this.clientLogs.lastLines(\n getResourceInfoFromLogHandle(handle),\n lineCount,\n BigInt(offsetBytes ?? 0),\n searchStr,\n ),\n );\n }\n\n async readText(\n handle: sdk.AnyLogHandle,\n lineCount: number,\n offsetBytes?: number,\n searchStr?: string | undefined,\n ) {\n return await this.tryWithNotFound(handle, () =>\n this.clientLogs.readText(\n getResourceInfoFromLogHandle(handle),\n lineCount,\n BigInt(offsetBytes ?? 0),\n searchStr,\n ),\n );\n }\n\n private async tryWithNotFound(\n handle: sdk.AnyLogHandle,\n method: () => Promise<StreamingAPI_Response>,\n ): Promise<sdk.StreamingApiResponse> {\n if (!isLiveLogHandle(handle))\n throw new Error(`Not live log handle was passed to live log driver, handle: ${handle}`);\n\n try {\n const resp = await method();\n return {\n live: true,\n shouldUpdateHandle: false,\n data: resp.data,\n size: Number(resp.size),\n newOffset: Number(resp.newOffset),\n };\n } catch (e: any) {\n if (e.name == 'RpcError' && e.code == 'NOT_FOUND') {\n return { shouldUpdateHandle: true };\n }\n\n throw e;\n }\n }\n\n private async releaseLastLogs(rId: ResourceId, callerId: string) {\n const deleted = this.idToLastLines.get(rId)?.release(callerId);\n if (deleted) this.idToLastLines.delete(rId);\n }\n\n private async releaseProgressLog(rId: ResourceId, callerId: string) {\n const deleted = this.idToProgressLog.get(rId)?.release(callerId);\n if (deleted) this.idToProgressLog.delete(rId);\n }\n\n async releaseAll() {}\n\n private scheduledOnNextState: ScheduledRefresh[] = [];\n\n private scheduleOnNextState(resolve: () => void, reject: (err: any) => void): void {\n this.scheduledOnNextState.push({ resolve, reject });\n }\n\n /** Called from observer */\n private startUpdating(): void {\n this.keepRunning = true;\n if (this.currentLoop === undefined) this.currentLoop = this.mainLoop();\n }\n\n /** Called from observer */\n private stopUpdating(): void {\n this.keepRunning = false;\n }\n\n /** If true, main loop will continue polling pl state. */\n private keepRunning = false;\n /** Actual state of main loop. */\n private currentLoop: Promise<void> | undefined = undefined;\n\n private async mainLoop() {\n while (this.keepRunning) {\n const toNotify = this.scheduledOnNextState;\n this.scheduledOnNextState = [];\n\n try {\n const logs = this.getAllLogs();\n await asyncPool(\n this.opts.nConcurrentGetLogs,\n logs.map((getter) => async () => await getter.update()),\n );\n\n toNotify.forEach((n) => n.resolve());\n } catch (e: any) {\n console.error(e);\n toNotify.forEach((n) => n.reject(e));\n }\n\n if (!this.keepRunning) break;\n await scheduler.wait(this.opts.pollingInterval);\n }\n\n this.currentLoop = undefined;\n }\n\n private getAllLogs(): Array<LogGetter> {\n return Array.from(this.idToLastLines.entries())\n .concat(Array.from(this.idToProgressLog.entries()))\n .map(([_, getter]) => getter);\n }\n}\n\n/** A job that gets last lines from a StreamWorkdir resource. */\nclass LogGetter {\n private logs: string | undefined;\n private error: any | undefined = undefined;\n\n private readonly change: ChangeSource = new ChangeSource();\n private readonly counter: CallersCounter = new CallersCounter();\n\n constructor(\n private readonly logger: MiLogger,\n private readonly clientLogs: ClientLogs,\n private readonly rInfo: ResourceInfo,\n private readonly lines: number,\n private readonly patternToSearch?: string,\n ) {}\n\n getLog(): {\n log: string | undefined;\n error?: any | undefined;\n } {\n return {\n log: this.logs,\n error: this.error,\n };\n }\n\n attach(w: Watcher, callerId: string) {\n this.change.attachWatcher(w);\n this.counter.inc(callerId);\n }\n\n release(callerId: string): boolean {\n return this.counter.dec(callerId);\n }\n\n async update() {\n try {\n const resp = await this.clientLogs.lastLines(\n this.rInfo,\n this.lines,\n 0n,\n this.patternToSearch,\n );\n\n const newLogs = new TextDecoder().decode(resp.data);\n if (this.logs != newLogs) this.change.markChanged(`logs for ${resourceIdToString(this.rInfo.id)} updated`);\n this.logs = newLogs;\n this.error = undefined;\n\n return;\n } catch (e: any) {\n e as RpcError;\n if (e.name == 'RpcError' && e.code == 'NOT_FOUND') {\n // No resource\n this.logs = '';\n this.error = e;\n this.change.markChanged();\n return;\n }\n\n this.logger.error(\n `Stream log lines for ${stringifyWithResourceId(this.rInfo.id)} failed, reason: ${e}`,\n );\n throw e;\n }\n }\n}\n\ntype ScheduledRefresh = {\n resolve: () => void;\n reject: (err: any) => void;\n};\n\nfunction validateResourceType(methodName: string, rType: ResourceType) {\n if (!rType.name.startsWith('StreamWorkdir')) {\n throw new WrongResourceTypeError(\n `${methodName}: wrong resource type: ${rType.name}, `\n + `expected: a resource of type 'StreamWorkdir'.`,\n );\n }\n}\n"],"names":["PollingComputableHooks","Computable","treeEntryToResourceInfo","randomUUID","resourceIdToString","newLogHandle","getResourceInfoFromLogHandle","isLiveLogHandle","asyncPool","scheduler","ChangeSource","CallersCounter","stringifyWithResourceId","WrongResourceTypeError"],"mappings":";;;;;;;;;;;MAmCa,gBAAgB,CAAA;AAWR,IAAA,MAAA;AACA,IAAA,UAAA;AACA,IAAA,IAAA;;AAXF,IAAA,aAAa,GAA+B,IAAI,GAAG,EAAE;;AAGrD,IAAA,eAAe,GAA+B,IAAI,GAAG,EAAE;;AAGvD,IAAA,KAAK;AAEtB,IAAA,WAAA,CACmB,MAAgB,EAChB,UAAsB,EACtB,IAAA,GAA4B;AAC3C,QAAA,kBAAkB,EAAE,EAAE;AACtB,QAAA,eAAe,EAAE,IAAI;AACrB,QAAA,gBAAgB,EAAE,IAAI;AACvB,KAAA,EAAA;QANgB,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,UAAU,GAAV,UAAU;QACV,IAAA,CAAA,IAAI,GAAJ,IAAI;QAMrB,IAAI,CAAC,KAAK,GAAG,IAAIA,iCAAsB,CACrC,MAAM,IAAI,CAAC,aAAa,EAAE,EAC1B,MAAM,IAAI,CAAC,YAAY,EAAE,EACzB,EAAE,YAAY,EAAE,IAAI,CAAC,gBAAgB,EAAE,EACvC,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,CAC/D;IACH;AAQA,IAAA,WAAW,CACT,GAA+B,EAC/B,KAAa,EACb,GAAmB,EAAA;QAEnB,IAAI,GAAG,IAAI,SAAS;YAAE,OAAOC,qBAAU,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QAExF,MAAM,CAAC,GAAGC,8BAAuB,CAAC,GAAG,EAAE,GAAG,CAAC;AAC3C,QAAA,MAAM,QAAQ,GAAGC,sBAAU,EAAE;AAC7B,QAAA,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5B,QAAA,GAAG,CAAC,YAAY,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AAE5D,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC;AACrE,QAAA,GAAG,CAAC,YAAY,CACd,8FAA8F,CAC/F;AAED,QAAA,OAAO,MAAM;IACf;AAEQ,IAAA,gBAAgB,CACtB,CAAU,EACV,KAAmB,EACnB,KAAa,EACb,QAAgB,EAAA;AAEhB,QAAA,oBAAoB,CAAC,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC;AAE/C,QAAA,IAAI,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;AAEhD,QAAA,IAAI,SAAS,IAAI,SAAS,EAAE;AAC1B,YAAA,MAAM,YAAY,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC;YAC9E,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,YAAY,CAAC;YAE9C,SAAS,GAAG,YAAY;QAC1B;AAEA,QAAA,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC;AAC7B,QAAA,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE;AACjC,QAAA,IAAI,MAAM,CAAC,KAAK,IAAI,SAAS;YAAE,MAAM,MAAM,CAAC,KAAK;QAEjD,OAAO,MAAM,CAAC,GAAG;IACnB;AAaA,IAAA,cAAc,CACZ,GAA+B,EAC/B,eAAuB,EACvB,GAAmB,EAAA;QAEnB,IAAI,GAAG,IAAI,SAAS;YAClB,OAAOF,qBAAU,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC;QAEjF,MAAM,CAAC,GAAGC,8BAAuB,CAAC,GAAG,EAAE,GAAG,CAAC;AAC3C,QAAA,MAAM,QAAQ,GAAGC,sBAAU,EAAE;AAC7B,QAAA,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5B,QAAA,GAAG,CAAC,YAAY,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AAE/D,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,EAAE,eAAe,EAAE,QAAQ,CAAC;AAClF,QAAA,GAAG,CAAC,YAAY,CACd,sGAAsG,CACvG;AAED,QAAA,OAAO,MAAM;IACf;AAEQ,IAAA,mBAAmB,CACzB,CAAU,EACV,KAAmB,EACnB,eAAuB,EACvB,QAAgB,EAAA;AAEhB,QAAA,oBAAoB,CAAC,gBAAgB,EAAE,KAAK,CAAC,IAAI,CAAC;AAElD,QAAA,IAAI,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;AAElD,QAAA,IAAI,SAAS,IAAI,SAAS,EAAE;AAC1B,YAAA,MAAM,YAAY,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,eAAe,CAAC;YAC3F,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,YAAY,CAAC;YAEhD,SAAS,GAAG,YAAY;QAC1B;AAEA,QAAA,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC;AAC7B,QAAA,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE;QACjC,IAAI,MAAM,CAAC,KAAK;YAAE,MAAM,MAAM,CAAC,KAAK;QAEpC,OAAO,MAAM,CAAC,GAAG;IACnB;IAIA,YAAY,CACV,GAA+B,EAC/B,GAAmB,EAAA;QAEnB,IAAI,GAAG,IAAI,SAAS;AAAE,YAAA,OAAOF,qBAAU,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAElF,MAAM,CAAC,GAAGC,8BAAuB,CAAC,GAAG,EAAE,GAAG,CAAC;QAE3C,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;;;AAIxC,QAAA,GAAG,CAAC,YAAY,CAAC,CAAA,SAAA,EAAYE,2BAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA,CAAE,CAAC;AAExD,QAAA,OAAO,MAAM;IACf;AAEQ,IAAA,iBAAiB,CAAC,KAAmB,EAAA;AAC3C,QAAA,oBAAoB,CAAC,cAAc,EAAE,KAAK,CAAC,IAAI,CAAC;AAEhD,QAAA,OAAOC,wBAAY,CAAC,IAAI,EAAE,KAAK,CAAC;IAClC;IAEA,MAAM,SAAS,CACb,MAAwB,EACxB,SAAiB,EACjB,WAAoB,EACpB,SAA8B,EAAA;AAE9B,QAAA,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,MACxC,IAAI,CAAC,UAAU,CAAC,SAAS,CACvBC,wCAA4B,CAAC,MAAM,CAAC,EACpC,SAAS,EACT,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC,EACxB,SAAS,CACV,CACF;IACH;IAEA,MAAM,QAAQ,CACZ,MAAwB,EACxB,SAAiB,EACjB,WAAoB,EACpB,SAA8B,EAAA;AAE9B,QAAA,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,MACxC,IAAI,CAAC,UAAU,CAAC,QAAQ,CACtBA,wCAA4B,CAAC,MAAM,CAAC,EACpC,SAAS,EACT,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC,EACxB,SAAS,CACV,CACF;IACH;AAEQ,IAAA,MAAM,eAAe,CAC3B,MAAwB,EACxB,MAA4C,EAAA;AAE5C,QAAA,IAAI,CAACC,2BAAe,CAAC,MAAM,CAAC;AAC1B,YAAA,MAAM,IAAI,KAAK,CAAC,8DAA8D,MAAM,CAAA,CAAE,CAAC;AAEzF,QAAA,IAAI;AACF,YAAA,MAAM,IAAI,GAAG,MAAM,MAAM,EAAE;YAC3B,OAAO;AACL,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,kBAAkB,EAAE,KAAK;gBACzB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,gBAAA,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AACvB,gBAAA,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;aAClC;QACH;QAAE,OAAO,CAAM,EAAE;AACf,YAAA,IAAI,CAAC,CAAC,IAAI,IAAI,UAAU,IAAI,CAAC,CAAC,IAAI,IAAI,WAAW,EAAE;AACjD,gBAAA,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE;YACrC;AAEA,YAAA,MAAM,CAAC;QACT;IACF;AAEQ,IAAA,MAAM,eAAe,CAAC,GAAe,EAAE,QAAgB,EAAA;AAC7D,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC;AAC9D,QAAA,IAAI,OAAO;AAAE,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC;IAC7C;AAEQ,IAAA,MAAM,kBAAkB,CAAC,GAAe,EAAE,QAAgB,EAAA;AAChE,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC;AAChE,QAAA,IAAI,OAAO;AAAE,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC;IAC/C;IAEA,MAAM,UAAU,GAAA,EAAI;IAEZ,oBAAoB,GAAuB,EAAE;IAE7C,mBAAmB,CAAC,OAAmB,EAAE,MAA0B,EAAA;QACzE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IACrD;;IAGQ,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;AAAE,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE;IACxE;;IAGQ,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;IAC1B;;IAGQ,WAAW,GAAG,KAAK;;IAEnB,WAAW,GAA8B,SAAS;AAElD,IAAA,MAAM,QAAQ,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE;AACvB,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB;AAC1C,YAAA,IAAI,CAAC,oBAAoB,GAAG,EAAE;AAE9B,YAAA,IAAI;AACF,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE;AAC9B,gBAAA,MAAMC,mBAAS,CACb,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAC5B,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,YAAY,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC,CACxD;AAED,gBAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;YACtC;YAAE,OAAO,CAAM,EAAE;AACf,gBAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAChB,gBAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACtC;YAEA,IAAI,CAAC,IAAI,CAAC,WAAW;gBAAE;YACvB,MAAMC,kBAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;QACjD;AAEA,QAAA,IAAI,CAAC,WAAW,GAAG,SAAS;IAC9B;IAEQ,UAAU,GAAA;QAChB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;AAC3C,aAAA,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;AACjD,aAAA,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,MAAM,CAAC;IACjC;AACD;AAED;AACA,MAAM,SAAS,CAAA;AAQM,IAAA,MAAA;AACA,IAAA,UAAA;AACA,IAAA,KAAA;AACA,IAAA,KAAA;AACA,IAAA,eAAA;AAXX,IAAA,IAAI;IACJ,KAAK,GAAoB,SAAS;AAEzB,IAAA,MAAM,GAAiB,IAAIC,uBAAY,EAAE;AACzC,IAAA,OAAO,GAAmB,IAAIC,wBAAc,EAAE;IAE/D,WAAA,CACmB,MAAgB,EAChB,UAAsB,EACtB,KAAmB,EACnB,KAAa,EACb,eAAwB,EAAA;QAJxB,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,UAAU,GAAV,UAAU;QACV,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,eAAe,GAAf,eAAe;IAC/B;IAEH,MAAM,GAAA;QAIJ,OAAO;YACL,GAAG,EAAE,IAAI,CAAC,IAAI;YACd,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB;IACH;IAEA,MAAM,CAAC,CAAU,EAAE,QAAgB,EAAA;AACjC,QAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC5B;AAEA,IAAA,OAAO,CAAC,QAAgB,EAAA;QACtB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;IACnC;AAEA,IAAA,MAAM,MAAM,GAAA;AACV,QAAA,IAAI;YACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAC1C,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,KAAK,EACV,EAAE,EACF,IAAI,CAAC,eAAe,CACrB;AAED,YAAA,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AACnD,YAAA,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO;AAAE,gBAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,YAAYP,2BAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA,QAAA,CAAU,CAAC;AAC1G,YAAA,IAAI,CAAC,IAAI,GAAG,OAAO;AACnB,YAAA,IAAI,CAAC,KAAK,GAAG,SAAS;YAEtB;QACF;QAAE,OAAO,CAAM,EAAE;AAEf,YAAA,IAAI,CAAC,CAAC,IAAI,IAAI,UAAU,IAAI,CAAC,CAAC,IAAI,IAAI,WAAW,EAAE;;AAEjD,gBAAA,IAAI,CAAC,IAAI,GAAG,EAAE;AACd,gBAAA,IAAI,CAAC,KAAK,GAAG,CAAC;AACd,gBAAA,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;gBACzB;YACF;AAEA,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,CAAA,qBAAA,EAAwBQ,gCAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAA,CAAE,CACtF;AACD,YAAA,MAAM,CAAC;QACT;IACF;AACD;AAOD,SAAS,oBAAoB,CAAC,UAAkB,EAAE,KAAmB,EAAA;IACnE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE;QAC3C,MAAM,IAAIC,8BAAsB,CAC9B,CAAA,EAAG,UAAU,CAAA,uBAAA,EAA0B,KAAK,CAAC,IAAI,CAAA,EAAA;AAC/C,cAAA,CAAA,6CAAA,CAA+C,CAClD;IACH;AACF;;;;"}
@@ -49,4 +49,3 @@ export declare class LogsStreamDriver implements sdk.LogsDriver {
49
49
  private mainLoop;
50
50
  private getAllLogs;
51
51
  }
52
- //# sourceMappingURL=logs_stream.d.ts.map