@milaboratories/pl-middle-layer 1.48.11 → 1.48.13

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 (589) hide show
  1. package/dist/_virtual/_@oxc-project_runtime@0.114.0/helpers/usingCtx.cjs +59 -0
  2. package/dist/_virtual/_@oxc-project_runtime@0.114.0/helpers/usingCtx.js +58 -0
  3. package/dist/_virtual/_rolldown/runtime.cjs +29 -0
  4. package/dist/block_registry/index.cjs +3 -0
  5. package/dist/block_registry/index.d.ts +3 -4
  6. package/dist/block_registry/index.js +3 -0
  7. package/dist/block_registry/registry-v2-provider.cjs +18 -19
  8. package/dist/block_registry/registry-v2-provider.cjs.map +1 -1
  9. package/dist/block_registry/registry-v2-provider.d.ts +10 -6
  10. package/dist/block_registry/registry-v2-provider.js +17 -17
  11. package/dist/block_registry/registry-v2-provider.js.map +1 -1
  12. package/dist/block_registry/registry.cjs +188 -219
  13. package/dist/block_registry/registry.cjs.map +1 -1
  14. package/dist/block_registry/registry.d.ts +18 -14
  15. package/dist/block_registry/registry.js +184 -217
  16. package/dist/block_registry/registry.js.map +1 -1
  17. package/dist/block_registry/watcher.cjs +141 -170
  18. package/dist/block_registry/watcher.cjs.map +1 -1
  19. package/dist/block_registry/watcher.d.ts +26 -24
  20. package/dist/block_registry/watcher.js +139 -168
  21. package/dist/block_registry/watcher.js.map +1 -1
  22. package/dist/block_registry/well_known_registries.cjs +9 -8
  23. package/dist/block_registry/well_known_registries.cjs.map +1 -1
  24. package/dist/block_registry/well_known_registries.d.ts +8 -4
  25. package/dist/block_registry/well_known_registries.js +9 -7
  26. package/dist/block_registry/well_known_registries.js.map +1 -1
  27. package/dist/cfg_render/executor.cjs +136 -137
  28. package/dist/cfg_render/executor.cjs.map +1 -1
  29. package/dist/cfg_render/executor.js +133 -135
  30. package/dist/cfg_render/executor.js.map +1 -1
  31. package/dist/cfg_render/renderer.cjs +354 -462
  32. package/dist/cfg_render/renderer.cjs.map +1 -1
  33. package/dist/cfg_render/renderer.js +353 -460
  34. package/dist/cfg_render/renderer.js.map +1 -1
  35. package/dist/cfg_render/traverse.cjs +58 -60
  36. package/dist/cfg_render/traverse.cjs.map +1 -1
  37. package/dist/cfg_render/traverse.js +57 -58
  38. package/dist/cfg_render/traverse.js.map +1 -1
  39. package/dist/cfg_render/util.cjs +14 -19
  40. package/dist/cfg_render/util.cjs.map +1 -1
  41. package/dist/cfg_render/util.js +14 -17
  42. package/dist/cfg_render/util.js.map +1 -1
  43. package/dist/debug/index.cjs +13 -17
  44. package/dist/debug/index.cjs.map +1 -1
  45. package/dist/debug/index.js +13 -16
  46. package/dist/debug/index.js.map +1 -1
  47. package/dist/dev_env/index.cjs +60 -44
  48. package/dist/dev_env/index.cjs.map +1 -1
  49. package/dist/dev_env/index.js +57 -33
  50. package/dist/dev_env/index.js.map +1 -1
  51. package/dist/dev_env/util.cjs +12 -32
  52. package/dist/dev_env/util.cjs.map +1 -1
  53. package/dist/dev_env/util.js +10 -11
  54. package/dist/dev_env/util.js.map +1 -1
  55. package/dist/index.cjs +75 -74
  56. package/dist/index.d.ts +21 -13
  57. package/dist/index.js +25 -18
  58. package/dist/js_render/computable_context.cjs +432 -568
  59. package/dist/js_render/computable_context.cjs.map +1 -1
  60. package/dist/js_render/computable_context.js +431 -566
  61. package/dist/js_render/computable_context.js.map +1 -1
  62. package/dist/js_render/context.cjs +184 -237
  63. package/dist/js_render/context.cjs.map +1 -1
  64. package/dist/js_render/context.js +184 -235
  65. package/dist/js_render/context.js.map +1 -1
  66. package/dist/js_render/index.cjs +137 -156
  67. package/dist/js_render/index.cjs.map +1 -1
  68. package/dist/js_render/index.js +136 -154
  69. package/dist/js_render/index.js.map +1 -1
  70. package/dist/middle_layer/active_cfg.cjs +28 -35
  71. package/dist/middle_layer/active_cfg.cjs.map +1 -1
  72. package/dist/middle_layer/active_cfg.js +27 -33
  73. package/dist/middle_layer/active_cfg.js.map +1 -1
  74. package/dist/middle_layer/block.cjs +36 -42
  75. package/dist/middle_layer/block.cjs.map +1 -1
  76. package/dist/middle_layer/block.js +35 -40
  77. package/dist/middle_layer/block.js.map +1 -1
  78. package/dist/middle_layer/block_ctx.cjs +91 -133
  79. package/dist/middle_layer/block_ctx.cjs.map +1 -1
  80. package/dist/middle_layer/block_ctx.js +90 -131
  81. package/dist/middle_layer/block_ctx.js.map +1 -1
  82. package/dist/middle_layer/block_ctx_unsafe.cjs +20 -19
  83. package/dist/middle_layer/block_ctx_unsafe.cjs.map +1 -1
  84. package/dist/middle_layer/block_ctx_unsafe.js +20 -18
  85. package/dist/middle_layer/block_ctx_unsafe.js.map +1 -1
  86. package/dist/middle_layer/driver_kit.cjs +47 -51
  87. package/dist/middle_layer/driver_kit.cjs.map +1 -1
  88. package/dist/middle_layer/driver_kit.d.ts +31 -27
  89. package/dist/middle_layer/driver_kit.js +46 -49
  90. package/dist/middle_layer/driver_kit.js.map +1 -1
  91. package/dist/middle_layer/frontend_path.cjs +49 -55
  92. package/dist/middle_layer/frontend_path.cjs.map +1 -1
  93. package/dist/middle_layer/frontend_path.js +48 -53
  94. package/dist/middle_layer/frontend_path.js.map +1 -1
  95. package/dist/middle_layer/index.cjs +4 -0
  96. package/dist/middle_layer/index.d.ts +4 -5
  97. package/dist/middle_layer/index.js +4 -0
  98. package/dist/middle_layer/middle_layer.cjs +216 -245
  99. package/dist/middle_layer/middle_layer.cjs.map +1 -1
  100. package/dist/middle_layer/middle_layer.d.ts +95 -91
  101. package/dist/middle_layer/middle_layer.js +215 -243
  102. package/dist/middle_layer/middle_layer.js.map +1 -1
  103. package/dist/middle_layer/navigation_states.cjs +45 -38
  104. package/dist/middle_layer/navigation_states.cjs.map +1 -1
  105. package/dist/middle_layer/navigation_states.js +44 -36
  106. package/dist/middle_layer/navigation_states.js.map +1 -1
  107. package/dist/middle_layer/ops.cjs +56 -57
  108. package/dist/middle_layer/ops.cjs.map +1 -1
  109. package/dist/middle_layer/ops.d.ts +86 -96
  110. package/dist/middle_layer/ops.js +54 -55
  111. package/dist/middle_layer/ops.js.map +1 -1
  112. package/dist/middle_layer/project.cjs +497 -527
  113. package/dist/middle_layer/project.cjs.map +1 -1
  114. package/dist/middle_layer/project.d.ts +155 -152
  115. package/dist/middle_layer/project.js +494 -525
  116. package/dist/middle_layer/project.js.map +1 -1
  117. package/dist/middle_layer/project_list.cjs +45 -43
  118. package/dist/middle_layer/project_list.cjs.map +1 -1
  119. package/dist/middle_layer/project_list.js +45 -41
  120. package/dist/middle_layer/project_list.js.map +1 -1
  121. package/dist/middle_layer/project_overview.cjs +202 -240
  122. package/dist/middle_layer/project_overview.cjs.map +1 -1
  123. package/dist/middle_layer/project_overview.js +201 -238
  124. package/dist/middle_layer/project_overview.js.map +1 -1
  125. package/dist/middle_layer/project_overview_light.cjs +11 -14
  126. package/dist/middle_layer/project_overview_light.cjs.map +1 -1
  127. package/dist/middle_layer/project_overview_light.js +10 -12
  128. package/dist/middle_layer/project_overview_light.js.map +1 -1
  129. package/dist/middle_layer/render.cjs +14 -18
  130. package/dist/middle_layer/render.cjs.map +1 -1
  131. package/dist/middle_layer/render.js +13 -16
  132. package/dist/middle_layer/render.js.map +1 -1
  133. package/dist/middle_layer/types.d.ts +7 -10
  134. package/dist/middle_layer/util.cjs +26 -21
  135. package/dist/middle_layer/util.cjs.map +1 -1
  136. package/dist/middle_layer/util.js +25 -19
  137. package/dist/middle_layer/util.js.map +1 -1
  138. package/dist/model/args.cjs +44 -53
  139. package/dist/model/args.cjs.map +1 -1
  140. package/dist/model/args.js +44 -51
  141. package/dist/model/args.js.map +1 -1
  142. package/dist/model/block_pack_spec.cjs +9 -5
  143. package/dist/model/block_pack_spec.cjs.map +1 -1
  144. package/dist/model/block_pack_spec.d.ts +34 -30
  145. package/dist/model/block_pack_spec.js +9 -4
  146. package/dist/model/block_pack_spec.js.map +1 -1
  147. package/dist/model/frontend.d.ts +8 -5
  148. package/dist/model/index.d.ts +2 -3
  149. package/dist/model/project_helper.cjs +154 -193
  150. package/dist/model/project_helper.cjs.map +1 -1
  151. package/dist/model/project_helper.d.ts +96 -92
  152. package/dist/model/project_helper.js +153 -191
  153. package/dist/model/project_helper.js.map +1 -1
  154. package/dist/model/project_model.cjs +33 -32
  155. package/dist/model/project_model.cjs.map +1 -1
  156. package/dist/model/project_model.d.ts +13 -64
  157. package/dist/model/project_model.js +34 -30
  158. package/dist/model/project_model.js.map +1 -1
  159. package/dist/model/project_model_util.cjs +119 -158
  160. package/dist/model/project_model_util.cjs.map +1 -1
  161. package/dist/model/project_model_util.js +120 -156
  162. package/dist/model/project_model_util.js.map +1 -1
  163. package/dist/model/project_model_v1.cjs +3 -2
  164. package/dist/model/project_model_v1.cjs.map +1 -1
  165. package/dist/model/project_model_v1.js +3 -1
  166. package/dist/model/project_model_v1.js.map +1 -1
  167. package/dist/model/template_spec.d.ts +20 -16
  168. package/dist/mutator/block-pack/block_pack.cjs +200 -223
  169. package/dist/mutator/block-pack/block_pack.cjs.map +1 -1
  170. package/dist/mutator/block-pack/block_pack.d.ts +20 -19
  171. package/dist/mutator/block-pack/block_pack.js +199 -221
  172. package/dist/mutator/block-pack/block_pack.js.map +1 -1
  173. package/dist/mutator/block-pack/frontend.cjs +14 -16
  174. package/dist/mutator/block-pack/frontend.cjs.map +1 -1
  175. package/dist/mutator/block-pack/frontend.js +13 -14
  176. package/dist/mutator/block-pack/frontend.js.map +1 -1
  177. package/dist/mutator/context_export.cjs +18 -17
  178. package/dist/mutator/context_export.cjs.map +1 -1
  179. package/dist/mutator/context_export.js +17 -15
  180. package/dist/mutator/context_export.js.map +1 -1
  181. package/dist/mutator/migration.cjs +86 -112
  182. package/dist/mutator/migration.cjs.map +1 -1
  183. package/dist/mutator/migration.js +85 -110
  184. package/dist/mutator/migration.js.map +1 -1
  185. package/dist/mutator/project.cjs +903 -1240
  186. package/dist/mutator/project.cjs.map +1 -1
  187. package/dist/mutator/project.js +901 -1237
  188. package/dist/mutator/project.js.map +1 -1
  189. package/dist/mutator/template/direct_template_loader.cjs +104 -130
  190. package/dist/mutator/template/direct_template_loader.cjs.map +1 -1
  191. package/dist/mutator/template/direct_template_loader.js +103 -128
  192. package/dist/mutator/template/direct_template_loader.js.map +1 -1
  193. package/dist/mutator/template/direct_template_loader_v3.cjs +104 -124
  194. package/dist/mutator/template/direct_template_loader_v3.cjs.map +1 -1
  195. package/dist/mutator/template/direct_template_loader_v3.js +103 -122
  196. package/dist/mutator/template/direct_template_loader_v3.js.map +1 -1
  197. package/dist/mutator/template/render_block.cjs +26 -30
  198. package/dist/mutator/template/render_block.cjs.map +1 -1
  199. package/dist/mutator/template/render_block.js +26 -23
  200. package/dist/mutator/template/render_block.js.map +1 -1
  201. package/dist/mutator/template/render_template.cjs +25 -25
  202. package/dist/mutator/template/render_template.cjs.map +1 -1
  203. package/dist/mutator/template/render_template.d.ts +6 -3
  204. package/dist/mutator/template/render_template.js +24 -23
  205. package/dist/mutator/template/render_template.js.map +1 -1
  206. package/dist/mutator/template/template_loading.cjs +42 -46
  207. package/dist/mutator/template/template_loading.cjs.map +1 -1
  208. package/dist/mutator/template/template_loading.d.ts +16 -12
  209. package/dist/mutator/template/template_loading.js +40 -44
  210. package/dist/mutator/template/template_loading.js.map +1 -1
  211. package/dist/network_check/network_check.cjs +149 -194
  212. package/dist/network_check/network_check.cjs.map +1 -1
  213. package/dist/network_check/network_check.d.ts +50 -66
  214. package/dist/network_check/network_check.js +146 -190
  215. package/dist/network_check/network_check.js.map +1 -1
  216. package/dist/network_check/pings.cjs +71 -69
  217. package/dist/network_check/pings.cjs.map +1 -1
  218. package/dist/network_check/pings.js +71 -65
  219. package/dist/network_check/pings.js.map +1 -1
  220. package/dist/network_check/template.cjs +256 -273
  221. package/dist/network_check/template.cjs.map +1 -1
  222. package/dist/network_check/template.js +253 -265
  223. package/dist/network_check/template.js.map +1 -1
  224. package/dist/pool/data.cjs +205 -226
  225. package/dist/pool/data.cjs.map +1 -1
  226. package/dist/pool/data.d.ts +10 -27
  227. package/dist/pool/data.js +196 -209
  228. package/dist/pool/data.js.map +1 -1
  229. package/dist/pool/driver.cjs +180 -207
  230. package/dist/pool/driver.cjs.map +1 -1
  231. package/dist/pool/driver.d.ts +12 -17
  232. package/dist/pool/driver.js +178 -205
  233. package/dist/pool/driver.js.map +1 -1
  234. package/dist/pool/index.cjs +2 -0
  235. package/dist/pool/index.d.ts +2 -3
  236. package/dist/pool/index.js +2 -0
  237. package/dist/pool/p_object_collection.cjs +67 -79
  238. package/dist/pool/p_object_collection.cjs.map +1 -1
  239. package/dist/pool/p_object_collection.d.ts +7 -28
  240. package/dist/pool/p_object_collection.js +65 -77
  241. package/dist/pool/p_object_collection.js.map +1 -1
  242. package/dist/pool/result_pool.cjs +217 -262
  243. package/dist/pool/result_pool.cjs.map +1 -1
  244. package/dist/pool/result_pool.d.ts +4 -27
  245. package/dist/pool/result_pool.js +216 -260
  246. package/dist/pool/result_pool.js.map +1 -1
  247. package/dist/worker/WorkerManager.cjs +51 -49
  248. package/dist/worker/WorkerManager.cjs.map +1 -1
  249. package/dist/worker/WorkerManager.js +49 -47
  250. package/dist/worker/WorkerManager.js.map +1 -1
  251. package/dist/worker/worker.cjs +19 -15
  252. package/dist/worker/worker.cjs.map +1 -1
  253. package/dist/worker/worker.d.ts +1 -2
  254. package/dist/worker/worker.js +18 -13
  255. package/dist/worker/worker.js.map +1 -1
  256. package/dist/worker/workerApi.cjs +14 -18
  257. package/dist/worker/workerApi.cjs.map +1 -1
  258. package/dist/worker/workerApi.js +13 -16
  259. package/dist/worker/workerApi.js.map +1 -1
  260. package/package.json +24 -24
  261. package/src/mutator/template/template_render.test.ts +22 -18
  262. package/dist/__external/.pnpm/@rollup_plugin-typescript@12.3.0_rollup@4.52.4_tslib@2.8.1_typescript@5.6.3/__external/tslib/tslib.es6.cjs +0 -77
  263. package/dist/__external/.pnpm/@rollup_plugin-typescript@12.3.0_rollup@4.52.4_tslib@2.8.1_typescript@5.6.3/__external/tslib/tslib.es6.cjs.map +0 -1
  264. package/dist/__external/.pnpm/@rollup_plugin-typescript@12.3.0_rollup@4.52.4_tslib@2.8.1_typescript@5.6.3/__external/tslib/tslib.es6.js +0 -74
  265. package/dist/__external/.pnpm/@rollup_plugin-typescript@12.3.0_rollup@4.52.4_tslib@2.8.1_typescript@5.6.3/__external/tslib/tslib.es6.js.map +0 -1
  266. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/classes/comparator.cjs +0 -162
  267. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/classes/comparator.cjs.map +0 -1
  268. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/classes/comparator.js +0 -160
  269. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/classes/comparator.js.map +0 -1
  270. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/classes/range.cjs +0 -576
  271. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/classes/range.cjs.map +0 -1
  272. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/classes/range.js +0 -574
  273. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/classes/range.js.map +0 -1
  274. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/classes/semver.cjs +0 -337
  275. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/classes/semver.cjs.map +0 -1
  276. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/classes/semver.js +0 -335
  277. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/classes/semver.js.map +0 -1
  278. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/clean.cjs +0 -22
  279. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/clean.cjs.map +0 -1
  280. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/clean.js +0 -20
  281. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/clean.js.map +0 -1
  282. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/cmp.cjs +0 -73
  283. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/cmp.cjs.map +0 -1
  284. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/cmp.js +0 -71
  285. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/cmp.js.map +0 -1
  286. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/coerce.cjs +0 -78
  287. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/coerce.cjs.map +0 -1
  288. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/coerce.js +0 -76
  289. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/coerce.js.map +0 -1
  290. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/compare-build.cjs +0 -23
  291. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/compare-build.cjs.map +0 -1
  292. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/compare-build.js +0 -21
  293. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/compare-build.js.map +0 -1
  294. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/compare-loose.cjs +0 -19
  295. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/compare-loose.cjs.map +0 -1
  296. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/compare-loose.js +0 -17
  297. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/compare-loose.js.map +0 -1
  298. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/compare.cjs +0 -21
  299. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/compare.cjs.map +0 -1
  300. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/compare.js +0 -19
  301. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/compare.js.map +0 -1
  302. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/diff.cjs +0 -74
  303. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/diff.cjs.map +0 -1
  304. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/diff.js +0 -72
  305. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/diff.js.map +0 -1
  306. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/eq.cjs +0 -19
  307. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/eq.cjs.map +0 -1
  308. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/eq.js +0 -17
  309. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/eq.js.map +0 -1
  310. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/gt.cjs +0 -19
  311. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/gt.cjs.map +0 -1
  312. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/gt.js +0 -17
  313. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/gt.js.map +0 -1
  314. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/gte.cjs +0 -19
  315. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/gte.cjs.map +0 -1
  316. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/gte.js +0 -17
  317. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/gte.js.map +0 -1
  318. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/inc.cjs +0 -35
  319. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/inc.cjs.map +0 -1
  320. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/inc.js +0 -33
  321. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/inc.js.map +0 -1
  322. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/lt.cjs +0 -19
  323. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/lt.cjs.map +0 -1
  324. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/lt.js +0 -17
  325. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/lt.js.map +0 -1
  326. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/lte.cjs +0 -19
  327. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/lte.cjs.map +0 -1
  328. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/lte.js +0 -17
  329. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/lte.js.map +0 -1
  330. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/major.cjs +0 -19
  331. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/major.cjs.map +0 -1
  332. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/major.js +0 -17
  333. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/major.js.map +0 -1
  334. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/minor.cjs +0 -19
  335. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/minor.cjs.map +0 -1
  336. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/minor.js +0 -17
  337. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/minor.js.map +0 -1
  338. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/neq.cjs +0 -19
  339. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/neq.cjs.map +0 -1
  340. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/neq.js +0 -17
  341. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/neq.js.map +0 -1
  342. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/parse.cjs +0 -32
  343. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/parse.cjs.map +0 -1
  344. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/parse.js +0 -30
  345. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/parse.js.map +0 -1
  346. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/patch.cjs +0 -19
  347. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/patch.cjs.map +0 -1
  348. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/patch.js +0 -17
  349. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/patch.js.map +0 -1
  350. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/prerelease.cjs +0 -22
  351. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/prerelease.cjs.map +0 -1
  352. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/prerelease.js +0 -20
  353. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/prerelease.js.map +0 -1
  354. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/rcompare.cjs +0 -19
  355. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/rcompare.cjs.map +0 -1
  356. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/rcompare.js +0 -17
  357. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/rcompare.js.map +0 -1
  358. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/rsort.cjs +0 -19
  359. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/rsort.cjs.map +0 -1
  360. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/rsort.js +0 -17
  361. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/rsort.js.map +0 -1
  362. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/satisfies.cjs +0 -26
  363. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/satisfies.cjs.map +0 -1
  364. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/satisfies.js +0 -24
  365. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/satisfies.js.map +0 -1
  366. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/sort.cjs +0 -19
  367. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/sort.cjs.map +0 -1
  368. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/sort.js +0 -17
  369. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/sort.js.map +0 -1
  370. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/valid.cjs +0 -22
  371. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/valid.cjs.map +0 -1
  372. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/valid.js +0 -20
  373. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/valid.js.map +0 -1
  374. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/index.cjs +0 -145
  375. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/index.cjs.map +0 -1
  376. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/index.js +0 -143
  377. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/index.js.map +0 -1
  378. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/constants.cjs +0 -49
  379. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/constants.cjs.map +0 -1
  380. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/constants.js +0 -47
  381. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/constants.js.map +0 -1
  382. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/debug.cjs +0 -23
  383. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/debug.cjs.map +0 -1
  384. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/debug.js +0 -21
  385. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/debug.js.map +0 -1
  386. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/identifiers.cjs +0 -37
  387. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/identifiers.cjs.map +0 -1
  388. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/identifiers.js +0 -35
  389. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/identifiers.js.map +0 -1
  390. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/lrucache.cjs +0 -54
  391. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/lrucache.cjs.map +0 -1
  392. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/lrucache.js +0 -52
  393. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/lrucache.js.map +0 -1
  394. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/parse-options.cjs +0 -29
  395. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/parse-options.cjs.map +0 -1
  396. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/parse-options.js +0 -27
  397. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/parse-options.js.map +0 -1
  398. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/re.cjs +0 -240
  399. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/re.cjs.map +0 -1
  400. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/re.js +0 -238
  401. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/re.js.map +0 -1
  402. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/gtr.cjs +0 -20
  403. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/gtr.cjs.map +0 -1
  404. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/gtr.js +0 -18
  405. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/gtr.js.map +0 -1
  406. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/intersects.cjs +0 -23
  407. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/intersects.cjs.map +0 -1
  408. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/intersects.js +0 -21
  409. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/intersects.js.map +0 -1
  410. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/ltr.cjs +0 -20
  411. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/ltr.cjs.map +0 -1
  412. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/ltr.js +0 -18
  413. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/ltr.js.map +0 -1
  414. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/max-satisfying.cjs +0 -42
  415. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/max-satisfying.cjs.map +0 -1
  416. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/max-satisfying.js +0 -40
  417. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/max-satisfying.js.map +0 -1
  418. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/min-satisfying.cjs +0 -41
  419. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/min-satisfying.cjs.map +0 -1
  420. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/min-satisfying.js +0 -39
  421. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/min-satisfying.js.map +0 -1
  422. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/min-version.cjs +0 -79
  423. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/min-version.cjs.map +0 -1
  424. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/min-version.js +0 -77
  425. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/min-version.js.map +0 -1
  426. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/outside.cjs +0 -103
  427. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/outside.cjs.map +0 -1
  428. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/outside.js +0 -101
  429. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/outside.js.map +0 -1
  430. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/simplify.cjs +0 -64
  431. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/simplify.cjs.map +0 -1
  432. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/simplify.js +0 -62
  433. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/simplify.js.map +0 -1
  434. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/subset.cjs +0 -266
  435. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/subset.cjs.map +0 -1
  436. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/subset.js +0 -264
  437. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/subset.js.map +0 -1
  438. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/to-comparators.cjs +0 -24
  439. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/to-comparators.cjs.map +0 -1
  440. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/to-comparators.js +0 -22
  441. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/to-comparators.js.map +0 -1
  442. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/valid.cjs +0 -27
  443. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/valid.cjs.map +0 -1
  444. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/valid.js +0 -25
  445. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/valid.js.map +0 -1
  446. package/dist/_virtual/index.cjs +0 -8
  447. package/dist/_virtual/index.cjs.map +0 -1
  448. package/dist/_virtual/index.js +0 -6
  449. package/dist/_virtual/index.js.map +0 -1
  450. package/dist/_virtual/re.cjs +0 -6
  451. package/dist/_virtual/re.cjs.map +0 -1
  452. package/dist/_virtual/re.js +0 -4
  453. package/dist/_virtual/re.js.map +0 -1
  454. package/dist/block_registry/index.d.ts.map +0 -1
  455. package/dist/block_registry/registry-v2-provider.d.ts.map +0 -1
  456. package/dist/block_registry/registry.d.ts.map +0 -1
  457. package/dist/block_registry/registry.test.d.ts +0 -2
  458. package/dist/block_registry/registry.test.d.ts.map +0 -1
  459. package/dist/block_registry/watcher.d.ts.map +0 -1
  460. package/dist/block_registry/well_known_registries.d.ts.map +0 -1
  461. package/dist/cfg_render/executor.d.ts +0 -9
  462. package/dist/cfg_render/executor.d.ts.map +0 -1
  463. package/dist/cfg_render/executor.test.d.ts +0 -2
  464. package/dist/cfg_render/executor.test.d.ts.map +0 -1
  465. package/dist/cfg_render/operation.d.ts +0 -29
  466. package/dist/cfg_render/operation.d.ts.map +0 -1
  467. package/dist/cfg_render/renderer.d.ts +0 -6
  468. package/dist/cfg_render/renderer.d.ts.map +0 -1
  469. package/dist/cfg_render/traverse.d.ts +0 -3
  470. package/dist/cfg_render/traverse.d.ts.map +0 -1
  471. package/dist/cfg_render/util.d.ts +0 -5
  472. package/dist/cfg_render/util.d.ts.map +0 -1
  473. package/dist/debug/index.d.ts +0 -9
  474. package/dist/debug/index.d.ts.map +0 -1
  475. package/dist/dev_env/index.d.ts +0 -21
  476. package/dist/dev_env/index.d.ts.map +0 -1
  477. package/dist/dev_env/util.d.ts +0 -3
  478. package/dist/dev_env/util.d.ts.map +0 -1
  479. package/dist/index.cjs.map +0 -1
  480. package/dist/index.d.ts.map +0 -1
  481. package/dist/index.js.map +0 -1
  482. package/dist/js_render/computable_context.d.ts +0 -74
  483. package/dist/js_render/computable_context.d.ts.map +0 -1
  484. package/dist/js_render/context.d.ts +0 -73
  485. package/dist/js_render/context.d.ts.map +0 -1
  486. package/dist/js_render/index.d.ts +0 -57
  487. package/dist/js_render/index.d.ts.map +0 -1
  488. package/dist/middle_layer/active_cfg.d.ts +0 -6
  489. package/dist/middle_layer/active_cfg.d.ts.map +0 -1
  490. package/dist/middle_layer/block.d.ts +0 -10
  491. package/dist/middle_layer/block.d.ts.map +0 -1
  492. package/dist/middle_layer/block_ctx.d.ts +0 -23
  493. package/dist/middle_layer/block_ctx.d.ts.map +0 -1
  494. package/dist/middle_layer/block_ctx_unsafe.d.ts +0 -16
  495. package/dist/middle_layer/block_ctx_unsafe.d.ts.map +0 -1
  496. package/dist/middle_layer/driver_kit.d.ts.map +0 -1
  497. package/dist/middle_layer/frontend_path.d.ts +0 -6
  498. package/dist/middle_layer/frontend_path.d.ts.map +0 -1
  499. package/dist/middle_layer/index.d.ts.map +0 -1
  500. package/dist/middle_layer/middle_layer.d.ts.map +0 -1
  501. package/dist/middle_layer/navigation_states.d.ts +0 -10
  502. package/dist/middle_layer/navigation_states.d.ts.map +0 -1
  503. package/dist/middle_layer/ops.d.ts.map +0 -1
  504. package/dist/middle_layer/project.d.ts.map +0 -1
  505. package/dist/middle_layer/project_list.d.ts +0 -11
  506. package/dist/middle_layer/project_list.d.ts.map +0 -1
  507. package/dist/middle_layer/project_overview.d.ts +0 -8
  508. package/dist/middle_layer/project_overview.d.ts.map +0 -1
  509. package/dist/middle_layer/project_overview_light.d.ts +0 -8
  510. package/dist/middle_layer/project_overview_light.d.ts.map +0 -1
  511. package/dist/middle_layer/render.d.ts +0 -7
  512. package/dist/middle_layer/render.d.ts.map +0 -1
  513. package/dist/middle_layer/render.test.d.ts +0 -5
  514. package/dist/middle_layer/render.test.d.ts.map +0 -1
  515. package/dist/middle_layer/types.d.ts.map +0 -1
  516. package/dist/middle_layer/util.d.ts +0 -16
  517. package/dist/middle_layer/util.d.ts.map +0 -1
  518. package/dist/model/args.d.ts +0 -14
  519. package/dist/model/args.d.ts.map +0 -1
  520. package/dist/model/block_pack.d.ts +0 -8
  521. package/dist/model/block_pack.d.ts.map +0 -1
  522. package/dist/model/block_pack_spec.d.ts.map +0 -1
  523. package/dist/model/frontend.d.ts.map +0 -1
  524. package/dist/model/index.d.ts.map +0 -1
  525. package/dist/model/project_helper.d.ts.map +0 -1
  526. package/dist/model/project_model.d.ts.map +0 -1
  527. package/dist/model/project_model.test.d.ts +0 -2
  528. package/dist/model/project_model.test.d.ts.map +0 -1
  529. package/dist/model/project_model_util.d.ts +0 -43
  530. package/dist/model/project_model_util.d.ts.map +0 -1
  531. package/dist/model/project_model_util.test.d.ts +0 -2
  532. package/dist/model/project_model_util.test.d.ts.map +0 -1
  533. package/dist/model/project_model_v1.d.ts +0 -8
  534. package/dist/model/project_model_v1.d.ts.map +0 -1
  535. package/dist/model/template_spec.d.ts.map +0 -1
  536. package/dist/mutator/block-pack/block_pack.d.ts.map +0 -1
  537. package/dist/mutator/block-pack/block_pack.test.d.ts +0 -2
  538. package/dist/mutator/block-pack/block_pack.test.d.ts.map +0 -1
  539. package/dist/mutator/block-pack/frontend.d.ts +0 -4
  540. package/dist/mutator/block-pack/frontend.d.ts.map +0 -1
  541. package/dist/mutator/context_export.d.ts +0 -9
  542. package/dist/mutator/context_export.d.ts.map +0 -1
  543. package/dist/mutator/migration.d.ts +0 -9
  544. package/dist/mutator/migration.d.ts.map +0 -1
  545. package/dist/mutator/project-v3.test.d.ts +0 -2
  546. package/dist/mutator/project-v3.test.d.ts.map +0 -1
  547. package/dist/mutator/project.d.ts +0 -211
  548. package/dist/mutator/project.d.ts.map +0 -1
  549. package/dist/mutator/project.test.d.ts +0 -2
  550. package/dist/mutator/project.test.d.ts.map +0 -1
  551. package/dist/mutator/template/direct_template_loader.d.ts +0 -5
  552. package/dist/mutator/template/direct_template_loader.d.ts.map +0 -1
  553. package/dist/mutator/template/direct_template_loader_v3.d.ts +0 -15
  554. package/dist/mutator/template/direct_template_loader_v3.d.ts.map +0 -1
  555. package/dist/mutator/template/render_block.d.ts +0 -32
  556. package/dist/mutator/template/render_block.d.ts.map +0 -1
  557. package/dist/mutator/template/render_template.d.ts.map +0 -1
  558. package/dist/mutator/template/template_loading.d.ts.map +0 -1
  559. package/dist/mutator/template/template_render.test.d.ts +0 -2
  560. package/dist/mutator/template/template_render.test.d.ts.map +0 -1
  561. package/dist/network_check/network_check.d.ts.map +0 -1
  562. package/dist/network_check/network_check.test.d.ts +0 -2
  563. package/dist/network_check/network_check.test.d.ts.map +0 -1
  564. package/dist/network_check/pings.d.ts +0 -32
  565. package/dist/network_check/pings.d.ts.map +0 -1
  566. package/dist/network_check/template.d.ts +0 -57
  567. package/dist/network_check/template.d.ts.map +0 -1
  568. package/dist/network_check/template.test.d.ts +0 -2
  569. package/dist/network_check/template.test.d.ts.map +0 -1
  570. package/dist/network_check/test_utils.d.ts +0 -6
  571. package/dist/network_check/test_utils.d.ts.map +0 -1
  572. package/dist/pool/data.d.ts.map +0 -1
  573. package/dist/pool/driver.d.ts.map +0 -1
  574. package/dist/pool/index.d.ts.map +0 -1
  575. package/dist/pool/p_object_collection.d.ts.map +0 -1
  576. package/dist/pool/result_pool.d.ts.map +0 -1
  577. package/dist/test/block_packs.d.ts +0 -6
  578. package/dist/test/block_packs.d.ts.map +0 -1
  579. package/dist/test/explicit_templates.d.ts +0 -3
  580. package/dist/test/explicit_templates.d.ts.map +0 -1
  581. package/dist/test/known_templates.d.ts +0 -6
  582. package/dist/test/known_templates.d.ts.map +0 -1
  583. package/dist/test_env.d.ts +0 -6
  584. package/dist/test_env.d.ts.map +0 -1
  585. package/dist/worker/WorkerManager.d.ts +0 -12
  586. package/dist/worker/WorkerManager.d.ts.map +0 -1
  587. package/dist/worker/worker.d.ts.map +0 -1
  588. package/dist/worker/workerApi.d.ts +0 -15
  589. package/dist/worker/workerApi.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sources":["../../src/network_check/template.ts"],"sourcesContent":["import type { FieldId, FieldRef, PlClient, ResourceData } from \"@milaboratories/pl-client\";\nimport {\n type PlTransaction,\n ContinuePolling,\n field,\n isNotNullResourceId,\n isNullResourceId,\n Pl,\n poll,\n toGlobalFieldId,\n} from \"@milaboratories/pl-client\";\nimport { createRenderTemplate } from \"../mutator/template/render_template\";\nimport { Templates as SdkTemplates } from \"@platforma-sdk/workflow-tengo\";\nimport type { TemplateSpecAny } from \"../model/template_spec\";\nimport { loadTemplate, prepareTemplateSpec } from \"../mutator/template/template_loading\";\nimport type { ClientDownload, LsDriver } from \"@milaboratories/pl-drivers\";\nimport {\n ImportFileHandleUploadData,\n isSignMatch,\n isUpload,\n uploadBlob,\n type ClientUpload,\n type LsEntryWithAdditionalInfo,\n} from \"@milaboratories/pl-drivers\";\nimport type { Signer } from \"@milaboratories/ts-helpers\";\nimport { notEmpty, type MiLogger } from \"@milaboratories/ts-helpers\";\nimport type { ResourceInfo } from \"@milaboratories/pl-tree\";\nimport { text } from \"node:stream/consumers\";\nimport path from \"node:path\";\nimport fs from \"node:fs/promises\";\nimport os from \"node:os\";\nimport { randomBytes } from \"node:crypto\";\nimport type { StorageEntry } from \"@milaboratories/pl-model-common\";\n\nexport interface TemplateReport {\n status: \"ok\" | \"warn\" | \"failed\";\n message: string;\n}\n\n/** Uploads `hello-world` template and checks the output is correct. */\nexport async function uploadTemplate(\n logger: MiLogger,\n pl: PlClient,\n name: string,\n): Promise<TemplateReport> {\n try {\n const gotGreeting = await runUploadTemplate(logger, pl, name);\n if (gotGreeting !== `Hello, ${name}`) {\n return {\n status: \"failed\",\n message: `Template uploading failed: expected: ${name}, got: ${gotGreeting}`,\n };\n }\n\n return { status: \"ok\", message: `Template uploading succeeded: ${gotGreeting}` };\n } catch (e: unknown) {\n return { status: \"failed\", message: `Template uploading failed: error occurred: ${e}` };\n }\n}\n\nexport async function runUploadTemplate(\n logger: MiLogger,\n pl: PlClient,\n name: string,\n): Promise<string> {\n const outputs = await runTemplate(\n pl,\n SdkTemplates[\"check_network.upload_template\"],\n true,\n (tx) => ({\n name: tx.createValue(Pl.JsonObject, JSON.stringify(name)),\n }),\n [\"greeting\"],\n );\n\n try {\n return JSON.parse(notEmpty((await getFieldValue(pl, outputs.greeting)).data?.toString()));\n } finally {\n if (outputs != undefined) {\n await deleteFields(pl, Object.values(outputs));\n }\n }\n}\n\n/** Uploads a file to the backend and checks the output is a Blob resource. */\nexport async function uploadFile(\n logger: MiLogger,\n signer: Signer,\n lsDriver: LsDriver,\n uploadClient: ClientUpload,\n pl: PlClient,\n filePath: string,\n): Promise<TemplateReport> {\n try {\n const gotBlob = await runUploadFile(logger, signer, lsDriver, uploadClient, pl, filePath);\n\n if (gotBlob.type.name !== \"Blob\") {\n return { status: \"failed\", message: `File uploading failed: ${gotBlob.type.name}` };\n }\n\n return { status: \"ok\", message: `File uploading succeeded: ${gotBlob.type.name}` };\n } catch (e: unknown) {\n return { status: \"failed\", message: `File uploading failed: error occurred: ${e}` };\n }\n}\n\nexport async function runUploadFile(\n logger: MiLogger,\n signer: Signer,\n lsDriver: LsDriver,\n uploadClient: ClientUpload,\n pl: PlClient,\n filePath: string,\n): Promise<ResourceInfo> {\n const handle = await lsDriver.getLocalFileHandle(filePath);\n const result = await runTemplate(\n pl,\n SdkTemplates[\"check_network.upload_blob\"],\n true,\n (tx) => ({\n file: tx.createValue(Pl.JsonObject, JSON.stringify(handle)),\n }),\n [\"progress\", \"file\"],\n );\n\n try {\n const progress = await getFieldValue(pl, result.progress);\n\n if (isUpload(progress)) {\n const uploadData = ImportFileHandleUploadData.parse(\n JSON.parse(notEmpty(progress.data?.toString())),\n );\n const isUploadSignMatch = isSignMatch(signer, uploadData.localPath, uploadData.pathSignature);\n\n if (isUploadSignMatch) {\n await uploadBlob(logger, uploadClient, progress, uploadData, () => false, {\n nPartsWithThisUploadSpeed: 10,\n nPartsToIncreaseUpload: 10,\n currentSpeed: 10,\n maxSpeed: 10,\n });\n }\n }\n\n return await getFieldValue(pl, result.file);\n } finally {\n await deleteFields(pl, Object.values(result));\n }\n}\n\n/** Uploads a file to the backend and then tries to download it back. */\nexport async function downloadFile(\n logger: MiLogger,\n pl: PlClient,\n lsDriver: LsDriver,\n uploadClient: ClientUpload,\n downloadClient: ClientDownload,\n filePath: string,\n fileContent: string,\n): Promise<TemplateReport> {\n try {\n const gotFileContent = await runDownloadFile(\n logger,\n pl,\n lsDriver,\n uploadClient,\n downloadClient,\n filePath,\n );\n\n if (gotFileContent !== fileContent) {\n return {\n status: \"failed\",\n message: `File downloading failed: expected: ${fileContent}, got: ${gotFileContent}`,\n };\n }\n return { status: \"ok\", message: `File downloading succeeded: ${gotFileContent}` };\n } catch (e: unknown) {\n return { status: \"failed\", message: `File downloading failed: error occurred: ${e}` };\n }\n}\n\nexport async function runDownloadFile(\n logger: MiLogger,\n pl: PlClient,\n lsDriver: LsDriver,\n uploadClient: ClientUpload,\n downloadClient: ClientDownload,\n filePath: string,\n) {\n const handle = await lsDriver.getLocalFileHandle(filePath);\n\n const outputs = await runTemplate(\n pl,\n SdkTemplates[\"check_network.download_blob\"],\n true,\n (tx) => ({ file: tx.createValue(Pl.JsonObject, JSON.stringify(handle)) }),\n [\"progress\", \"file\"],\n );\n\n try {\n const progress = await getFieldValue(pl, outputs.progress);\n\n await uploadBlob(\n logger,\n uploadClient,\n progress,\n ImportFileHandleUploadData.parse(JSON.parse(notEmpty(progress.data?.toString()))),\n () => false,\n {\n nPartsWithThisUploadSpeed: 1,\n nPartsToIncreaseUpload: 1,\n currentSpeed: 1,\n maxSpeed: 1,\n },\n );\n\n const fileInfo = await getFieldValue(pl, outputs.file);\n\n return await downloadClient.withBlobContent(\n fileInfo,\n {},\n {},\n async (content) => await text(content),\n );\n } finally {\n await deleteFields(pl, Object.values(outputs));\n }\n}\n\n/** Runs Go's hello-world binary. */\nexport async function softwareCheck(pl: PlClient): Promise<TemplateReport> {\n try {\n const gotGreeting = await runSoftware(pl);\n\n if (gotGreeting !== \"Hello from go binary\\n\") {\n return { status: \"failed\", message: `Software check failed: got: ${gotGreeting}` };\n }\n return { status: \"ok\", message: `Software check succeeded: ${gotGreeting}` };\n } catch (e: unknown) {\n return { status: \"failed\", message: `Software check failed: error occurred: ${e}` };\n }\n}\n\nexport async function runSoftware(pl: PlClient): Promise<string> {\n const result = await runTemplate(\n pl,\n SdkTemplates[\"check_network.run_hello_world\"],\n true,\n (_: PlTransaction) => ({}),\n [\"greeting\"],\n );\n\n try {\n return notEmpty((await getFieldValue(pl, result.greeting)).data?.toString());\n } finally {\n await deleteFields(pl, Object.values(result));\n }\n}\n\n/** Runs Python hello-world. */\nexport async function pythonSoftware(pl: PlClient, name: string): Promise<TemplateReport> {\n try {\n const gotGreeting = await runPythonSoftware(pl, name);\n\n if (gotGreeting !== `Hello, ${name}!\\n`) {\n return { status: \"failed\", message: `Python software check failed: got: ${gotGreeting}` };\n }\n return { status: \"ok\", message: `Python software check succeeded: ${gotGreeting}` };\n } catch (e: unknown) {\n return { status: \"failed\", message: `Python software check failed: error occurred: ${e}` };\n }\n}\n\nexport async function runPythonSoftware(pl: PlClient, name: string): Promise<string> {\n const result = await runTemplate(\n pl,\n SdkTemplates[\"check_network.run_hello_world_py\"],\n true,\n (tx) => ({ name: tx.createValue(Pl.JsonObject, JSON.stringify(name)) }),\n [\"greeting\"],\n );\n\n try {\n return notEmpty((await getFieldValue(pl, result.greeting)).data?.toString());\n } finally {\n await deleteFields(pl, Object.values(result));\n }\n}\n\n/** Tries to download a file from every storage. */\nexport async function downloadFromEveryStorage(\n logger: MiLogger,\n pl: PlClient,\n lsDriver: LsDriver,\n ops: {\n minLsRequests: number;\n bytesLimit: number;\n minFileSize: number;\n maxFileSize: number;\n nFilesToCheck: number;\n },\n): Promise<Record<string, TemplateReport>> {\n try {\n const storages = await lsDriver.getStorageList();\n const results: Record<string, TemplateReport> = {};\n\n for (const storage of storages) {\n const result = await chooseFile(\n lsDriver,\n storage,\n ops.nFilesToCheck,\n ops.minFileSize,\n ops.maxFileSize,\n ops.minLsRequests,\n );\n if (result.file === undefined) {\n results[storage.name] = {\n status: \"warn\",\n message:\n `No file between ${ops.minFileSize} and ${ops.maxFileSize} bytes ` +\n `found in storage ${storage.name}, checked ${result.nCheckedFiles} files, ` +\n `did ${result.nLsRequests} ls requests`,\n };\n continue;\n }\n\n logger.info(`Downloading file ${JSON.stringify(result)} from storage ${storage.name}`);\n const outputs = await runTemplate(\n pl,\n SdkTemplates[\"check_network.create_workdir_from_storage\"],\n true,\n (tx) => ({\n file: tx.createValue(\n Pl.JsonObject,\n JSON.stringify((result.file as { handle: string }).handle),\n ),\n }),\n [\"workdirTypeName\"],\n );\n\n try {\n const workdirTypeName = JSON.parse(\n Buffer.from((await getFieldValue(pl, outputs.workdirTypeName)).data!).toString(),\n ) as string;\n\n if (workdirTypeName?.startsWith(\"WorkingDirectory\")) {\n results[storage.name] = {\n status: \"ok\",\n message:\n `Workdir creation succeeded, size of file: ${result.file?.size}, ` +\n `checked ${result.nCheckedFiles} files, did ${result.nLsRequests} ls requests`,\n };\n } else {\n results[storage.name] = {\n status: \"failed\",\n message:\n `Workdir creation failed: ${workdirTypeName}, size of file: ${result.file?.size}, ` +\n `checked ${result.nCheckedFiles} files, did ${result.nLsRequests} ls requests`,\n };\n }\n } finally {\n await deleteFields(pl, Object.values(outputs));\n }\n }\n\n return results;\n } catch (e: unknown) {\n return {\n unknown: {\n status: \"failed\",\n message: `Download from every storage failed: error occurred: ${e}`,\n },\n };\n }\n}\n\n/** Chooses a random file from the storage in a size range.\n * If we couldn't find a normal-sized file, we'll return a small file to check at least something.\n */\nexport async function chooseFile(\n lsDriver: LsDriver,\n storage: StorageEntry,\n limit: number,\n minSize: number,\n maxSize: number,\n minLsRequests: number,\n): Promise<{\n file: LsEntryWithAdditionalInfo | undefined;\n nLsRequests: number;\n nCheckedFiles: number;\n}> {\n const files = listFilesSequence(lsDriver, storage, \"\", 0);\n\n // return small file in case we don't have many normal-sized files.\n // While we'll download only a small range of bytes from the file,\n // we don't want to return a big file in case the underlying S3 doesn't support range requests.\n let smallFile: LsEntryWithAdditionalInfo | undefined;\n let nCheckedFiles = 0;\n let maxNLsRequests = 0;\n\n for await (const { file, nLsRequests } of files) {\n maxNLsRequests = Math.max(maxNLsRequests, nLsRequests);\n\n if (nCheckedFiles >= limit && maxNLsRequests > minLsRequests) {\n // we reached a limit on both the number of files and the number of ls requests.\n return { file: smallFile, nLsRequests: maxNLsRequests, nCheckedFiles };\n }\n nCheckedFiles++;\n if (minSize <= file.size && file.size <= maxSize) {\n return { file, nLsRequests: maxNLsRequests, nCheckedFiles };\n } else if (file.size < minSize) {\n smallFile = file;\n }\n }\n\n return { file: smallFile, nLsRequests: maxNLsRequests, nCheckedFiles };\n}\n\n/** Deep-first search for files in the storage. */\nexport async function* listFilesSequence(\n lsDriver: LsDriver,\n storage: StorageEntry,\n parent: string,\n nLsRequests: number,\n): AsyncGenerator<{ file: LsEntryWithAdditionalInfo; nLsRequests: number }, void, unknown> {\n nLsRequests++;\n const files = await lsDriver.listRemoteFilesWithAdditionalInfo(storage.handle, parent);\n\n for (const file of files.entries) {\n if (file.type === \"file\" && file.fullPath.startsWith(parent)) {\n yield {\n file,\n nLsRequests,\n };\n } else if (file.type === \"dir\") {\n for await (const nestedFile of listFilesSequence(\n lsDriver,\n storage,\n file.fullPath,\n nLsRequests,\n )) {\n nLsRequests = Math.max(nestedFile.nLsRequests, nLsRequests);\n yield nestedFile;\n }\n }\n }\n}\n\n/** Creates a big temporary file with random content. */\nexport async function createBigTempFile(): Promise<{ filePath: string }> {\n const filePath = path.join(os.tmpdir(), `check-network-big-temp-${Date.now()}.bin`);\n const fileSize = 20 * 1024 * 1024; // 20 MiB\n\n const fileContent = randomBytes(fileSize);\n\n await fs.appendFile(filePath, fileContent);\n\n return { filePath };\n}\n\n/** Creates a temporarly file we could use for uploading and downloading. */\nexport async function createTempFile(): Promise<{ filePath: string; fileContent: string }> {\n const filePath = path.join(os.tmpdir(), `check-network-temp-${Date.now()}.txt`);\n\n const fileContent = \"Hello, world! \" + new Date().toISOString();\n await fs.writeFile(filePath, fileContent);\n\n return { filePath, fileContent };\n}\n\n/** Creates a template and RenderTemplate resources, gets all resources from outputs.\n * Throws a error if any of the outputs failed.\n */\nasync function runTemplate(\n client: PlClient,\n tpl: TemplateSpecAny,\n ephemeral: boolean,\n inputs: (tx: PlTransaction) => Pl.PlRecord,\n outputs: string[],\n): Promise<Record<string, FieldId>> {\n return await client.withWriteTx(\"TemplateRender\", async (tx) => {\n const preparedTemplate = await prepareTemplateSpec(tpl);\n const tplResource = loadTemplate(tx, preparedTemplate);\n\n const outputFields: Record<string, FieldRef> = createRenderTemplate(\n tx,\n tplResource,\n ephemeral,\n inputs(tx),\n outputs,\n );\n\n const outputsIds: Record<string, FieldId> = {};\n\n for (const output of outputs) {\n const fieldRef = field(client.clientRoot, output);\n tx.createField(fieldRef, \"Dynamic\", outputFields[output]);\n outputsIds[output] = await toGlobalFieldId(fieldRef);\n }\n\n await tx.commit();\n\n return outputsIds;\n });\n}\n\n/** Gets a resource from field's value or throws a error. */\nasync function getFieldValue(client: PlClient, fieldId: FieldId): Promise<ResourceData> {\n // We could also do polling with pl-tree, but it seemed like an overkill,\n // that's why we have a simple polling here.\n\n return await poll(client, async (tx) => {\n const field = await tx.tx.getField(fieldId);\n if (isNotNullResourceId(field.error)) {\n const err = await tx.tx.getResourceData(field.error, true);\n throw new Error(`getFieldValue of \"${fieldId.fieldName}\" field failed: ${err.data}`);\n }\n\n if (isNullResourceId(field.value)) {\n throw new ContinuePolling();\n }\n\n return await tx.tx.getResourceData(field.value, true);\n });\n}\n\nasync function deleteFields(client: PlClient, fieldIds: FieldId[]) {\n await client.withWriteTx(\"DeleteFields\", async (tx) => {\n for (const fieldId of fieldIds) {\n tx.resetField(fieldId);\n }\n await tx.commit();\n });\n}\n"],"names":["SdkTemplates","fs"],"mappings":";;;;;;;;;;;;AAuCA;AACO,eAAe,cAAc,CAClC,MAAgB,EAChB,EAAY,EACZ,IAAY,EAAA;AAEZ,IAAA,IAAI;QACF,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC;AAC7D,QAAA,IAAI,WAAW,KAAK,CAAA,OAAA,EAAU,IAAI,CAAA,CAAE,EAAE;YACpC,OAAO;AACL,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,OAAO,EAAE,CAAA,qCAAA,EAAwC,IAAI,CAAA,OAAA,EAAU,WAAW,CAAA,CAAE;aAC7E;QACH;QAEA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA,8BAAA,EAAiC,WAAW,CAAA,CAAE,EAAE;IAClF;IAAE,OAAO,CAAU,EAAE;QACnB,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAA,2CAAA,EAA8C,CAAC,CAAA,CAAE,EAAE;IACzF;AACF;AAEO,eAAe,iBAAiB,CACrC,MAAgB,EAChB,EAAY,EACZ,IAAY,EAAA;AAEZ,IAAA,MAAM,OAAO,GAAG,MAAM,WAAW,CAC/B,EAAE,EACFA,SAAY,CAAC,+BAA+B,CAAC,EAC7C,IAAI,EACJ,CAAC,EAAE,MAAM;AACP,QAAA,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC1D,KAAA,CAAC,EACF,CAAC,UAAU,CAAC,CACb;AAED,IAAA,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,aAAa,CAAC,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC3F;YAAU;AACR,QAAA,IAAI,OAAO,IAAI,SAAS,EAAE;YACxB,MAAM,YAAY,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAChD;IACF;AACF;AAEA;AACO,eAAe,UAAU,CAC9B,MAAgB,EAChB,MAAc,EACd,QAAkB,EAClB,YAA0B,EAC1B,EAAY,EACZ,QAAgB,EAAA;AAEhB,IAAA,IAAI;AACF,QAAA,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,CAAC;QAEzF,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;AAChC,YAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAA,uBAAA,EAA0B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAA,CAAE,EAAE;QACrF;AAEA,QAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA,0BAAA,EAA6B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAA,CAAE,EAAE;IACpF;IAAE,OAAO,CAAU,EAAE;QACnB,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAA,uCAAA,EAA0C,CAAC,CAAA,CAAE,EAAE;IACrF;AACF;AAEO,eAAe,aAAa,CACjC,MAAgB,EAChB,MAAc,EACd,QAAkB,EAClB,YAA0B,EAC1B,EAAY,EACZ,QAAgB,EAAA;IAEhB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,kBAAkB,CAAC,QAAQ,CAAC;AAC1D,IAAA,MAAM,MAAM,GAAG,MAAM,WAAW,CAC9B,EAAE,EACFA,SAAY,CAAC,2BAA2B,CAAC,EACzC,IAAI,EACJ,CAAC,EAAE,MAAM;AACP,QAAA,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAC5D,KAAA,CAAC,EACF,CAAC,UAAU,EAAE,MAAM,CAAC,CACrB;AAED,IAAA,IAAI;QACF,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC;AAEzD,QAAA,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE;YACtB,MAAM,UAAU,GAAG,0BAA0B,CAAC,KAAK,CACjD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAChD;AACD,YAAA,MAAM,iBAAiB,GAAG,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,aAAa,CAAC;YAE7F,IAAI,iBAAiB,EAAE;AACrB,gBAAA,MAAM,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,KAAK,EAAE;AACxE,oBAAA,yBAAyB,EAAE,EAAE;AAC7B,oBAAA,sBAAsB,EAAE,EAAE;AAC1B,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,QAAQ,EAAE,EAAE;AACb,iBAAA,CAAC;YACJ;QACF;QAEA,OAAO,MAAM,aAAa,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC;IAC7C;YAAU;QACR,MAAM,YAAY,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/C;AACF;AAEA;AACO,eAAe,YAAY,CAChC,MAAgB,EAChB,EAAY,EACZ,QAAkB,EAClB,YAA0B,EAC1B,cAA8B,EAC9B,QAAgB,EAChB,WAAmB,EAAA;AAEnB,IAAA,IAAI;AACF,QAAA,MAAM,cAAc,GAAG,MAAM,eAAe,CAC1C,MAAM,EACN,EAAE,EACF,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,QAAQ,CACT;AAED,QAAA,IAAI,cAAc,KAAK,WAAW,EAAE;YAClC,OAAO;AACL,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,OAAO,EAAE,CAAA,mCAAA,EAAsC,WAAW,CAAA,OAAA,EAAU,cAAc,CAAA,CAAE;aACrF;QACH;QACA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA,4BAAA,EAA+B,cAAc,CAAA,CAAE,EAAE;IACnF;IAAE,OAAO,CAAU,EAAE;QACnB,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAA,yCAAA,EAA4C,CAAC,CAAA,CAAE,EAAE;IACvF;AACF;AAEO,eAAe,eAAe,CACnC,MAAgB,EAChB,EAAY,EACZ,QAAkB,EAClB,YAA0B,EAC1B,cAA8B,EAC9B,QAAgB,EAAA;IAEhB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,kBAAkB,CAAC,QAAQ,CAAC;IAE1D,MAAM,OAAO,GAAG,MAAM,WAAW,CAC/B,EAAE,EACFA,SAAY,CAAC,6BAA6B,CAAC,EAC3C,IAAI,EACJ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EACzE,CAAC,UAAU,EAAE,MAAM,CAAC,CACrB;AAED,IAAA,IAAI;QACF,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC;AAE1D,QAAA,MAAM,UAAU,CACd,MAAM,EACN,YAAY,EACZ,QAAQ,EACR,0BAA0B,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EACjF,MAAM,KAAK,EACX;AACE,YAAA,yBAAyB,EAAE,CAAC;AAC5B,YAAA,sBAAsB,EAAE,CAAC;AACzB,YAAA,YAAY,EAAE,CAAC;AACf,YAAA,QAAQ,EAAE,CAAC;AACZ,SAAA,CACF;QAED,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC;QAEtD,OAAO,MAAM,cAAc,CAAC,eAAe,CACzC,QAAQ,EACR,EAAE,EACF,EAAE,EACF,OAAO,OAAO,KAAK,MAAM,IAAI,CAAC,OAAO,CAAC,CACvC;IACH;YAAU;QACR,MAAM,YAAY,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAChD;AACF;AAEA;AACO,eAAe,aAAa,CAAC,EAAY,EAAA;AAC9C,IAAA,IAAI;AACF,QAAA,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,EAAE,CAAC;AAEzC,QAAA,IAAI,WAAW,KAAK,wBAAwB,EAAE;YAC5C,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAA,4BAAA,EAA+B,WAAW,CAAA,CAAE,EAAE;QACpF;QACA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA,0BAAA,EAA6B,WAAW,CAAA,CAAE,EAAE;IAC9E;IAAE,OAAO,CAAU,EAAE;QACnB,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAA,uCAAA,EAA0C,CAAC,CAAA,CAAE,EAAE;IACrF;AACF;AAEO,eAAe,WAAW,CAAC,EAAY,EAAA;IAC5C,MAAM,MAAM,GAAG,MAAM,WAAW,CAC9B,EAAE,EACFA,SAAY,CAAC,+BAA+B,CAAC,EAC7C,IAAI,EACJ,CAAC,CAAgB,MAAM,EAAE,CAAC,EAC1B,CAAC,UAAU,CAAC,CACb;AAED,IAAA,IAAI;AACF,QAAA,OAAO,QAAQ,CAAC,CAAC,MAAM,aAAa,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC9E;YAAU;QACR,MAAM,YAAY,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/C;AACF;AAEA;AACO,eAAe,cAAc,CAAC,EAAY,EAAE,IAAY,EAAA;AAC7D,IAAA,IAAI;QACF,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC,EAAE,EAAE,IAAI,CAAC;AAErD,QAAA,IAAI,WAAW,KAAK,CAAA,OAAA,EAAU,IAAI,CAAA,GAAA,CAAK,EAAE;YACvC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAA,mCAAA,EAAsC,WAAW,CAAA,CAAE,EAAE;QAC3F;QACA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA,iCAAA,EAAoC,WAAW,CAAA,CAAE,EAAE;IACrF;IAAE,OAAO,CAAU,EAAE;QACnB,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAA,8CAAA,EAAiD,CAAC,CAAA,CAAE,EAAE;IAC5F;AACF;AAEO,eAAe,iBAAiB,CAAC,EAAY,EAAE,IAAY,EAAA;IAChE,MAAM,MAAM,GAAG,MAAM,WAAW,CAC9B,EAAE,EACFA,SAAY,CAAC,kCAAkC,CAAC,EAChD,IAAI,EACJ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EACvE,CAAC,UAAU,CAAC,CACb;AAED,IAAA,IAAI;AACF,QAAA,OAAO,QAAQ,CAAC,CAAC,MAAM,aAAa,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC9E;YAAU;QACR,MAAM,YAAY,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/C;AACF;AAEA;AACO,eAAe,wBAAwB,CAC5C,MAAgB,EAChB,EAAY,EACZ,QAAkB,EAClB,GAMC,EAAA;AAED,IAAA,IAAI;AACF,QAAA,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,cAAc,EAAE;QAChD,MAAM,OAAO,GAAmC,EAAE;AAElD,QAAA,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;YAC9B,MAAM,MAAM,GAAG,MAAM,UAAU,CAC7B,QAAQ,EACR,OAAO,EACP,GAAG,CAAC,aAAa,EACjB,GAAG,CAAC,WAAW,EACf,GAAG,CAAC,WAAW,EACf,GAAG,CAAC,aAAa,CAClB;AACD,YAAA,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE;AAC7B,gBAAA,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG;AACtB,oBAAA,MAAM,EAAE,MAAM;oBACd,OAAO,EACL,mBAAmB,GAAG,CAAC,WAAW,CAAA,KAAA,EAAQ,GAAG,CAAC,WAAW,CAAA,OAAA,CAAS;AAClE,wBAAA,CAAA,iBAAA,EAAoB,OAAO,CAAC,IAAI,aAAa,MAAM,CAAC,aAAa,CAAA,QAAA,CAAU;wBAC3E,CAAA,IAAA,EAAO,MAAM,CAAC,WAAW,CAAA,YAAA,CAAc;iBAC1C;gBACD;YACF;AAEA,YAAA,MAAM,CAAC,IAAI,CAAC,CAAA,iBAAA,EAAoB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,iBAAiB,OAAO,CAAC,IAAI,CAAA,CAAE,CAAC;AACtF,YAAA,MAAM,OAAO,GAAG,MAAM,WAAW,CAC/B,EAAE,EACFA,SAAY,CAAC,2CAA2C,CAAC,EACzD,IAAI,EACJ,CAAC,EAAE,MAAM;AACP,gBAAA,IAAI,EAAE,EAAE,CAAC,WAAW,CAClB,EAAE,CAAC,UAAU,EACb,IAAI,CAAC,SAAS,CAAE,MAAM,CAAC,IAA2B,CAAC,MAAM,CAAC,CAC3D;AACF,aAAA,CAAC,EACF,CAAC,iBAAiB,CAAC,CACpB;AAED,YAAA,IAAI;AACF,gBAAA,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAChC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,aAAa,CAAC,EAAE,EAAE,OAAO,CAAC,eAAe,CAAC,EAAE,IAAK,CAAC,CAAC,QAAQ,EAAE,CACvE;AAEX,gBAAA,IAAI,eAAe,EAAE,UAAU,CAAC,kBAAkB,CAAC,EAAE;AACnD,oBAAA,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG;AACtB,wBAAA,MAAM,EAAE,IAAI;AACZ,wBAAA,OAAO,EACL,CAAA,0CAAA,EAA6C,MAAM,CAAC,IAAI,EAAE,IAAI,CAAA,EAAA,CAAI;AAClE,4BAAA,CAAA,QAAA,EAAW,MAAM,CAAC,aAAa,eAAe,MAAM,CAAC,WAAW,CAAA,YAAA,CAAc;qBACjF;gBACH;qBAAO;AACL,oBAAA,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG;AACtB,wBAAA,MAAM,EAAE,QAAQ;wBAChB,OAAO,EACL,4BAA4B,eAAe,CAAA,gBAAA,EAAmB,MAAM,CAAC,IAAI,EAAE,IAAI,CAAA,EAAA,CAAI;AACnF,4BAAA,CAAA,QAAA,EAAW,MAAM,CAAC,aAAa,eAAe,MAAM,CAAC,WAAW,CAAA,YAAA,CAAc;qBACjF;gBACH;YACF;oBAAU;gBACR,MAAM,YAAY,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAChD;QACF;AAEA,QAAA,OAAO,OAAO;IAChB;IAAE,OAAO,CAAU,EAAE;QACnB,OAAO;AACL,YAAA,OAAO,EAAE;AACP,gBAAA,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE,CAAA,oDAAA,EAAuD,CAAC,CAAA,CAAE;AACpE,aAAA;SACF;IACH;AACF;AAEA;;AAEG;AACI,eAAe,UAAU,CAC9B,QAAkB,EAClB,OAAqB,EACrB,KAAa,EACb,OAAe,EACf,OAAe,EACf,aAAqB,EAAA;AAMrB,IAAA,MAAM,KAAK,GAAG,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;;;;AAKzD,IAAA,IAAI,SAAgD;IACpD,IAAI,aAAa,GAAG,CAAC;IACrB,IAAI,cAAc,GAAG,CAAC;IAEtB,WAAW,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,KAAK,EAAE;QAC/C,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,WAAW,CAAC;QAEtD,IAAI,aAAa,IAAI,KAAK,IAAI,cAAc,GAAG,aAAa,EAAE;;YAE5D,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE;QACxE;AACA,QAAA,aAAa,EAAE;AACf,QAAA,IAAI,OAAO,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,EAAE;YAChD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE;QAC7D;AAAO,aAAA,IAAI,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE;YAC9B,SAAS,GAAG,IAAI;QAClB;IACF;IAEA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE;AACxE;AAEA;AACO,gBAAgB,iBAAiB,CACtC,QAAkB,EAClB,OAAqB,EACrB,MAAc,EACd,WAAmB,EAAA;AAEnB,IAAA,WAAW,EAAE;AACb,IAAA,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,iCAAiC,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC;AAEtF,IAAA,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,OAAO,EAAE;AAChC,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;YAC5D,MAAM;gBACJ,IAAI;gBACJ,WAAW;aACZ;QACH;AAAO,aAAA,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE;AAC9B,YAAA,WAAW,MAAM,UAAU,IAAI,iBAAiB,CAC9C,QAAQ,EACR,OAAO,EACP,IAAI,CAAC,QAAQ,EACb,WAAW,CACZ,EAAE;gBACD,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,EAAE,WAAW,CAAC;AAC3D,gBAAA,MAAM,UAAU;YAClB;QACF;IACF;AACF;AAEA;AACO,eAAe,iBAAiB,GAAA;AACrC,IAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,0BAA0B,IAAI,CAAC,GAAG,EAAE,CAAA,IAAA,CAAM,CAAC;IACnF,MAAM,QAAQ,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAElC,IAAA,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,CAAC;IAEzC,MAAMC,WAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,WAAW,CAAC;IAE1C,OAAO,EAAE,QAAQ,EAAE;AACrB;AAEA;AACO,eAAe,cAAc,GAAA;AAClC,IAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,sBAAsB,IAAI,CAAC,GAAG,EAAE,CAAA,IAAA,CAAM,CAAC;IAE/E,MAAM,WAAW,GAAG,gBAAgB,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;IAC/D,MAAMA,WAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,WAAW,CAAC;AAEzC,IAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE;AAClC;AAEA;;AAEG;AACH,eAAe,WAAW,CACxB,MAAgB,EAChB,GAAoB,EACpB,SAAkB,EAClB,MAA0C,EAC1C,OAAiB,EAAA;IAEjB,OAAO,MAAM,MAAM,CAAC,WAAW,CAAC,gBAAgB,EAAE,OAAO,EAAE,KAAI;AAC7D,QAAA,MAAM,gBAAgB,GAAG,MAAM,mBAAmB,CAAC,GAAG,CAAC;QACvD,MAAM,WAAW,GAAG,YAAY,CAAC,EAAE,EAAE,gBAAgB,CAAC;AAEtD,QAAA,MAAM,YAAY,GAA6B,oBAAoB,CACjE,EAAE,EACF,WAAW,EACX,SAAS,EACT,MAAM,CAAC,EAAE,CAAC,EACV,OAAO,CACR;QAED,MAAM,UAAU,GAA4B,EAAE;AAE9C,QAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC5B,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC;AACjD,YAAA,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,SAAS,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;YACzD,UAAU,CAAC,MAAM,CAAC,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC;QACtD;AAEA,QAAA,MAAM,EAAE,CAAC,MAAM,EAAE;AAEjB,QAAA,OAAO,UAAU;AACnB,IAAA,CAAC,CAAC;AACJ;AAEA;AACA,eAAe,aAAa,CAAC,MAAgB,EAAE,OAAgB,EAAA;;;IAI7D,OAAO,MAAM,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,KAAI;QACrC,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;AAC3C,QAAA,IAAI,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AACpC,YAAA,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC;AAC1D,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,kBAAA,EAAqB,OAAO,CAAC,SAAS,CAAA,gBAAA,EAAmB,GAAG,CAAC,IAAI,CAAA,CAAE,CAAC;QACtF;AAEA,QAAA,IAAI,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YACjC,MAAM,IAAI,eAAe,EAAE;QAC7B;AAEA,QAAA,OAAO,MAAM,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC;AACvD,IAAA,CAAC,CAAC;AACJ;AAEA,eAAe,YAAY,CAAC,MAAgB,EAAE,QAAmB,EAAA;IAC/D,MAAM,MAAM,CAAC,WAAW,CAAC,cAAc,EAAE,OAAO,EAAE,KAAI;AACpD,QAAA,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;AAC9B,YAAA,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;QACxB;AACA,QAAA,MAAM,EAAE,CAAC,MAAM,EAAE;AACnB,IAAA,CAAC,CAAC;AACJ;;;;"}
1
+ {"version":3,"file":"template.js","names":["SdkTemplates"],"sources":["../../src/network_check/template.ts"],"sourcesContent":["import type { FieldId, FieldRef, PlClient, ResourceData } from \"@milaboratories/pl-client\";\nimport {\n type PlTransaction,\n ContinuePolling,\n field,\n isNotNullResourceId,\n isNullResourceId,\n Pl,\n poll,\n toGlobalFieldId,\n} from \"@milaboratories/pl-client\";\nimport { createRenderTemplate } from \"../mutator/template/render_template\";\nimport { Templates as SdkTemplates } from \"@platforma-sdk/workflow-tengo\";\nimport type { TemplateSpecAny } from \"../model/template_spec\";\nimport { loadTemplate, prepareTemplateSpec } from \"../mutator/template/template_loading\";\nimport type { ClientDownload, LsDriver } from \"@milaboratories/pl-drivers\";\nimport {\n ImportFileHandleUploadData,\n isSignMatch,\n isUpload,\n uploadBlob,\n type ClientUpload,\n type LsEntryWithAdditionalInfo,\n} from \"@milaboratories/pl-drivers\";\nimport type { Signer } from \"@milaboratories/ts-helpers\";\nimport { notEmpty, type MiLogger } from \"@milaboratories/ts-helpers\";\nimport type { ResourceInfo } from \"@milaboratories/pl-tree\";\nimport { text } from \"node:stream/consumers\";\nimport path from \"node:path\";\nimport fs from \"node:fs/promises\";\nimport os from \"node:os\";\nimport { randomBytes } from \"node:crypto\";\nimport type { StorageEntry } from \"@milaboratories/pl-model-common\";\n\nexport interface TemplateReport {\n status: \"ok\" | \"warn\" | \"failed\";\n message: string;\n}\n\n/** Uploads `hello-world` template and checks the output is correct. */\nexport async function uploadTemplate(\n logger: MiLogger,\n pl: PlClient,\n name: string,\n): Promise<TemplateReport> {\n try {\n const gotGreeting = await runUploadTemplate(logger, pl, name);\n if (gotGreeting !== `Hello, ${name}`) {\n return {\n status: \"failed\",\n message: `Template uploading failed: expected: ${name}, got: ${gotGreeting}`,\n };\n }\n\n return { status: \"ok\", message: `Template uploading succeeded: ${gotGreeting}` };\n } catch (e: unknown) {\n return { status: \"failed\", message: `Template uploading failed: error occurred: ${e}` };\n }\n}\n\nexport async function runUploadTemplate(\n logger: MiLogger,\n pl: PlClient,\n name: string,\n): Promise<string> {\n const outputs = await runTemplate(\n pl,\n SdkTemplates[\"check_network.upload_template\"],\n true,\n (tx) => ({\n name: tx.createValue(Pl.JsonObject, JSON.stringify(name)),\n }),\n [\"greeting\"],\n );\n\n try {\n return JSON.parse(notEmpty((await getFieldValue(pl, outputs.greeting)).data?.toString()));\n } finally {\n if (outputs != undefined) {\n await deleteFields(pl, Object.values(outputs));\n }\n }\n}\n\n/** Uploads a file to the backend and checks the output is a Blob resource. */\nexport async function uploadFile(\n logger: MiLogger,\n signer: Signer,\n lsDriver: LsDriver,\n uploadClient: ClientUpload,\n pl: PlClient,\n filePath: string,\n): Promise<TemplateReport> {\n try {\n const gotBlob = await runUploadFile(logger, signer, lsDriver, uploadClient, pl, filePath);\n\n if (gotBlob.type.name !== \"Blob\") {\n return { status: \"failed\", message: `File uploading failed: ${gotBlob.type.name}` };\n }\n\n return { status: \"ok\", message: `File uploading succeeded: ${gotBlob.type.name}` };\n } catch (e: unknown) {\n return { status: \"failed\", message: `File uploading failed: error occurred: ${e}` };\n }\n}\n\nexport async function runUploadFile(\n logger: MiLogger,\n signer: Signer,\n lsDriver: LsDriver,\n uploadClient: ClientUpload,\n pl: PlClient,\n filePath: string,\n): Promise<ResourceInfo> {\n const handle = await lsDriver.getLocalFileHandle(filePath);\n const result = await runTemplate(\n pl,\n SdkTemplates[\"check_network.upload_blob\"],\n true,\n (tx) => ({\n file: tx.createValue(Pl.JsonObject, JSON.stringify(handle)),\n }),\n [\"progress\", \"file\"],\n );\n\n try {\n const progress = await getFieldValue(pl, result.progress);\n\n if (isUpload(progress)) {\n const uploadData = ImportFileHandleUploadData.parse(\n JSON.parse(notEmpty(progress.data?.toString())),\n );\n const isUploadSignMatch = isSignMatch(signer, uploadData.localPath, uploadData.pathSignature);\n\n if (isUploadSignMatch) {\n await uploadBlob(logger, uploadClient, progress, uploadData, () => false, {\n nPartsWithThisUploadSpeed: 10,\n nPartsToIncreaseUpload: 10,\n currentSpeed: 10,\n maxSpeed: 10,\n });\n }\n }\n\n return await getFieldValue(pl, result.file);\n } finally {\n await deleteFields(pl, Object.values(result));\n }\n}\n\n/** Uploads a file to the backend and then tries to download it back. */\nexport async function downloadFile(\n logger: MiLogger,\n pl: PlClient,\n lsDriver: LsDriver,\n uploadClient: ClientUpload,\n downloadClient: ClientDownload,\n filePath: string,\n fileContent: string,\n): Promise<TemplateReport> {\n try {\n const gotFileContent = await runDownloadFile(\n logger,\n pl,\n lsDriver,\n uploadClient,\n downloadClient,\n filePath,\n );\n\n if (gotFileContent !== fileContent) {\n return {\n status: \"failed\",\n message: `File downloading failed: expected: ${fileContent}, got: ${gotFileContent}`,\n };\n }\n return { status: \"ok\", message: `File downloading succeeded: ${gotFileContent}` };\n } catch (e: unknown) {\n return { status: \"failed\", message: `File downloading failed: error occurred: ${e}` };\n }\n}\n\nexport async function runDownloadFile(\n logger: MiLogger,\n pl: PlClient,\n lsDriver: LsDriver,\n uploadClient: ClientUpload,\n downloadClient: ClientDownload,\n filePath: string,\n) {\n const handle = await lsDriver.getLocalFileHandle(filePath);\n\n const outputs = await runTemplate(\n pl,\n SdkTemplates[\"check_network.download_blob\"],\n true,\n (tx) => ({ file: tx.createValue(Pl.JsonObject, JSON.stringify(handle)) }),\n [\"progress\", \"file\"],\n );\n\n try {\n const progress = await getFieldValue(pl, outputs.progress);\n\n await uploadBlob(\n logger,\n uploadClient,\n progress,\n ImportFileHandleUploadData.parse(JSON.parse(notEmpty(progress.data?.toString()))),\n () => false,\n {\n nPartsWithThisUploadSpeed: 1,\n nPartsToIncreaseUpload: 1,\n currentSpeed: 1,\n maxSpeed: 1,\n },\n );\n\n const fileInfo = await getFieldValue(pl, outputs.file);\n\n return await downloadClient.withBlobContent(\n fileInfo,\n {},\n {},\n async (content) => await text(content),\n );\n } finally {\n await deleteFields(pl, Object.values(outputs));\n }\n}\n\n/** Runs Go's hello-world binary. */\nexport async function softwareCheck(pl: PlClient): Promise<TemplateReport> {\n try {\n const gotGreeting = await runSoftware(pl);\n\n if (gotGreeting !== \"Hello from go binary\\n\") {\n return { status: \"failed\", message: `Software check failed: got: ${gotGreeting}` };\n }\n return { status: \"ok\", message: `Software check succeeded: ${gotGreeting}` };\n } catch (e: unknown) {\n return { status: \"failed\", message: `Software check failed: error occurred: ${e}` };\n }\n}\n\nexport async function runSoftware(pl: PlClient): Promise<string> {\n const result = await runTemplate(\n pl,\n SdkTemplates[\"check_network.run_hello_world\"],\n true,\n (_: PlTransaction) => ({}),\n [\"greeting\"],\n );\n\n try {\n return notEmpty((await getFieldValue(pl, result.greeting)).data?.toString());\n } finally {\n await deleteFields(pl, Object.values(result));\n }\n}\n\n/** Runs Python hello-world. */\nexport async function pythonSoftware(pl: PlClient, name: string): Promise<TemplateReport> {\n try {\n const gotGreeting = await runPythonSoftware(pl, name);\n\n if (gotGreeting !== `Hello, ${name}!\\n`) {\n return { status: \"failed\", message: `Python software check failed: got: ${gotGreeting}` };\n }\n return { status: \"ok\", message: `Python software check succeeded: ${gotGreeting}` };\n } catch (e: unknown) {\n return { status: \"failed\", message: `Python software check failed: error occurred: ${e}` };\n }\n}\n\nexport async function runPythonSoftware(pl: PlClient, name: string): Promise<string> {\n const result = await runTemplate(\n pl,\n SdkTemplates[\"check_network.run_hello_world_py\"],\n true,\n (tx) => ({ name: tx.createValue(Pl.JsonObject, JSON.stringify(name)) }),\n [\"greeting\"],\n );\n\n try {\n return notEmpty((await getFieldValue(pl, result.greeting)).data?.toString());\n } finally {\n await deleteFields(pl, Object.values(result));\n }\n}\n\n/** Tries to download a file from every storage. */\nexport async function downloadFromEveryStorage(\n logger: MiLogger,\n pl: PlClient,\n lsDriver: LsDriver,\n ops: {\n minLsRequests: number;\n bytesLimit: number;\n minFileSize: number;\n maxFileSize: number;\n nFilesToCheck: number;\n },\n): Promise<Record<string, TemplateReport>> {\n try {\n const storages = await lsDriver.getStorageList();\n const results: Record<string, TemplateReport> = {};\n\n for (const storage of storages) {\n const result = await chooseFile(\n lsDriver,\n storage,\n ops.nFilesToCheck,\n ops.minFileSize,\n ops.maxFileSize,\n ops.minLsRequests,\n );\n if (result.file === undefined) {\n results[storage.name] = {\n status: \"warn\",\n message:\n `No file between ${ops.minFileSize} and ${ops.maxFileSize} bytes ` +\n `found in storage ${storage.name}, checked ${result.nCheckedFiles} files, ` +\n `did ${result.nLsRequests} ls requests`,\n };\n continue;\n }\n\n logger.info(`Downloading file ${JSON.stringify(result)} from storage ${storage.name}`);\n const outputs = await runTemplate(\n pl,\n SdkTemplates[\"check_network.create_workdir_from_storage\"],\n true,\n (tx) => ({\n file: tx.createValue(\n Pl.JsonObject,\n JSON.stringify((result.file as { handle: string }).handle),\n ),\n }),\n [\"workdirTypeName\"],\n );\n\n try {\n const workdirTypeName = JSON.parse(\n Buffer.from((await getFieldValue(pl, outputs.workdirTypeName)).data!).toString(),\n ) as string;\n\n if (workdirTypeName?.startsWith(\"WorkingDirectory\")) {\n results[storage.name] = {\n status: \"ok\",\n message:\n `Workdir creation succeeded, size of file: ${result.file?.size}, ` +\n `checked ${result.nCheckedFiles} files, did ${result.nLsRequests} ls requests`,\n };\n } else {\n results[storage.name] = {\n status: \"failed\",\n message:\n `Workdir creation failed: ${workdirTypeName}, size of file: ${result.file?.size}, ` +\n `checked ${result.nCheckedFiles} files, did ${result.nLsRequests} ls requests`,\n };\n }\n } finally {\n await deleteFields(pl, Object.values(outputs));\n }\n }\n\n return results;\n } catch (e: unknown) {\n return {\n unknown: {\n status: \"failed\",\n message: `Download from every storage failed: error occurred: ${e}`,\n },\n };\n }\n}\n\n/** Chooses a random file from the storage in a size range.\n * If we couldn't find a normal-sized file, we'll return a small file to check at least something.\n */\nexport async function chooseFile(\n lsDriver: LsDriver,\n storage: StorageEntry,\n limit: number,\n minSize: number,\n maxSize: number,\n minLsRequests: number,\n): Promise<{\n file: LsEntryWithAdditionalInfo | undefined;\n nLsRequests: number;\n nCheckedFiles: number;\n}> {\n const files = listFilesSequence(lsDriver, storage, \"\", 0);\n\n // return small file in case we don't have many normal-sized files.\n // While we'll download only a small range of bytes from the file,\n // we don't want to return a big file in case the underlying S3 doesn't support range requests.\n let smallFile: LsEntryWithAdditionalInfo | undefined;\n let nCheckedFiles = 0;\n let maxNLsRequests = 0;\n\n for await (const { file, nLsRequests } of files) {\n maxNLsRequests = Math.max(maxNLsRequests, nLsRequests);\n\n if (nCheckedFiles >= limit && maxNLsRequests > minLsRequests) {\n // we reached a limit on both the number of files and the number of ls requests.\n return { file: smallFile, nLsRequests: maxNLsRequests, nCheckedFiles };\n }\n nCheckedFiles++;\n if (minSize <= file.size && file.size <= maxSize) {\n return { file, nLsRequests: maxNLsRequests, nCheckedFiles };\n } else if (file.size < minSize) {\n smallFile = file;\n }\n }\n\n return { file: smallFile, nLsRequests: maxNLsRequests, nCheckedFiles };\n}\n\n/** Deep-first search for files in the storage. */\nexport async function* listFilesSequence(\n lsDriver: LsDriver,\n storage: StorageEntry,\n parent: string,\n nLsRequests: number,\n): AsyncGenerator<{ file: LsEntryWithAdditionalInfo; nLsRequests: number }, void, unknown> {\n nLsRequests++;\n const files = await lsDriver.listRemoteFilesWithAdditionalInfo(storage.handle, parent);\n\n for (const file of files.entries) {\n if (file.type === \"file\" && file.fullPath.startsWith(parent)) {\n yield {\n file,\n nLsRequests,\n };\n } else if (file.type === \"dir\") {\n for await (const nestedFile of listFilesSequence(\n lsDriver,\n storage,\n file.fullPath,\n nLsRequests,\n )) {\n nLsRequests = Math.max(nestedFile.nLsRequests, nLsRequests);\n yield nestedFile;\n }\n }\n }\n}\n\n/** Creates a big temporary file with random content. */\nexport async function createBigTempFile(): Promise<{ filePath: string }> {\n const filePath = path.join(os.tmpdir(), `check-network-big-temp-${Date.now()}.bin`);\n const fileSize = 20 * 1024 * 1024; // 20 MiB\n\n const fileContent = randomBytes(fileSize);\n\n await fs.appendFile(filePath, fileContent);\n\n return { filePath };\n}\n\n/** Creates a temporarly file we could use for uploading and downloading. */\nexport async function createTempFile(): Promise<{ filePath: string; fileContent: string }> {\n const filePath = path.join(os.tmpdir(), `check-network-temp-${Date.now()}.txt`);\n\n const fileContent = \"Hello, world! \" + new Date().toISOString();\n await fs.writeFile(filePath, fileContent);\n\n return { filePath, fileContent };\n}\n\n/** Creates a template and RenderTemplate resources, gets all resources from outputs.\n * Throws a error if any of the outputs failed.\n */\nasync function runTemplate(\n client: PlClient,\n tpl: TemplateSpecAny,\n ephemeral: boolean,\n inputs: (tx: PlTransaction) => Pl.PlRecord,\n outputs: string[],\n): Promise<Record<string, FieldId>> {\n return await client.withWriteTx(\"TemplateRender\", async (tx) => {\n const preparedTemplate = await prepareTemplateSpec(tpl);\n const tplResource = loadTemplate(tx, preparedTemplate);\n\n const outputFields: Record<string, FieldRef> = createRenderTemplate(\n tx,\n tplResource,\n ephemeral,\n inputs(tx),\n outputs,\n );\n\n const outputsIds: Record<string, FieldId> = {};\n\n for (const output of outputs) {\n const fieldRef = field(client.clientRoot, output);\n tx.createField(fieldRef, \"Dynamic\", outputFields[output]);\n outputsIds[output] = await toGlobalFieldId(fieldRef);\n }\n\n await tx.commit();\n\n return outputsIds;\n });\n}\n\n/** Gets a resource from field's value or throws a error. */\nasync function getFieldValue(client: PlClient, fieldId: FieldId): Promise<ResourceData> {\n // We could also do polling with pl-tree, but it seemed like an overkill,\n // that's why we have a simple polling here.\n\n return await poll(client, async (tx) => {\n const field = await tx.tx.getField(fieldId);\n if (isNotNullResourceId(field.error)) {\n const err = await tx.tx.getResourceData(field.error, true);\n throw new Error(`getFieldValue of \"${fieldId.fieldName}\" field failed: ${err.data}`);\n }\n\n if (isNullResourceId(field.value)) {\n throw new ContinuePolling();\n }\n\n return await tx.tx.getResourceData(field.value, true);\n });\n}\n\nasync function deleteFields(client: PlClient, fieldIds: FieldId[]) {\n await client.withWriteTx(\"DeleteFields\", async (tx) => {\n for (const fieldId of fieldIds) {\n tx.resetField(fieldId);\n }\n await tx.commit();\n });\n}\n"],"mappings":"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"}
@@ -1,245 +1,224 @@
1
- 'use strict';
1
+ const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
2
+ let _platforma_sdk_model = require("@platforma-sdk/model");
3
+ let _milaboratories_pl_client = require("@milaboratories/pl-client");
4
+ let node_crypto = require("node:crypto");
5
+ let canonicalize = require("canonicalize");
6
+ canonicalize = require_runtime.__toESM(canonicalize);
2
7
 
3
- var model = require('@platforma-sdk/model');
4
- var canonicalize = require('canonicalize');
5
- var plClient = require('@milaboratories/pl-client');
6
- var node_crypto = require('node:crypto');
7
-
8
- const PColumnDataJsonPartitioned = plClient.resourceType("PColumnData/JsonPartitioned", "1");
9
- const PColumnDataJsonSuperPartitioned = plClient.resourceType("PColumnData/Partitioned/JsonPartitioned", "1");
10
- const PColumnDataBinaryPartitioned = plClient.resourceType("PColumnData/BinaryPartitioned", "1");
11
- const PColumnDataBinarySuperPartitioned = plClient.resourceType("PColumnData/Partitioned/BinaryPartitioned", "1");
12
- const PColumnDataParquetPartitioned = plClient.resourceType("PColumnData/ParquetPartitioned", "1");
13
- const PColumnDataParquetSuperPartitioned = plClient.resourceType("PColumnData/Partitioned/ParquetPartitioned", "1");
14
- const PColumnDataJson = plClient.resourceType("PColumnData/Json", "1");
15
- const ParquetChunkResourceType = plClient.resourceType("ParquetChunk", "1");
8
+ //#region src/pool/data.ts
9
+ const PColumnDataJsonPartitioned = (0, _milaboratories_pl_client.resourceType)("PColumnData/JsonPartitioned", "1");
10
+ const PColumnDataJsonSuperPartitioned = (0, _milaboratories_pl_client.resourceType)("PColumnData/Partitioned/JsonPartitioned", "1");
11
+ const PColumnDataBinaryPartitioned = (0, _milaboratories_pl_client.resourceType)("PColumnData/BinaryPartitioned", "1");
12
+ const PColumnDataBinarySuperPartitioned = (0, _milaboratories_pl_client.resourceType)("PColumnData/Partitioned/BinaryPartitioned", "1");
13
+ const PColumnDataParquetPartitioned = (0, _milaboratories_pl_client.resourceType)("PColumnData/ParquetPartitioned", "1");
14
+ const PColumnDataParquetSuperPartitioned = (0, _milaboratories_pl_client.resourceType)("PColumnData/Partitioned/ParquetPartitioned", "1");
15
+ const PColumnDataJson = (0, _milaboratories_pl_client.resourceType)("PColumnData/Json", "1");
16
+ const ParquetChunkResourceType = (0, _milaboratories_pl_client.resourceType)("ParquetChunk", "1");
16
17
  const BinaryPartitionedIndexFieldSuffix = ".index";
17
18
  const BinaryPartitionedValuesFieldSuffix = ".values";
18
19
  function parseDataInfoResource(data) {
19
- if (!data.getIsReadyOrError())
20
- throw new model.PFrameDriverError("Data not ready.");
21
- const resourceData = data.getDataAsJson();
22
- if (resourceData === undefined)
23
- throw new model.PFrameDriverError("unexpected data info structure, no resource data");
24
- if (plClient.resourceTypesEqual(data.resourceType, PColumnDataJson)) {
25
- const dataContent = resourceData;
26
- return {
27
- type: "Json",
28
- keyLength: dataContent.keyLength,
29
- data: dataContent.data,
30
- };
31
- }
32
- else if (plClient.resourceTypesEqual(data.resourceType, PColumnDataJsonPartitioned)) {
33
- const meta = resourceData;
34
- const parts = Object.fromEntries(data
35
- .listInputFields()
36
- .map((field) => [field, data.traverse({ field, errorIfFieldNotSet: true }).persist()]));
37
- return {
38
- type: "JsonPartitioned",
39
- partitionKeyLength: meta.partitionKeyLength,
40
- parts,
41
- };
42
- }
43
- else if (plClient.resourceTypesEqual(data.resourceType, PColumnDataJsonSuperPartitioned)) {
44
- const meta = resourceData;
45
- const parts = {};
46
- for (const superKey of data.listInputFields()) {
47
- const superPart = data.traverse({ field: superKey, errorIfFieldNotSet: true });
48
- const keys = superPart.listInputFields();
49
- if (keys === undefined)
50
- throw new model.PFrameDriverError(`no partition keys for super key ${superKey}`);
51
- for (const key of keys) {
52
- const partKey = JSON.stringify([
53
- ...JSON.parse(superKey),
54
- ...JSON.parse(key),
55
- ]);
56
- parts[partKey] = superPart.traverse({ field: key, errorIfFieldNotSet: true }).persist();
57
- }
58
- }
59
- return {
60
- type: "JsonPartitioned",
61
- partitionKeyLength: meta.superPartitionKeyLength + meta.partitionKeyLength,
62
- parts,
63
- };
64
- }
65
- else if (plClient.resourceTypesEqual(data.resourceType, PColumnDataBinaryPartitioned)) {
66
- const meta = resourceData;
67
- const parts = {};
68
- // parsing the structure
69
- for (const field of data.listInputFields()) {
70
- if (field.endsWith(BinaryPartitionedIndexFieldSuffix)) {
71
- const partKey = field.slice(0, -BinaryPartitionedIndexFieldSuffix.length);
72
- let part = parts[partKey];
73
- if (part === undefined) {
74
- part = {};
75
- parts[partKey] = part;
76
- }
77
- part.index = data.traverse({ field, errorIfFieldNotSet: true }).persist();
78
- }
79
- else if (field.endsWith(BinaryPartitionedValuesFieldSuffix)) {
80
- const partKey = field.slice(0, -BinaryPartitionedValuesFieldSuffix.length);
81
- let part = parts[partKey];
82
- if (part === undefined) {
83
- part = {};
84
- parts[partKey] = part;
85
- }
86
- part.values = data.traverse({ field, errorIfFieldNotSet: true }).persist();
87
- }
88
- else
89
- throw new model.PFrameDriverError(`unrecognized part field name: ${field}`);
90
- }
91
- // structure validation
92
- for (const [key, part] of Object.entries(parts)) {
93
- if (part.index === undefined)
94
- throw new model.PFrameDriverError(`no index for part ${key}`);
95
- if (part.values === undefined)
96
- throw new model.PFrameDriverError(`no values for part ${key}`);
97
- }
98
- return {
99
- type: "BinaryPartitioned",
100
- partitionKeyLength: meta.partitionKeyLength,
101
- parts: parts,
102
- };
103
- }
104
- else if (plClient.resourceTypesEqual(data.resourceType, PColumnDataBinarySuperPartitioned)) {
105
- const meta = resourceData;
106
- const parts = {};
107
- for (const superKey of data.listInputFields()) {
108
- const superData = data.traverse({ field: superKey, errorIfFieldNotSet: true });
109
- const keys = superData.listInputFields();
110
- if (keys === undefined)
111
- throw new model.PFrameDriverError(`no partition keys for super key ${superKey}`);
112
- for (const field of keys) {
113
- if (field.endsWith(BinaryPartitionedIndexFieldSuffix)) {
114
- const key = field.slice(0, -BinaryPartitionedIndexFieldSuffix.length);
115
- const partKey = JSON.stringify([
116
- ...JSON.parse(superKey),
117
- ...JSON.parse(key),
118
- ]);
119
- let part = parts[partKey];
120
- if (part === undefined) {
121
- part = {};
122
- parts[partKey] = part;
123
- }
124
- parts[partKey].index = superData
125
- .traverse({
126
- field,
127
- errorIfFieldNotSet: true,
128
- })
129
- .persist();
130
- }
131
- else if (field.endsWith(BinaryPartitionedValuesFieldSuffix)) {
132
- const key = field.slice(0, -BinaryPartitionedValuesFieldSuffix.length);
133
- const partKey = JSON.stringify([
134
- ...JSON.parse(superKey),
135
- ...JSON.parse(key),
136
- ]);
137
- let part = parts[partKey];
138
- if (part === undefined) {
139
- part = {};
140
- parts[partKey] = part;
141
- }
142
- parts[partKey].values = superData
143
- .traverse({
144
- field,
145
- errorIfFieldNotSet: true,
146
- })
147
- .persist();
148
- }
149
- else
150
- throw new model.PFrameDriverError(`unrecognized part field name: ${field}`);
151
- }
152
- }
153
- return {
154
- type: "BinaryPartitioned",
155
- partitionKeyLength: meta.superPartitionKeyLength + meta.partitionKeyLength,
156
- parts: parts,
157
- };
158
- }
159
- else if (plClient.resourceTypesEqual(data.resourceType, PColumnDataParquetPartitioned)) {
160
- const meta = resourceData;
161
- const parts = {};
162
- for (const key of data.listInputFields()) {
163
- const resource = data.traverse({
164
- field: key,
165
- assertFieldType: "Input",
166
- errorIfFieldNotSet: true,
167
- });
168
- parts[key] = traverseParquetChunkResource(resource);
169
- }
170
- return {
171
- type: "ParquetPartitioned",
172
- partitionKeyLength: meta.partitionKeyLength,
173
- parts,
174
- };
175
- }
176
- else if (plClient.resourceTypesEqual(data.resourceType, PColumnDataParquetSuperPartitioned)) {
177
- const meta = resourceData;
178
- const parts = {};
179
- for (const superKey of data.listInputFields()) {
180
- const superPart = data.traverse({ field: superKey, errorIfFieldNotSet: true });
181
- const keys = superPart.listInputFields();
182
- if (keys === undefined)
183
- throw new model.PFrameDriverError(`no partition keys for super key ${superKey}`);
184
- for (const key of keys) {
185
- const resource = data.traverse({ field: key, errorIfFieldNotSet: true });
186
- const partKey = JSON.stringify([
187
- ...JSON.parse(superKey),
188
- ...JSON.parse(key),
189
- ]);
190
- parts[partKey] = traverseParquetChunkResource(resource);
191
- }
192
- }
193
- return {
194
- type: "ParquetPartitioned",
195
- partitionKeyLength: meta.superPartitionKeyLength + meta.partitionKeyLength,
196
- parts,
197
- };
198
- }
199
- throw new model.PFrameDriverError(`unsupported resource type: ${plClient.resourceTypeToString(data.resourceType)}`);
20
+ if (!data.getIsReadyOrError()) throw new _platforma_sdk_model.PFrameDriverError("Data not ready.");
21
+ const resourceData = data.getDataAsJson();
22
+ if (resourceData === void 0) throw new _platforma_sdk_model.PFrameDriverError("unexpected data info structure, no resource data");
23
+ if ((0, _milaboratories_pl_client.resourceTypesEqual)(data.resourceType, PColumnDataJson)) {
24
+ const dataContent = resourceData;
25
+ return {
26
+ type: "Json",
27
+ keyLength: dataContent.keyLength,
28
+ data: dataContent.data
29
+ };
30
+ } else if ((0, _milaboratories_pl_client.resourceTypesEqual)(data.resourceType, PColumnDataJsonPartitioned)) {
31
+ const meta = resourceData;
32
+ const parts = Object.fromEntries(data.listInputFields().map((field) => [field, data.traverse({
33
+ field,
34
+ errorIfFieldNotSet: true
35
+ }).persist()]));
36
+ return {
37
+ type: "JsonPartitioned",
38
+ partitionKeyLength: meta.partitionKeyLength,
39
+ parts
40
+ };
41
+ } else if ((0, _milaboratories_pl_client.resourceTypesEqual)(data.resourceType, PColumnDataJsonSuperPartitioned)) {
42
+ const meta = resourceData;
43
+ const parts = {};
44
+ for (const superKey of data.listInputFields()) {
45
+ const superPart = data.traverse({
46
+ field: superKey,
47
+ errorIfFieldNotSet: true
48
+ });
49
+ const keys = superPart.listInputFields();
50
+ if (keys === void 0) throw new _platforma_sdk_model.PFrameDriverError(`no partition keys for super key ${superKey}`);
51
+ for (const key of keys) {
52
+ const partKey = JSON.stringify([...JSON.parse(superKey), ...JSON.parse(key)]);
53
+ parts[partKey] = superPart.traverse({
54
+ field: key,
55
+ errorIfFieldNotSet: true
56
+ }).persist();
57
+ }
58
+ }
59
+ return {
60
+ type: "JsonPartitioned",
61
+ partitionKeyLength: meta.superPartitionKeyLength + meta.partitionKeyLength,
62
+ parts
63
+ };
64
+ } else if ((0, _milaboratories_pl_client.resourceTypesEqual)(data.resourceType, PColumnDataBinaryPartitioned)) {
65
+ const meta = resourceData;
66
+ const parts = {};
67
+ for (const field of data.listInputFields()) if (field.endsWith(BinaryPartitionedIndexFieldSuffix)) {
68
+ const partKey = field.slice(0, -6);
69
+ let part = parts[partKey];
70
+ if (part === void 0) {
71
+ part = {};
72
+ parts[partKey] = part;
73
+ }
74
+ part.index = data.traverse({
75
+ field,
76
+ errorIfFieldNotSet: true
77
+ }).persist();
78
+ } else if (field.endsWith(BinaryPartitionedValuesFieldSuffix)) {
79
+ const partKey = field.slice(0, -7);
80
+ let part = parts[partKey];
81
+ if (part === void 0) {
82
+ part = {};
83
+ parts[partKey] = part;
84
+ }
85
+ part.values = data.traverse({
86
+ field,
87
+ errorIfFieldNotSet: true
88
+ }).persist();
89
+ } else throw new _platforma_sdk_model.PFrameDriverError(`unrecognized part field name: ${field}`);
90
+ for (const [key, part] of Object.entries(parts)) {
91
+ if (part.index === void 0) throw new _platforma_sdk_model.PFrameDriverError(`no index for part ${key}`);
92
+ if (part.values === void 0) throw new _platforma_sdk_model.PFrameDriverError(`no values for part ${key}`);
93
+ }
94
+ return {
95
+ type: "BinaryPartitioned",
96
+ partitionKeyLength: meta.partitionKeyLength,
97
+ parts
98
+ };
99
+ } else if ((0, _milaboratories_pl_client.resourceTypesEqual)(data.resourceType, PColumnDataBinarySuperPartitioned)) {
100
+ const meta = resourceData;
101
+ const parts = {};
102
+ for (const superKey of data.listInputFields()) {
103
+ const superData = data.traverse({
104
+ field: superKey,
105
+ errorIfFieldNotSet: true
106
+ });
107
+ const keys = superData.listInputFields();
108
+ if (keys === void 0) throw new _platforma_sdk_model.PFrameDriverError(`no partition keys for super key ${superKey}`);
109
+ for (const field of keys) if (field.endsWith(BinaryPartitionedIndexFieldSuffix)) {
110
+ const key = field.slice(0, -6);
111
+ const partKey = JSON.stringify([...JSON.parse(superKey), ...JSON.parse(key)]);
112
+ let part = parts[partKey];
113
+ if (part === void 0) {
114
+ part = {};
115
+ parts[partKey] = part;
116
+ }
117
+ parts[partKey].index = superData.traverse({
118
+ field,
119
+ errorIfFieldNotSet: true
120
+ }).persist();
121
+ } else if (field.endsWith(BinaryPartitionedValuesFieldSuffix)) {
122
+ const key = field.slice(0, -7);
123
+ const partKey = JSON.stringify([...JSON.parse(superKey), ...JSON.parse(key)]);
124
+ let part = parts[partKey];
125
+ if (part === void 0) {
126
+ part = {};
127
+ parts[partKey] = part;
128
+ }
129
+ parts[partKey].values = superData.traverse({
130
+ field,
131
+ errorIfFieldNotSet: true
132
+ }).persist();
133
+ } else throw new _platforma_sdk_model.PFrameDriverError(`unrecognized part field name: ${field}`);
134
+ }
135
+ return {
136
+ type: "BinaryPartitioned",
137
+ partitionKeyLength: meta.superPartitionKeyLength + meta.partitionKeyLength,
138
+ parts
139
+ };
140
+ } else if ((0, _milaboratories_pl_client.resourceTypesEqual)(data.resourceType, PColumnDataParquetPartitioned)) {
141
+ const meta = resourceData;
142
+ const parts = {};
143
+ for (const key of data.listInputFields()) parts[key] = traverseParquetChunkResource(data.traverse({
144
+ field: key,
145
+ assertFieldType: "Input",
146
+ errorIfFieldNotSet: true
147
+ }));
148
+ return {
149
+ type: "ParquetPartitioned",
150
+ partitionKeyLength: meta.partitionKeyLength,
151
+ parts
152
+ };
153
+ } else if ((0, _milaboratories_pl_client.resourceTypesEqual)(data.resourceType, PColumnDataParquetSuperPartitioned)) {
154
+ const meta = resourceData;
155
+ const parts = {};
156
+ for (const superKey of data.listInputFields()) {
157
+ const keys = data.traverse({
158
+ field: superKey,
159
+ errorIfFieldNotSet: true
160
+ }).listInputFields();
161
+ if (keys === void 0) throw new _platforma_sdk_model.PFrameDriverError(`no partition keys for super key ${superKey}`);
162
+ for (const key of keys) {
163
+ const resource = data.traverse({
164
+ field: key,
165
+ errorIfFieldNotSet: true
166
+ });
167
+ const partKey = JSON.stringify([...JSON.parse(superKey), ...JSON.parse(key)]);
168
+ parts[partKey] = traverseParquetChunkResource(resource);
169
+ }
170
+ }
171
+ return {
172
+ type: "ParquetPartitioned",
173
+ partitionKeyLength: meta.superPartitionKeyLength + meta.partitionKeyLength,
174
+ parts
175
+ };
176
+ }
177
+ throw new _platforma_sdk_model.PFrameDriverError(`unsupported resource type: ${(0, _milaboratories_pl_client.resourceTypeToString)(data.resourceType)}`);
200
178
  }
201
179
  function traverseParquetChunkResource(resource) {
202
- if (!plClient.resourceTypesEqual(resource.resourceType, ParquetChunkResourceType)) {
203
- throw new model.PFrameDriverError(`unknown resource type: ${plClient.resourceTypeToString(resource.resourceType)}, ` +
204
- `expected: ${plClient.resourceTypeToString(ParquetChunkResourceType)}`);
205
- }
206
- const blob = resource
207
- .traverse({ field: "blob", assertFieldType: "Service", errorIfFieldNotSet: true })
208
- .persist();
209
- const partInfo = resource.getDataAsJson();
210
- const mapping = resource
211
- .traverse({ field: "mapping", assertFieldType: "Service", errorIfFieldNotSet: true })
212
- .getDataAsJson();
213
- return {
214
- data: blob,
215
- ...partInfo,
216
- ...mapping,
217
- };
180
+ if (!(0, _milaboratories_pl_client.resourceTypesEqual)(resource.resourceType, ParquetChunkResourceType)) throw new _platforma_sdk_model.PFrameDriverError(`unknown resource type: ${(0, _milaboratories_pl_client.resourceTypeToString)(resource.resourceType)}, expected: ${(0, _milaboratories_pl_client.resourceTypeToString)(ParquetChunkResourceType)}`);
181
+ const blob = resource.traverse({
182
+ field: "blob",
183
+ assertFieldType: "Service",
184
+ errorIfFieldNotSet: true
185
+ }).persist();
186
+ const partInfo = resource.getDataAsJson();
187
+ const mapping = resource.traverse({
188
+ field: "mapping",
189
+ assertFieldType: "Service",
190
+ errorIfFieldNotSet: true
191
+ }).getDataAsJson();
192
+ return {
193
+ data: blob,
194
+ ...partInfo,
195
+ ...mapping
196
+ };
218
197
  }
219
198
  function deriveLegacyPObjectId(spec, data) {
220
- const hash = node_crypto.createHash("sha256");
221
- hash.update(canonicalize(spec));
222
- hash.update(String(!plClient.isNullResourceId(data.originalId) ? data.originalId : data.id));
223
- return hash.digest().toString("hex");
199
+ const hash = (0, node_crypto.createHash)("sha256");
200
+ hash.update((0, canonicalize.default)(spec));
201
+ hash.update(String(!(0, _milaboratories_pl_client.isNullResourceId)(data.originalId) ? data.originalId : data.id));
202
+ return hash.digest().toString("hex");
224
203
  }
225
204
  function deriveGlobalPObjectId(blockId, exportName) {
226
- return canonicalize({ __isRef: true, blockId, name: exportName });
205
+ return (0, canonicalize.default)({
206
+ __isRef: true,
207
+ blockId,
208
+ name: exportName
209
+ });
227
210
  }
228
211
  function deriveLocalPObjectId(resolvePath, outputName) {
229
- return canonicalize({ resolvePath, name: outputName });
212
+ return (0, canonicalize.default)({
213
+ resolvePath,
214
+ name: outputName
215
+ });
230
216
  }
231
217
 
232
- exports.PColumnDataBinaryPartitioned = PColumnDataBinaryPartitioned;
233
- exports.PColumnDataBinarySuperPartitioned = PColumnDataBinarySuperPartitioned;
234
- exports.PColumnDataJson = PColumnDataJson;
235
- exports.PColumnDataJsonPartitioned = PColumnDataJsonPartitioned;
236
- exports.PColumnDataJsonSuperPartitioned = PColumnDataJsonSuperPartitioned;
237
- exports.PColumnDataParquetPartitioned = PColumnDataParquetPartitioned;
238
- exports.PColumnDataParquetSuperPartitioned = PColumnDataParquetSuperPartitioned;
239
- exports.ParquetChunkResourceType = ParquetChunkResourceType;
218
+ //#endregion
240
219
  exports.deriveGlobalPObjectId = deriveGlobalPObjectId;
241
220
  exports.deriveLegacyPObjectId = deriveLegacyPObjectId;
242
221
  exports.deriveLocalPObjectId = deriveLocalPObjectId;
243
222
  exports.parseDataInfoResource = parseDataInfoResource;
244
223
  exports.traverseParquetChunkResource = traverseParquetChunkResource;
245
- //# sourceMappingURL=data.cjs.map
224
+ //# sourceMappingURL=data.cjs.map