@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":"project.cjs","sources":["../../src/middle_layer/project.ts"],"sourcesContent":["import type { MiddleLayerEnvironment } from \"./middle_layer\";\nimport type { FieldData, OptionalAnyResourceId, ResourceId } from \"@milaboratories/pl-client\";\nimport {\n DefaultRetryOptions,\n ensureResourceIdNotNull,\n field,\n isNotFoundError,\n isTimeoutOrCancelError,\n Pl,\n resourceIdToString,\n} from \"@milaboratories/pl-client\";\nimport type { ComputableStableDefined, ComputableValueOrErrors } from \"@milaboratories/computable\";\nimport { Computable } from \"@milaboratories/computable\";\nimport { projectOverview } from \"./project_overview\";\nimport type { BlockPackSpecAny } from \"../model\";\nimport { randomUUID } from \"node:crypto\";\nimport { withProject, withProjectAuthored } from \"../mutator/project\";\nimport type { ExtendedResourceData, PruningFunction } from \"@milaboratories/pl-tree\";\nimport { SynchronizedTreeState, treeDumpStats } from \"@milaboratories/pl-tree\";\nimport { setTimeout } from \"node:timers/promises\";\nimport { frontendData } from \"./frontend_path\";\nimport type { NavigationState } from \"@milaboratories/pl-model-common\";\nimport { getBlockParameters, blockOutputs } from \"./block\";\nimport type { FrontendData } from \"../model/frontend\";\nimport type { ProjectStructure } from \"../model/project_model\";\nimport { projectFieldName } from \"../model/project_model\";\nimport { cachedDeserialize, notEmpty, type MiLogger } from \"@milaboratories/ts-helpers\";\nimport type { BlockPackInfo } from \"../model/block_pack\";\nimport type {\n ProjectOverview,\n AuthorMarker,\n BlockSettings,\n BlockStateInternalV3,\n} from \"@milaboratories/pl-model-middle-layer\";\nimport { activeConfigs } from \"./active_cfg\";\nimport { NavigationStates } from \"./navigation_states\";\nimport { extractConfig, BLOCK_STORAGE_FACADE_VERSION } from \"@platforma-sdk/model\";\nimport fs from \"node:fs/promises\";\nimport canonicalize from \"canonicalize\";\nimport type { ProjectOverviewLight } from \"./project_overview_light\";\nimport { projectOverviewLight } from \"./project_overview_light\";\nimport { applyProjectMigrations } from \"../mutator/migration\";\n\ntype BlockStateComputables = {\n readonly fullState: Computable<BlockStateInternalV3>;\n};\n\nfunction stringifyForDump(object: unknown): string {\n return JSON.stringify(object, (key, value) => {\n if (typeof value === \"bigint\") return resourceIdToString(value as OptionalAnyResourceId);\n else if (\n ArrayBuffer.isView(value) ||\n value instanceof Int8Array ||\n value instanceof Uint8Array ||\n value instanceof Uint8ClampedArray ||\n value instanceof Int16Array ||\n value instanceof Uint16Array ||\n value instanceof Int32Array ||\n value instanceof Uint32Array ||\n value instanceof Float32Array ||\n value instanceof Float64Array ||\n value instanceof BigInt64Array ||\n value instanceof BigUint64Array\n )\n return Buffer.from(value.buffer, value.byteOffset, value.byteLength).toString(\"base64\");\n else if (Buffer.isBuffer(value)) return value.toString(\"base64\");\n\n return value;\n });\n}\n\n/** Data access object, to manipulate and read single opened (!) project data. */\nexport class Project {\n /** Underlying pl resource id */\n public readonly rid: ResourceId;\n\n /** Data for the left panel, contain basic information about block status. */\n public readonly overview: ComputableStableDefined<ProjectOverview>;\n private readonly overviewLight: Computable<ProjectOverviewLight>;\n\n private readonly navigationStates = new NavigationStates();\n // null is set for deleted blocks\n private readonly blockComputables = new Map<string, BlockStateComputables | null>();\n\n private readonly blockFrontends = new Map<string, ComputableStableDefined<FrontendData>>();\n private readonly activeConfigs: Computable<unknown[]>;\n private readonly refreshLoopResult: Promise<void>;\n\n private readonly abortController = new AbortController();\n\n private get destroyed() {\n return this.abortController.signal.aborted;\n }\n\n constructor(\n private readonly env: MiddleLayerEnvironment,\n rid: ResourceId,\n private readonly projectTree: SynchronizedTreeState,\n ) {\n this.overview = projectOverview(\n projectTree.entry(),\n this.navigationStates,\n env,\n ).withPreCalculatedValueTree();\n this.overviewLight = projectOverviewLight(projectTree.entry()).withPreCalculatedValueTree();\n this.rid = rid;\n this.refreshLoopResult = this.refreshLoop();\n this.refreshLoopResult.catch((err) => {\n env.logger.warn(new Error(\"Error during refresh loop\", { cause: err })); // TODO (safe voiding for now)\n });\n this.activeConfigs = activeConfigs(projectTree.entry(), env);\n }\n\n get projectLockId(): string {\n return \"project:\" + this.rid.toString();\n }\n\n private async refreshLoop(): Promise<void> {\n while (!this.destroyed) {\n try {\n await withProject(\n this.env.projectHelper,\n this.env.pl,\n this.rid,\n (prj) => {\n prj.doRefresh(this.env.ops.stagingRenderingRate);\n },\n { name: \"doRefresh\", lockId: this.projectLockId },\n );\n await this.activeConfigs.getValue();\n await setTimeout(this.env.ops.projectRefreshInterval, this.abortController.signal);\n\n // Block computables housekeeping\n const overviewLight = await this.overviewLight.getValue();\n const existingBlocks = new Set(overviewLight.listOfBlocks);\n // Doing cleanup for deleted blocks\n for (const blockId of this.blockComputables.keys()) {\n if (!existingBlocks.has(blockId)) {\n const computable = this.blockComputables.get(blockId);\n if (computable !== undefined && computable !== null) computable.fullState.resetState();\n this.blockComputables.set(blockId, null);\n }\n }\n } catch (e: unknown) {\n // If we're destroyed, exit gracefully regardless of error type\n if (this.destroyed) {\n // Log just in case, to help with debugging if something unexpected happens during shutdown\n this.env.logger.warn(new Error(\"Error during refresh loop shutdown\", { cause: e }));\n break;\n }\n\n if (isNotFoundError(e)) {\n console.warn(\n \"project refresh routine terminated, because project was externally deleted\",\n );\n break;\n } else if (isTimeoutOrCancelError(e)) {\n // Timeout during normal operation, continue the loop\n } else {\n // TODO: This stops the refresh loop permanently, leaving the project broken.\n // Need to decide how to handle this case.\n throw new Error(\"Unexpected exception\", { cause: e });\n }\n }\n }\n }\n\n /**\n * Adds new block to the project.\n *\n * @param blockLabel block label / title visible to the user\n * @param blockPackSpec object describing the \"block type\", read more in the type docs\n * @param before id of the block to insert new block before\n * @param blockId internal id to be assigned for the block, this arg can be omitted\n * then, randomly generated UUID will be assigned automatically\n *\n * @return returns newly created block id\n * */\n public async addBlock(\n blockLabel: string,\n blockPackSpec: BlockPackSpecAny,\n before?: string,\n author: AuthorMarker | undefined = undefined,\n blockId: string = randomUUID(),\n ): Promise<string> {\n const preparedBp = await this.env.bpPreparer.prepare(blockPackSpec);\n const blockCfgContainer = await this.env.bpPreparer.getBlockConfigContainer(blockPackSpec);\n const blockCfg = extractConfig(blockCfgContainer); // full content of this var should never be persisted\n\n this.env.runtimeCapabilities.throwIfIncompatible(blockCfg.featureFlags);\n\n // Build NewBlockSpec based on model API version\n const newBlockSpec =\n blockCfg.modelAPIVersion === BLOCK_STORAGE_FACADE_VERSION\n ? { storageMode: \"fromModel\" as const, blockPack: preparedBp }\n : {\n storageMode: \"legacy\" as const,\n blockPack: preparedBp,\n legacyState: canonicalize({\n args: blockCfg.initialArgs,\n uiState: blockCfg.initialUiState,\n })!,\n };\n\n await withProjectAuthored(\n this.env.projectHelper,\n this.env.pl,\n this.rid,\n author,\n (mut) => {\n return mut.addBlock(\n {\n id: blockId,\n label: blockLabel,\n renderingMode: blockCfg.renderingMode,\n },\n newBlockSpec,\n before,\n );\n },\n {\n retryOptions: {\n ...DefaultRetryOptions,\n backoffMultiplier: DefaultRetryOptions.backoffMultiplier * 1.1,\n },\n name: \"addBlock\",\n lockId: this.projectLockId,\n },\n );\n\n await this.projectTree.refreshState();\n\n return blockId;\n }\n\n /**\n * Duplicates an existing block by copying all its fields and state.\n * This method works at the mutator level for efficient block copying.\n *\n * @param originalBlockId id of the block to duplicate\n * @param before id of the block to insert new block before\n * @param author author marker for the duplication operation\n * @param newBlockId internal id to be assigned for the duplicated block,\n * if omitted, a randomly generated UUID will be assigned\n *\n * @return returns newly created block id\n * */\n public async duplicateBlock(\n originalBlockId: string,\n before?: string,\n author: AuthorMarker | undefined = undefined,\n newBlockId: string = randomUUID(),\n ): Promise<string> {\n await withProjectAuthored(\n this.env.projectHelper,\n this.env.pl,\n this.rid,\n author,\n (mut) => mut.duplicateBlock(originalBlockId, newBlockId, before),\n { name: \"duplicateBlock\", lockId: this.projectLockId },\n );\n await this.projectTree.refreshState();\n\n return newBlockId;\n }\n\n /**\n * Update block to new block pack, optionally resetting args and ui state to\n * initial values\n * */\n public async updateBlockPack(\n blockId: string,\n blockPackSpec: BlockPackSpecAny,\n resetArgs: boolean = false,\n author?: AuthorMarker,\n ): Promise<void> {\n const preparedBp = await this.env.bpPreparer.prepare(blockPackSpec);\n const blockCfg = extractConfig(\n await this.env.bpPreparer.getBlockConfigContainer(blockPackSpec),\n );\n\n this.env.runtimeCapabilities.throwIfIncompatible(blockCfg.featureFlags);\n\n // resetState signals to mutator to reset storage\n // For v2+ blocks: mutator gets initial storage directly via getInitialStorageInVM\n // For v1 blocks: we pass the legacy state format\n const resetState = resetArgs\n ? {\n state:\n blockCfg.modelAPIVersion === 1\n ? { args: blockCfg.initialArgs, uiState: blockCfg.initialUiState }\n : {},\n }\n : undefined;\n await withProjectAuthored(\n this.env.projectHelper,\n this.env.pl,\n this.rid,\n author,\n (mut) => mut.migrateBlockPack(blockId, preparedBp, resetState),\n { name: \"updateBlockPack\", lockId: this.projectLockId },\n );\n await this.projectTree.refreshState();\n }\n\n /** Deletes a block with all associated data. */\n public async deleteBlock(blockId: string, author?: AuthorMarker): Promise<void> {\n await withProjectAuthored(\n this.env.projectHelper,\n this.env.pl,\n this.rid,\n author,\n (mut) => mut.deleteBlock(blockId),\n { name: \"deleteBlock\", lockId: this.projectLockId },\n );\n this.navigationStates.deleteBlock(blockId);\n await this.projectTree.refreshState();\n }\n\n /**\n * Updates block order according to the given array of block ids.\n *\n * Provided array must contain exactly the same set of ids current project cosists of,\n * an error will be thrown instead.\n */\n public async reorderBlocks(blocks: string[], author?: AuthorMarker): Promise<void> {\n await withProjectAuthored(\n this.env.projectHelper,\n this.env.pl,\n this.rid,\n author,\n (mut) => {\n const currentStructure = mut.structure;\n if (currentStructure.groups.length !== 1)\n throw new Error(\"Unexpected project structure, non-singular block group\");\n const currentGroup = currentStructure.groups[0];\n if (currentGroup.blocks.length !== blocks.length)\n throw new Error(`Length mismatch: ${currentGroup.blocks.length} !== ${blocks.length}`);\n if (new Set<string>(blocks).size !== blocks.length) throw new Error(`Repeated block ids`);\n const newStructure: ProjectStructure = {\n groups: [\n {\n id: currentGroup.id,\n label: currentGroup.label,\n blocks: blocks.map((blockId) => {\n const block = currentGroup.blocks.find((b) => b.id === blockId);\n if (block === undefined) throw new Error(`Can't find block: ${blockId}`);\n return block;\n }),\n },\n ],\n };\n mut.updateStructure(newStructure);\n },\n { name: \"reorderBlocks\", lockId: this.projectLockId },\n );\n await this.projectTree.refreshState();\n }\n\n /**\n * Renders production part of the block starting all connected heavy computations.\n * Upstream blocks of the specified block will be started automatically if in\n * stale state.\n * */\n public async runBlock(blockId: string): Promise<void> {\n await withProject(\n this.env.projectHelper,\n this.env.pl,\n this.rid,\n (mut) => mut.renderProduction([blockId], true),\n { name: \"runBlock\", lockId: this.projectLockId },\n );\n await this.projectTree.refreshState();\n }\n\n /**\n * Stops the block if it is running by destroying its production state. All\n * its downstreams will also be destroyed or moved to limbo if already\n * calculated.\n * */\n public async stopBlock(blockId: string): Promise<void> {\n await withProject(\n this.env.projectHelper,\n this.env.pl,\n this.rid,\n (mut) => mut.stopProduction(blockId),\n { name: \"stopBlock\", lockId: this.projectLockId },\n );\n await this.projectTree.refreshState();\n }\n\n /**\n * @deprecated Use mutateBlockStorage() for V3 blocks.\n * Sets block args, and changes whole project state accordingly.\n * Along with setting arguments one can specify author marker, that will be\n * transactionally associated with the block, to facilitate conflict resolution\n * in collaborative editing scenario.\n * */\n public async setBlockArgs(blockId: string, args: unknown, author?: AuthorMarker) {\n await withProjectAuthored(\n this.env.projectHelper,\n this.env.pl,\n this.rid,\n author,\n (mut) => {\n const state = mut.mergeBlockState(blockId, { args });\n mut.setStates([{ modelAPIVersion: 1, blockId, state }]);\n },\n { name: \"setBlockArgs\", lockId: this.projectLockId },\n );\n await this.projectTree.refreshState();\n }\n\n /**\n * @deprecated Use mutateBlockStorage() for V3 blocks.\n * Sets ui block state associated with the block.\n * Along with setting arguments one can specify author marker, that will be\n * transactionally associated with the block, to facilitate conflict resolution\n * in collaborative editing scenario.\n * */\n public async setUiState(blockId: string, uiState: unknown, author?: AuthorMarker) {\n await withProjectAuthored(\n this.env.projectHelper,\n this.env.pl,\n this.rid,\n author,\n (mut) => {\n const state = mut.mergeBlockState(blockId, { uiState });\n mut.setStates([{ modelAPIVersion: 1, blockId, state }]);\n },\n { name: \"setUiState\", lockId: this.projectLockId },\n );\n await this.projectTree.refreshState();\n }\n\n /**\n * @deprecated Use mutateBlockStorage() for V3 blocks.\n * Sets block args and ui state, and changes the whole project state accordingly.\n * Along with setting arguments one can specify author marker, that will be\n * transactionally associated with the block, to facilitate conflict resolution\n * in collaborative editing scenario.\n * */\n public async setBlockArgsAndUiState(\n blockId: string,\n args: unknown, // keep for v1/v2 compatibility\n uiState: unknown, // keep for v1/v2 compatibility\n author?: AuthorMarker,\n ) {\n // Normalize to unified state format { args, uiState } for v1/v2 blocks\n const state = { args, uiState };\n await withProjectAuthored(\n this.env.projectHelper,\n this.env.pl,\n this.rid,\n author,\n (mut) => {\n mut.setStates([{ modelAPIVersion: 1, blockId, state }]);\n },\n { name: \"setBlockArgsAndUiState\", lockId: this.projectLockId },\n );\n await this.projectTree.refreshState();\n }\n\n /**\n * Sets navigation state.\n * */\n //\n public async setNavigationState(blockId: string, state: NavigationState): Promise<void> {\n this.navigationStates.setState(blockId, state);\n }\n\n /**\n * Mutates block storage for Model API v3 blocks.\n * Applies a storage operation (e.g., 'update-data') which triggers\n * args derivation (args(data) and prerunArgs(data)).\n * The derived args are stored atomically with the data.\n *\n * @param blockId - The block ID\n * @param payload - Storage mutation payload with operation and value\n * @param author - Optional author marker for collaborative editing\n */\n public async mutateBlockStorage(\n blockId: string,\n payload: { operation: string; value: unknown },\n author?: AuthorMarker,\n ) {\n await withProjectAuthored(\n this.env.projectHelper,\n this.env.pl,\n this.rid,\n author,\n (mut) => mut.setStates([{ modelAPIVersion: 2, blockId, payload }]),\n { name: \"mutateBlockStorage\", lockId: this.projectLockId },\n );\n await this.projectTree.refreshState();\n }\n\n /** Update block settings */\n public async setBlockSettings(blockId: string, newValue: BlockSettings) {\n await withProjectAuthored(\n this.env.projectHelper,\n this.env.pl,\n this.rid,\n undefined,\n (mut) => {\n mut.setBlockSettings(blockId, newValue);\n },\n { name: \"setBlockSettings\" },\n );\n await this.projectTree.refreshState();\n }\n\n /**\n * Sets raw block storage content directly.\n * This bypasses all normalization and VM transformations.\n *\n * @param blockId The block to set storage for\n * @param rawStorageJson Raw storage as JSON string\n */\n public async setBlockStorageRaw(blockId: string, rawStorageJson: string): Promise<void> {\n await withProjectAuthored(\n this.env.projectHelper,\n this.env.pl,\n this.rid,\n undefined,\n (mut) => {\n mut.setBlockStorageRaw(blockId, rawStorageJson);\n },\n { name: \"setBlockStorageRaw\" },\n );\n await this.projectTree.refreshState();\n }\n\n /** Resets arguments and ui state of the block to initial state */\n public async resetBlockArgsAndUiState(blockId: string, author?: AuthorMarker): Promise<void> {\n await this.env.pl.withWriteTx(\"BlockInputsReset\", async (tx) => {\n // reading default arg values from block pack\n const bpHolderRid = ensureResourceIdNotNull(\n (await tx.getField(field(this.rid, projectFieldName(blockId, \"blockPack\")))).value,\n );\n const bpRid = ensureResourceIdNotNull(\n (await tx.getField(field(bpHolderRid, Pl.HolderRefField))).value,\n );\n const bpData = await tx.getResourceData(bpRid, false);\n const config = extractConfig(cachedDeserialize<BlockPackInfo>(notEmpty(bpData.data)).config);\n\n await withProjectAuthored(\n this.env.projectHelper,\n tx,\n this.rid,\n author,\n (prj) => {\n if (config.modelAPIVersion === BLOCK_STORAGE_FACADE_VERSION) {\n // V2+: Reset to initial storage via VM\n prj.resetToInitialStorage(blockId);\n } else {\n // V1: Use legacy state format\n const initialState = { args: config.initialArgs, uiState: config.initialUiState };\n prj.setStates([{ modelAPIVersion: 1, blockId, state: initialState }]);\n }\n },\n { name: \"resetBlockArgsAndUiState\", lockId: this.projectLockId },\n );\n await tx.commit();\n });\n await this.projectTree.refreshState();\n }\n\n private getBlockComputables(blockId: string): BlockStateComputables {\n const cached = this.blockComputables.get(blockId);\n if (cached === null) throw new Error(`Block ${blockId} is deleted`);\n if (cached === undefined) {\n // state consists of inputs (args + ui state) and outputs\n const outputs = blockOutputs(this.projectTree.entry(), blockId, this.env);\n const fullState = Computable.make(\n (ctx) => {\n return {\n parameters: getBlockParameters(this.projectTree.entry(), blockId, ctx),\n outputs,\n navigationState: this.navigationStates.getState(blockId),\n overview: this.overview,\n };\n },\n {\n postprocessValue: (v) => {\n const blockOverview = v.overview?.blocks?.find((b) => b.id == blockId);\n const sdkVersion = blockOverview?.sdkVersion;\n const storageDebugView = blockOverview?.storageDebugView;\n const toString = sdkVersion && shouldStillUseStringErrors(sdkVersion);\n const newOutputs =\n toString && v.outputs !== undefined ? convertErrorsToStrings(v.outputs) : v.outputs;\n\n return {\n ...v.parameters,\n outputs: newOutputs,\n navigationState: v.navigationState,\n storageDebugView,\n } as BlockStateInternalV3;\n },\n },\n );\n\n const computables: BlockStateComputables = {\n fullState: fullState.withPreCalculatedValueTree(),\n };\n\n this.blockComputables.set(blockId, computables);\n\n return computables;\n }\n return cached;\n }\n\n /**\n * Returns a computable, that can be used to retrieve and watch full block state,\n * including outputs, arguments, ui state.\n * */\n public getBlockState(blockId: string): Computable<BlockStateInternalV3> {\n return this.getBlockComputables(blockId).fullState;\n }\n\n /**\n * Returns a computable, that can be used to retrieve and watch path of the\n * folder containing frontend code.\n * */\n public getBlockFrontend(blockId: string): ComputableStableDefined<FrontendData> {\n const cached = this.blockFrontends.get(blockId);\n if (cached === undefined) {\n const fd = frontendData(\n this.projectTree.entry(),\n blockId,\n this.env,\n ).withPreCalculatedValueTree();\n this.blockFrontends.set(blockId, fd);\n return fd;\n }\n return cached;\n }\n\n /** Called by middle layer on close */\n public async destroy(): Promise<void> {\n // terminating the project service loop\n this.abortController.abort();\n try {\n await this.refreshLoopResult;\n } catch (e: unknown) {\n // Error was already logged in the constructor's catch handler, but log again for context\n this.env.logger.warn(\n new Error(\"Refresh loop had terminated with error before destroy\", { cause: e }),\n );\n }\n\n // terminating the synchronized project tree\n try {\n await this.projectTree.terminate();\n } catch (e: unknown) {\n // TODO: SynchronizedTreeState.terminate() can throw if mainLoop had an error before termination\n // Log error but continue cleanup - we must clean up remaining resources\n this.env.logger.warn(new Error(\"Project tree termination failed\", { cause: e }));\n }\n\n // the following will deregister all external resource holders, like\n // downloaded files, running uploads and alike\n this.overview.resetState();\n this.blockFrontends.forEach((c) => c.resetState());\n this.blockComputables.forEach((c) => {\n if (c !== null) c.fullState.resetState();\n });\n this.activeConfigs.resetState();\n }\n\n /** @deprecated */\n public async destroyAndAwaitTermination(): Promise<void> {\n await this.destroy();\n }\n\n public dumpState(): ExtendedResourceData[] {\n return this.projectTree.dumpState();\n }\n\n public static async init(env: MiddleLayerEnvironment, rid: ResourceId): Promise<Project> {\n // Applying migrations to the project resource, if needed\n await applyProjectMigrations(env.pl, rid);\n\n // Doing a no-op mutation to apply all migration and schema fixes\n await withProject(env.projectHelper, env.pl, rid, (_) => {}, { name: \"init\" });\n\n // Loading project tree\n const projectTree = await SynchronizedTreeState.init(\n env.pl,\n rid,\n {\n ...env.ops.defaultTreeOptions,\n pruning: projectTreePruning(env.logger),\n },\n env.logger,\n );\n\n if (env.ops.debugOps.dumpInitialTreeState) {\n const state = projectTree.dumpState();\n state.sort((a, b) => (b.data?.byteLength ?? 0) - (a.data?.byteLength ?? 0));\n const stats = treeDumpStats(state);\n await fs.writeFile(`${resourceIdToString(rid)}.json`, stringifyForDump(state));\n await fs.writeFile(`${resourceIdToString(rid)}.stats.json`, stringifyForDump(stats));\n }\n\n return new Project(env, rid, projectTree);\n }\n}\n\nfunction projectTreePruning(logger: MiLogger): PruningFunction {\n return (r: ExtendedResourceData): FieldData[] => {\n if (r.fields.length > 1000)\n logger.warn(\n `resource with excessive field count: type=${r.type.name} id=${r.id} fields=${r.fields.length}` +\n ` names=[${r.fields\n .slice(0, 10)\n .map((f) => f.name)\n .join(\", \")}, ...]`,\n );\n if (r.type.name.startsWith(\"StreamWorkdir/\")) return [];\n switch (r.type.name) {\n case \"BlockPackCustom\":\n return r.fields.filter((f) => f.name !== \"template\");\n case \"UserProject\":\n return r.fields.filter((f) => !f.name.startsWith(\"__serviceTemplate\"));\n case \"Blob\":\n return [];\n default:\n return r.fields;\n }\n };\n}\n\n/** Returns true if sdk version of the block is old and we need to convert\n * ErrorLike errors to strings like it was.\n * We need it for keeping old blocks and new UI compatibility. */\nfunction shouldStillUseStringErrors(sdkVersion: string): boolean {\n return !isVersionGreater(sdkVersion, \"1.26.0\");\n}\n\n/** Checks if sdk version is greater that a target version. */\nfunction isVersionGreater(sdkVersion: string, targetVersion: string): boolean {\n const version = sdkVersion.split(\".\").map(Number);\n const target = targetVersion.split(\".\").map(Number);\n\n return (\n version[0] > target[0] ||\n (version[0] === target[0] && version[1] > target[1]) ||\n (version[0] === target[0] && version[1] === target[1] && version[2] > target[2])\n );\n}\n\n/** Converts ErrorLike errors to strings in the outputs like it was in old ML versions. */\nfunction convertErrorsToStrings(\n outputs: Record<string, ComputableValueOrErrors<unknown>>,\n): Record<string, ComputableValueOrErrors<unknown>> {\n const result: Record<string, ComputableValueOrErrors<unknown>> = {};\n for (const [key, val] of Object.entries(outputs)) {\n if (val.ok) {\n result[key] = val;\n continue;\n }\n\n result[key] = {\n ok: false,\n errors: val.errors.map((e) => {\n if (typeof e === \"string\") {\n return e;\n } else if (e.type == \"PlError\" && e.fullMessage !== undefined) {\n return e.fullMessage;\n }\n return e.message;\n }),\n moreErrors: val.moreErrors,\n };\n }\n\n return result;\n}\n"],"names":["resourceIdToString","NavigationStates","projectOverview","projectOverviewLight","activeConfigs","withProject","setTimeout","isNotFoundError","isTimeoutOrCancelError","randomUUID","extractConfig","BLOCK_STORAGE_FACADE_VERSION","withProjectAuthored","DefaultRetryOptions","ensureResourceIdNotNull","field","projectFieldName","Pl","cachedDeserialize","notEmpty","blockOutputs","Computable","getBlockParameters","frontendData","applyProjectMigrations","SynchronizedTreeState","treeDumpStats"],"mappings":"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"}
1
+ {"version":3,"file":"project.cjs","names":["NavigationStates","projectOverview","projectOverviewLight","activeConfigs","withProject","BLOCK_STORAGE_FACADE_VERSION","withProjectAuthored","DefaultRetryOptions","projectFieldName","Pl","blockOutputs","Computable","getBlockParameters","frontendData","applyProjectMigrations","SynchronizedTreeState","fs"],"sources":["../../src/middle_layer/project.ts"],"sourcesContent":["import type { MiddleLayerEnvironment } from \"./middle_layer\";\nimport type { FieldData, OptionalAnyResourceId, ResourceId } from \"@milaboratories/pl-client\";\nimport {\n DefaultRetryOptions,\n ensureResourceIdNotNull,\n field,\n isNotFoundError,\n isTimeoutOrCancelError,\n Pl,\n resourceIdToString,\n} from \"@milaboratories/pl-client\";\nimport type { ComputableStableDefined, ComputableValueOrErrors } from \"@milaboratories/computable\";\nimport { Computable } from \"@milaboratories/computable\";\nimport { projectOverview } from \"./project_overview\";\nimport type { BlockPackSpecAny } from \"../model\";\nimport { randomUUID } from \"node:crypto\";\nimport { withProject, withProjectAuthored } from \"../mutator/project\";\nimport type { ExtendedResourceData, PruningFunction } from \"@milaboratories/pl-tree\";\nimport { SynchronizedTreeState, treeDumpStats } from \"@milaboratories/pl-tree\";\nimport { setTimeout } from \"node:timers/promises\";\nimport { frontendData } from \"./frontend_path\";\nimport type { NavigationState } from \"@milaboratories/pl-model-common\";\nimport { getBlockParameters, blockOutputs } from \"./block\";\nimport type { FrontendData } from \"../model/frontend\";\nimport type { ProjectStructure } from \"../model/project_model\";\nimport { projectFieldName } from \"../model/project_model\";\nimport { cachedDeserialize, notEmpty, type MiLogger } from \"@milaboratories/ts-helpers\";\nimport type { BlockPackInfo } from \"../model/block_pack\";\nimport type {\n ProjectOverview,\n AuthorMarker,\n BlockSettings,\n BlockStateInternalV3,\n} from \"@milaboratories/pl-model-middle-layer\";\nimport { activeConfigs } from \"./active_cfg\";\nimport { NavigationStates } from \"./navigation_states\";\nimport { extractConfig, BLOCK_STORAGE_FACADE_VERSION } from \"@platforma-sdk/model\";\nimport fs from \"node:fs/promises\";\nimport canonicalize from \"canonicalize\";\nimport type { ProjectOverviewLight } from \"./project_overview_light\";\nimport { projectOverviewLight } from \"./project_overview_light\";\nimport { applyProjectMigrations } from \"../mutator/migration\";\n\ntype BlockStateComputables = {\n readonly fullState: Computable<BlockStateInternalV3>;\n};\n\nfunction stringifyForDump(object: unknown): string {\n return JSON.stringify(object, (key, value) => {\n if (typeof value === \"bigint\") return resourceIdToString(value as OptionalAnyResourceId);\n else if (\n ArrayBuffer.isView(value) ||\n value instanceof Int8Array ||\n value instanceof Uint8Array ||\n value instanceof Uint8ClampedArray ||\n value instanceof Int16Array ||\n value instanceof Uint16Array ||\n value instanceof Int32Array ||\n value instanceof Uint32Array ||\n value instanceof Float32Array ||\n value instanceof Float64Array ||\n value instanceof BigInt64Array ||\n value instanceof BigUint64Array\n )\n return Buffer.from(value.buffer, value.byteOffset, value.byteLength).toString(\"base64\");\n else if (Buffer.isBuffer(value)) return value.toString(\"base64\");\n\n return value;\n });\n}\n\n/** Data access object, to manipulate and read single opened (!) project data. */\nexport class Project {\n /** Underlying pl resource id */\n public readonly rid: ResourceId;\n\n /** Data for the left panel, contain basic information about block status. */\n public readonly overview: ComputableStableDefined<ProjectOverview>;\n private readonly overviewLight: Computable<ProjectOverviewLight>;\n\n private readonly navigationStates = new NavigationStates();\n // null is set for deleted blocks\n private readonly blockComputables = new Map<string, BlockStateComputables | null>();\n\n private readonly blockFrontends = new Map<string, ComputableStableDefined<FrontendData>>();\n private readonly activeConfigs: Computable<unknown[]>;\n private readonly refreshLoopResult: Promise<void>;\n\n private readonly abortController = new AbortController();\n\n private get destroyed() {\n return this.abortController.signal.aborted;\n }\n\n constructor(\n private readonly env: MiddleLayerEnvironment,\n rid: ResourceId,\n private readonly projectTree: SynchronizedTreeState,\n ) {\n this.overview = projectOverview(\n projectTree.entry(),\n this.navigationStates,\n env,\n ).withPreCalculatedValueTree();\n this.overviewLight = projectOverviewLight(projectTree.entry()).withPreCalculatedValueTree();\n this.rid = rid;\n this.refreshLoopResult = this.refreshLoop();\n this.refreshLoopResult.catch((err) => {\n env.logger.warn(new Error(\"Error during refresh loop\", { cause: err })); // TODO (safe voiding for now)\n });\n this.activeConfigs = activeConfigs(projectTree.entry(), env);\n }\n\n get projectLockId(): string {\n return \"project:\" + this.rid.toString();\n }\n\n private async refreshLoop(): Promise<void> {\n while (!this.destroyed) {\n try {\n await withProject(\n this.env.projectHelper,\n this.env.pl,\n this.rid,\n (prj) => {\n prj.doRefresh(this.env.ops.stagingRenderingRate);\n },\n { name: \"doRefresh\", lockId: this.projectLockId },\n );\n await this.activeConfigs.getValue();\n await setTimeout(this.env.ops.projectRefreshInterval, this.abortController.signal);\n\n // Block computables housekeeping\n const overviewLight = await this.overviewLight.getValue();\n const existingBlocks = new Set(overviewLight.listOfBlocks);\n // Doing cleanup for deleted blocks\n for (const blockId of this.blockComputables.keys()) {\n if (!existingBlocks.has(blockId)) {\n const computable = this.blockComputables.get(blockId);\n if (computable !== undefined && computable !== null) computable.fullState.resetState();\n this.blockComputables.set(blockId, null);\n }\n }\n } catch (e: unknown) {\n // If we're destroyed, exit gracefully regardless of error type\n if (this.destroyed) {\n // Log just in case, to help with debugging if something unexpected happens during shutdown\n this.env.logger.warn(new Error(\"Error during refresh loop shutdown\", { cause: e }));\n break;\n }\n\n if (isNotFoundError(e)) {\n console.warn(\n \"project refresh routine terminated, because project was externally deleted\",\n );\n break;\n } else if (isTimeoutOrCancelError(e)) {\n // Timeout during normal operation, continue the loop\n } else {\n // TODO: This stops the refresh loop permanently, leaving the project broken.\n // Need to decide how to handle this case.\n throw new Error(\"Unexpected exception\", { cause: e });\n }\n }\n }\n }\n\n /**\n * Adds new block to the project.\n *\n * @param blockLabel block label / title visible to the user\n * @param blockPackSpec object describing the \"block type\", read more in the type docs\n * @param before id of the block to insert new block before\n * @param blockId internal id to be assigned for the block, this arg can be omitted\n * then, randomly generated UUID will be assigned automatically\n *\n * @return returns newly created block id\n * */\n public async addBlock(\n blockLabel: string,\n blockPackSpec: BlockPackSpecAny,\n before?: string,\n author: AuthorMarker | undefined = undefined,\n blockId: string = randomUUID(),\n ): Promise<string> {\n const preparedBp = await this.env.bpPreparer.prepare(blockPackSpec);\n const blockCfgContainer = await this.env.bpPreparer.getBlockConfigContainer(blockPackSpec);\n const blockCfg = extractConfig(blockCfgContainer); // full content of this var should never be persisted\n\n this.env.runtimeCapabilities.throwIfIncompatible(blockCfg.featureFlags);\n\n // Build NewBlockSpec based on model API version\n const newBlockSpec =\n blockCfg.modelAPIVersion === BLOCK_STORAGE_FACADE_VERSION\n ? { storageMode: \"fromModel\" as const, blockPack: preparedBp }\n : {\n storageMode: \"legacy\" as const,\n blockPack: preparedBp,\n legacyState: canonicalize({\n args: blockCfg.initialArgs,\n uiState: blockCfg.initialUiState,\n })!,\n };\n\n await withProjectAuthored(\n this.env.projectHelper,\n this.env.pl,\n this.rid,\n author,\n (mut) => {\n return mut.addBlock(\n {\n id: blockId,\n label: blockLabel,\n renderingMode: blockCfg.renderingMode,\n },\n newBlockSpec,\n before,\n );\n },\n {\n retryOptions: {\n ...DefaultRetryOptions,\n backoffMultiplier: DefaultRetryOptions.backoffMultiplier * 1.1,\n },\n name: \"addBlock\",\n lockId: this.projectLockId,\n },\n );\n\n await this.projectTree.refreshState();\n\n return blockId;\n }\n\n /**\n * Duplicates an existing block by copying all its fields and state.\n * This method works at the mutator level for efficient block copying.\n *\n * @param originalBlockId id of the block to duplicate\n * @param before id of the block to insert new block before\n * @param author author marker for the duplication operation\n * @param newBlockId internal id to be assigned for the duplicated block,\n * if omitted, a randomly generated UUID will be assigned\n *\n * @return returns newly created block id\n * */\n public async duplicateBlock(\n originalBlockId: string,\n before?: string,\n author: AuthorMarker | undefined = undefined,\n newBlockId: string = randomUUID(),\n ): Promise<string> {\n await withProjectAuthored(\n this.env.projectHelper,\n this.env.pl,\n this.rid,\n author,\n (mut) => mut.duplicateBlock(originalBlockId, newBlockId, before),\n { name: \"duplicateBlock\", lockId: this.projectLockId },\n );\n await this.projectTree.refreshState();\n\n return newBlockId;\n }\n\n /**\n * Update block to new block pack, optionally resetting args and ui state to\n * initial values\n * */\n public async updateBlockPack(\n blockId: string,\n blockPackSpec: BlockPackSpecAny,\n resetArgs: boolean = false,\n author?: AuthorMarker,\n ): Promise<void> {\n const preparedBp = await this.env.bpPreparer.prepare(blockPackSpec);\n const blockCfg = extractConfig(\n await this.env.bpPreparer.getBlockConfigContainer(blockPackSpec),\n );\n\n this.env.runtimeCapabilities.throwIfIncompatible(blockCfg.featureFlags);\n\n // resetState signals to mutator to reset storage\n // For v2+ blocks: mutator gets initial storage directly via getInitialStorageInVM\n // For v1 blocks: we pass the legacy state format\n const resetState = resetArgs\n ? {\n state:\n blockCfg.modelAPIVersion === 1\n ? { args: blockCfg.initialArgs, uiState: blockCfg.initialUiState }\n : {},\n }\n : undefined;\n await withProjectAuthored(\n this.env.projectHelper,\n this.env.pl,\n this.rid,\n author,\n (mut) => mut.migrateBlockPack(blockId, preparedBp, resetState),\n { name: \"updateBlockPack\", lockId: this.projectLockId },\n );\n await this.projectTree.refreshState();\n }\n\n /** Deletes a block with all associated data. */\n public async deleteBlock(blockId: string, author?: AuthorMarker): Promise<void> {\n await withProjectAuthored(\n this.env.projectHelper,\n this.env.pl,\n this.rid,\n author,\n (mut) => mut.deleteBlock(blockId),\n { name: \"deleteBlock\", lockId: this.projectLockId },\n );\n this.navigationStates.deleteBlock(blockId);\n await this.projectTree.refreshState();\n }\n\n /**\n * Updates block order according to the given array of block ids.\n *\n * Provided array must contain exactly the same set of ids current project cosists of,\n * an error will be thrown instead.\n */\n public async reorderBlocks(blocks: string[], author?: AuthorMarker): Promise<void> {\n await withProjectAuthored(\n this.env.projectHelper,\n this.env.pl,\n this.rid,\n author,\n (mut) => {\n const currentStructure = mut.structure;\n if (currentStructure.groups.length !== 1)\n throw new Error(\"Unexpected project structure, non-singular block group\");\n const currentGroup = currentStructure.groups[0];\n if (currentGroup.blocks.length !== blocks.length)\n throw new Error(`Length mismatch: ${currentGroup.blocks.length} !== ${blocks.length}`);\n if (new Set<string>(blocks).size !== blocks.length) throw new Error(`Repeated block ids`);\n const newStructure: ProjectStructure = {\n groups: [\n {\n id: currentGroup.id,\n label: currentGroup.label,\n blocks: blocks.map((blockId) => {\n const block = currentGroup.blocks.find((b) => b.id === blockId);\n if (block === undefined) throw new Error(`Can't find block: ${blockId}`);\n return block;\n }),\n },\n ],\n };\n mut.updateStructure(newStructure);\n },\n { name: \"reorderBlocks\", lockId: this.projectLockId },\n );\n await this.projectTree.refreshState();\n }\n\n /**\n * Renders production part of the block starting all connected heavy computations.\n * Upstream blocks of the specified block will be started automatically if in\n * stale state.\n * */\n public async runBlock(blockId: string): Promise<void> {\n await withProject(\n this.env.projectHelper,\n this.env.pl,\n this.rid,\n (mut) => mut.renderProduction([blockId], true),\n { name: \"runBlock\", lockId: this.projectLockId },\n );\n await this.projectTree.refreshState();\n }\n\n /**\n * Stops the block if it is running by destroying its production state. All\n * its downstreams will also be destroyed or moved to limbo if already\n * calculated.\n * */\n public async stopBlock(blockId: string): Promise<void> {\n await withProject(\n this.env.projectHelper,\n this.env.pl,\n this.rid,\n (mut) => mut.stopProduction(blockId),\n { name: \"stopBlock\", lockId: this.projectLockId },\n );\n await this.projectTree.refreshState();\n }\n\n /**\n * @deprecated Use mutateBlockStorage() for V3 blocks.\n * Sets block args, and changes whole project state accordingly.\n * Along with setting arguments one can specify author marker, that will be\n * transactionally associated with the block, to facilitate conflict resolution\n * in collaborative editing scenario.\n * */\n public async setBlockArgs(blockId: string, args: unknown, author?: AuthorMarker) {\n await withProjectAuthored(\n this.env.projectHelper,\n this.env.pl,\n this.rid,\n author,\n (mut) => {\n const state = mut.mergeBlockState(blockId, { args });\n mut.setStates([{ modelAPIVersion: 1, blockId, state }]);\n },\n { name: \"setBlockArgs\", lockId: this.projectLockId },\n );\n await this.projectTree.refreshState();\n }\n\n /**\n * @deprecated Use mutateBlockStorage() for V3 blocks.\n * Sets ui block state associated with the block.\n * Along with setting arguments one can specify author marker, that will be\n * transactionally associated with the block, to facilitate conflict resolution\n * in collaborative editing scenario.\n * */\n public async setUiState(blockId: string, uiState: unknown, author?: AuthorMarker) {\n await withProjectAuthored(\n this.env.projectHelper,\n this.env.pl,\n this.rid,\n author,\n (mut) => {\n const state = mut.mergeBlockState(blockId, { uiState });\n mut.setStates([{ modelAPIVersion: 1, blockId, state }]);\n },\n { name: \"setUiState\", lockId: this.projectLockId },\n );\n await this.projectTree.refreshState();\n }\n\n /**\n * @deprecated Use mutateBlockStorage() for V3 blocks.\n * Sets block args and ui state, and changes the whole project state accordingly.\n * Along with setting arguments one can specify author marker, that will be\n * transactionally associated with the block, to facilitate conflict resolution\n * in collaborative editing scenario.\n * */\n public async setBlockArgsAndUiState(\n blockId: string,\n args: unknown, // keep for v1/v2 compatibility\n uiState: unknown, // keep for v1/v2 compatibility\n author?: AuthorMarker,\n ) {\n // Normalize to unified state format { args, uiState } for v1/v2 blocks\n const state = { args, uiState };\n await withProjectAuthored(\n this.env.projectHelper,\n this.env.pl,\n this.rid,\n author,\n (mut) => {\n mut.setStates([{ modelAPIVersion: 1, blockId, state }]);\n },\n { name: \"setBlockArgsAndUiState\", lockId: this.projectLockId },\n );\n await this.projectTree.refreshState();\n }\n\n /**\n * Sets navigation state.\n * */\n //\n public async setNavigationState(blockId: string, state: NavigationState): Promise<void> {\n this.navigationStates.setState(blockId, state);\n }\n\n /**\n * Mutates block storage for Model API v3 blocks.\n * Applies a storage operation (e.g., 'update-data') which triggers\n * args derivation (args(data) and prerunArgs(data)).\n * The derived args are stored atomically with the data.\n *\n * @param blockId - The block ID\n * @param payload - Storage mutation payload with operation and value\n * @param author - Optional author marker for collaborative editing\n */\n public async mutateBlockStorage(\n blockId: string,\n payload: { operation: string; value: unknown },\n author?: AuthorMarker,\n ) {\n await withProjectAuthored(\n this.env.projectHelper,\n this.env.pl,\n this.rid,\n author,\n (mut) => mut.setStates([{ modelAPIVersion: 2, blockId, payload }]),\n { name: \"mutateBlockStorage\", lockId: this.projectLockId },\n );\n await this.projectTree.refreshState();\n }\n\n /** Update block settings */\n public async setBlockSettings(blockId: string, newValue: BlockSettings) {\n await withProjectAuthored(\n this.env.projectHelper,\n this.env.pl,\n this.rid,\n undefined,\n (mut) => {\n mut.setBlockSettings(blockId, newValue);\n },\n { name: \"setBlockSettings\" },\n );\n await this.projectTree.refreshState();\n }\n\n /**\n * Sets raw block storage content directly.\n * This bypasses all normalization and VM transformations.\n *\n * @param blockId The block to set storage for\n * @param rawStorageJson Raw storage as JSON string\n */\n public async setBlockStorageRaw(blockId: string, rawStorageJson: string): Promise<void> {\n await withProjectAuthored(\n this.env.projectHelper,\n this.env.pl,\n this.rid,\n undefined,\n (mut) => {\n mut.setBlockStorageRaw(blockId, rawStorageJson);\n },\n { name: \"setBlockStorageRaw\" },\n );\n await this.projectTree.refreshState();\n }\n\n /** Resets arguments and ui state of the block to initial state */\n public async resetBlockArgsAndUiState(blockId: string, author?: AuthorMarker): Promise<void> {\n await this.env.pl.withWriteTx(\"BlockInputsReset\", async (tx) => {\n // reading default arg values from block pack\n const bpHolderRid = ensureResourceIdNotNull(\n (await tx.getField(field(this.rid, projectFieldName(blockId, \"blockPack\")))).value,\n );\n const bpRid = ensureResourceIdNotNull(\n (await tx.getField(field(bpHolderRid, Pl.HolderRefField))).value,\n );\n const bpData = await tx.getResourceData(bpRid, false);\n const config = extractConfig(cachedDeserialize<BlockPackInfo>(notEmpty(bpData.data)).config);\n\n await withProjectAuthored(\n this.env.projectHelper,\n tx,\n this.rid,\n author,\n (prj) => {\n if (config.modelAPIVersion === BLOCK_STORAGE_FACADE_VERSION) {\n // V2+: Reset to initial storage via VM\n prj.resetToInitialStorage(blockId);\n } else {\n // V1: Use legacy state format\n const initialState = { args: config.initialArgs, uiState: config.initialUiState };\n prj.setStates([{ modelAPIVersion: 1, blockId, state: initialState }]);\n }\n },\n { name: \"resetBlockArgsAndUiState\", lockId: this.projectLockId },\n );\n await tx.commit();\n });\n await this.projectTree.refreshState();\n }\n\n private getBlockComputables(blockId: string): BlockStateComputables {\n const cached = this.blockComputables.get(blockId);\n if (cached === null) throw new Error(`Block ${blockId} is deleted`);\n if (cached === undefined) {\n // state consists of inputs (args + ui state) and outputs\n const outputs = blockOutputs(this.projectTree.entry(), blockId, this.env);\n const fullState = Computable.make(\n (ctx) => {\n return {\n parameters: getBlockParameters(this.projectTree.entry(), blockId, ctx),\n outputs,\n navigationState: this.navigationStates.getState(blockId),\n overview: this.overview,\n };\n },\n {\n postprocessValue: (v) => {\n const blockOverview = v.overview?.blocks?.find((b) => b.id == blockId);\n const sdkVersion = blockOverview?.sdkVersion;\n const storageDebugView = blockOverview?.storageDebugView;\n const toString = sdkVersion && shouldStillUseStringErrors(sdkVersion);\n const newOutputs =\n toString && v.outputs !== undefined ? convertErrorsToStrings(v.outputs) : v.outputs;\n\n return {\n ...v.parameters,\n outputs: newOutputs,\n navigationState: v.navigationState,\n storageDebugView,\n } as BlockStateInternalV3;\n },\n },\n );\n\n const computables: BlockStateComputables = {\n fullState: fullState.withPreCalculatedValueTree(),\n };\n\n this.blockComputables.set(blockId, computables);\n\n return computables;\n }\n return cached;\n }\n\n /**\n * Returns a computable, that can be used to retrieve and watch full block state,\n * including outputs, arguments, ui state.\n * */\n public getBlockState(blockId: string): Computable<BlockStateInternalV3> {\n return this.getBlockComputables(blockId).fullState;\n }\n\n /**\n * Returns a computable, that can be used to retrieve and watch path of the\n * folder containing frontend code.\n * */\n public getBlockFrontend(blockId: string): ComputableStableDefined<FrontendData> {\n const cached = this.blockFrontends.get(blockId);\n if (cached === undefined) {\n const fd = frontendData(\n this.projectTree.entry(),\n blockId,\n this.env,\n ).withPreCalculatedValueTree();\n this.blockFrontends.set(blockId, fd);\n return fd;\n }\n return cached;\n }\n\n /** Called by middle layer on close */\n public async destroy(): Promise<void> {\n // terminating the project service loop\n this.abortController.abort();\n try {\n await this.refreshLoopResult;\n } catch (e: unknown) {\n // Error was already logged in the constructor's catch handler, but log again for context\n this.env.logger.warn(\n new Error(\"Refresh loop had terminated with error before destroy\", { cause: e }),\n );\n }\n\n // terminating the synchronized project tree\n try {\n await this.projectTree.terminate();\n } catch (e: unknown) {\n // TODO: SynchronizedTreeState.terminate() can throw if mainLoop had an error before termination\n // Log error but continue cleanup - we must clean up remaining resources\n this.env.logger.warn(new Error(\"Project tree termination failed\", { cause: e }));\n }\n\n // the following will deregister all external resource holders, like\n // downloaded files, running uploads and alike\n this.overview.resetState();\n this.blockFrontends.forEach((c) => c.resetState());\n this.blockComputables.forEach((c) => {\n if (c !== null) c.fullState.resetState();\n });\n this.activeConfigs.resetState();\n }\n\n /** @deprecated */\n public async destroyAndAwaitTermination(): Promise<void> {\n await this.destroy();\n }\n\n public dumpState(): ExtendedResourceData[] {\n return this.projectTree.dumpState();\n }\n\n public static async init(env: MiddleLayerEnvironment, rid: ResourceId): Promise<Project> {\n // Applying migrations to the project resource, if needed\n await applyProjectMigrations(env.pl, rid);\n\n // Doing a no-op mutation to apply all migration and schema fixes\n await withProject(env.projectHelper, env.pl, rid, (_) => {}, { name: \"init\" });\n\n // Loading project tree\n const projectTree = await SynchronizedTreeState.init(\n env.pl,\n rid,\n {\n ...env.ops.defaultTreeOptions,\n pruning: projectTreePruning(env.logger),\n },\n env.logger,\n );\n\n if (env.ops.debugOps.dumpInitialTreeState) {\n const state = projectTree.dumpState();\n state.sort((a, b) => (b.data?.byteLength ?? 0) - (a.data?.byteLength ?? 0));\n const stats = treeDumpStats(state);\n await fs.writeFile(`${resourceIdToString(rid)}.json`, stringifyForDump(state));\n await fs.writeFile(`${resourceIdToString(rid)}.stats.json`, stringifyForDump(stats));\n }\n\n return new Project(env, rid, projectTree);\n }\n}\n\nfunction projectTreePruning(logger: MiLogger): PruningFunction {\n return (r: ExtendedResourceData): FieldData[] => {\n if (r.fields.length > 1000)\n logger.warn(\n `resource with excessive field count: type=${r.type.name} id=${r.id} fields=${r.fields.length}` +\n ` names=[${r.fields\n .slice(0, 10)\n .map((f) => f.name)\n .join(\", \")}, ...]`,\n );\n if (r.type.name.startsWith(\"StreamWorkdir/\")) return [];\n switch (r.type.name) {\n case \"BlockPackCustom\":\n return r.fields.filter((f) => f.name !== \"template\");\n case \"UserProject\":\n return r.fields.filter((f) => !f.name.startsWith(\"__serviceTemplate\"));\n case \"Blob\":\n return [];\n default:\n return r.fields;\n }\n };\n}\n\n/** Returns true if sdk version of the block is old and we need to convert\n * ErrorLike errors to strings like it was.\n * We need it for keeping old blocks and new UI compatibility. */\nfunction shouldStillUseStringErrors(sdkVersion: string): boolean {\n return !isVersionGreater(sdkVersion, \"1.26.0\");\n}\n\n/** Checks if sdk version is greater that a target version. */\nfunction isVersionGreater(sdkVersion: string, targetVersion: string): boolean {\n const version = sdkVersion.split(\".\").map(Number);\n const target = targetVersion.split(\".\").map(Number);\n\n return (\n version[0] > target[0] ||\n (version[0] === target[0] && version[1] > target[1]) ||\n (version[0] === target[0] && version[1] === target[1] && version[2] > target[2])\n );\n}\n\n/** Converts ErrorLike errors to strings in the outputs like it was in old ML versions. */\nfunction convertErrorsToStrings(\n outputs: Record<string, ComputableValueOrErrors<unknown>>,\n): Record<string, ComputableValueOrErrors<unknown>> {\n const result: Record<string, ComputableValueOrErrors<unknown>> = {};\n for (const [key, val] of Object.entries(outputs)) {\n if (val.ok) {\n result[key] = val;\n continue;\n }\n\n result[key] = {\n ok: false,\n errors: val.errors.map((e) => {\n if (typeof e === \"string\") {\n return e;\n } else if (e.type == \"PlError\" && e.fullMessage !== undefined) {\n return e.fullMessage;\n }\n return e.message;\n }),\n moreErrors: val.moreErrors,\n };\n }\n\n return result;\n}\n"],"mappings":"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"}
@@ -1,155 +1,158 @@
1
- import type { MiddleLayerEnvironment } from "./middle_layer";
2
- import type { ResourceId } from "@milaboratories/pl-client";
3
- import type { ComputableStableDefined } from "@milaboratories/computable";
4
- import { Computable } from "@milaboratories/computable";
5
- import type { BlockPackSpecAny } from "../model";
6
- import type { ExtendedResourceData } from "@milaboratories/pl-tree";
7
- import { SynchronizedTreeState } from "@milaboratories/pl-tree";
8
- import type { NavigationState } from "@milaboratories/pl-model-common";
9
- import type { FrontendData } from "../model/frontend";
10
- import type { ProjectOverview, AuthorMarker, BlockSettings, BlockStateInternalV3 } from "@milaboratories/pl-model-middle-layer";
1
+ import { BlockPackSpecAny } from "../model/block_pack_spec.js";
2
+ import "../model/index.js";
3
+ import { FrontendData } from "../model/frontend.js";
4
+ import { MiddleLayerEnvironment } from "./middle_layer.js";
5
+ import { AuthorMarker, BlockSettings, BlockStateInternalV3, ProjectOverview } from "@milaboratories/pl-model-middle-layer";
6
+ import { ResourceId } from "@milaboratories/pl-client";
7
+ import { ExtendedResourceData, SynchronizedTreeState } from "@milaboratories/pl-tree";
8
+ import { Computable, ComputableStableDefined } from "@milaboratories/computable";
9
+ import { NavigationState } from "@milaboratories/pl-model-common";
10
+
11
+ //#region src/middle_layer/project.d.ts
11
12
  /** Data access object, to manipulate and read single opened (!) project data. */
12
- export declare class Project {
13
- private readonly env;
14
- private readonly projectTree;
15
- /** Underlying pl resource id */
16
- readonly rid: ResourceId;
17
- /** Data for the left panel, contain basic information about block status. */
18
- readonly overview: ComputableStableDefined<ProjectOverview>;
19
- private readonly overviewLight;
20
- private readonly navigationStates;
21
- private readonly blockComputables;
22
- private readonly blockFrontends;
23
- private readonly activeConfigs;
24
- private readonly refreshLoopResult;
25
- private readonly abortController;
26
- private get destroyed();
27
- constructor(env: MiddleLayerEnvironment, rid: ResourceId, projectTree: SynchronizedTreeState);
28
- get projectLockId(): string;
29
- private refreshLoop;
30
- /**
31
- * Adds new block to the project.
32
- *
33
- * @param blockLabel block label / title visible to the user
34
- * @param blockPackSpec object describing the "block type", read more in the type docs
35
- * @param before id of the block to insert new block before
36
- * @param blockId internal id to be assigned for the block, this arg can be omitted
37
- * then, randomly generated UUID will be assigned automatically
38
- *
39
- * @return returns newly created block id
40
- * */
41
- addBlock(blockLabel: string, blockPackSpec: BlockPackSpecAny, before?: string, author?: AuthorMarker | undefined, blockId?: string): Promise<string>;
42
- /**
43
- * Duplicates an existing block by copying all its fields and state.
44
- * This method works at the mutator level for efficient block copying.
45
- *
46
- * @param originalBlockId id of the block to duplicate
47
- * @param before id of the block to insert new block before
48
- * @param author author marker for the duplication operation
49
- * @param newBlockId internal id to be assigned for the duplicated block,
50
- * if omitted, a randomly generated UUID will be assigned
51
- *
52
- * @return returns newly created block id
53
- * */
54
- duplicateBlock(originalBlockId: string, before?: string, author?: AuthorMarker | undefined, newBlockId?: string): Promise<string>;
55
- /**
56
- * Update block to new block pack, optionally resetting args and ui state to
57
- * initial values
58
- * */
59
- updateBlockPack(blockId: string, blockPackSpec: BlockPackSpecAny, resetArgs?: boolean, author?: AuthorMarker): Promise<void>;
60
- /** Deletes a block with all associated data. */
61
- deleteBlock(blockId: string, author?: AuthorMarker): Promise<void>;
62
- /**
63
- * Updates block order according to the given array of block ids.
64
- *
65
- * Provided array must contain exactly the same set of ids current project cosists of,
66
- * an error will be thrown instead.
67
- */
68
- reorderBlocks(blocks: string[], author?: AuthorMarker): Promise<void>;
69
- /**
70
- * Renders production part of the block starting all connected heavy computations.
71
- * Upstream blocks of the specified block will be started automatically if in
72
- * stale state.
73
- * */
74
- runBlock(blockId: string): Promise<void>;
75
- /**
76
- * Stops the block if it is running by destroying its production state. All
77
- * its downstreams will also be destroyed or moved to limbo if already
78
- * calculated.
79
- * */
80
- stopBlock(blockId: string): Promise<void>;
81
- /**
82
- * @deprecated Use mutateBlockStorage() for V3 blocks.
83
- * Sets block args, and changes whole project state accordingly.
84
- * Along with setting arguments one can specify author marker, that will be
85
- * transactionally associated with the block, to facilitate conflict resolution
86
- * in collaborative editing scenario.
87
- * */
88
- setBlockArgs(blockId: string, args: unknown, author?: AuthorMarker): Promise<void>;
89
- /**
90
- * @deprecated Use mutateBlockStorage() for V3 blocks.
91
- * Sets ui block state associated with the block.
92
- * Along with setting arguments one can specify author marker, that will be
93
- * transactionally associated with the block, to facilitate conflict resolution
94
- * in collaborative editing scenario.
95
- * */
96
- setUiState(blockId: string, uiState: unknown, author?: AuthorMarker): Promise<void>;
97
- /**
98
- * @deprecated Use mutateBlockStorage() for V3 blocks.
99
- * Sets block args and ui state, and changes the whole project state accordingly.
100
- * Along with setting arguments one can specify author marker, that will be
101
- * transactionally associated with the block, to facilitate conflict resolution
102
- * in collaborative editing scenario.
103
- * */
104
- setBlockArgsAndUiState(blockId: string, args: unknown, // keep for v1/v2 compatibility
105
- uiState: unknown, // keep for v1/v2 compatibility
106
- author?: AuthorMarker): Promise<void>;
107
- /**
108
- * Sets navigation state.
109
- * */
110
- setNavigationState(blockId: string, state: NavigationState): Promise<void>;
111
- /**
112
- * Mutates block storage for Model API v3 blocks.
113
- * Applies a storage operation (e.g., 'update-data') which triggers
114
- * args derivation (args(data) and prerunArgs(data)).
115
- * The derived args are stored atomically with the data.
116
- *
117
- * @param blockId - The block ID
118
- * @param payload - Storage mutation payload with operation and value
119
- * @param author - Optional author marker for collaborative editing
120
- */
121
- mutateBlockStorage(blockId: string, payload: {
122
- operation: string;
123
- value: unknown;
124
- }, author?: AuthorMarker): Promise<void>;
125
- /** Update block settings */
126
- setBlockSettings(blockId: string, newValue: BlockSettings): Promise<void>;
127
- /**
128
- * Sets raw block storage content directly.
129
- * This bypasses all normalization and VM transformations.
130
- *
131
- * @param blockId The block to set storage for
132
- * @param rawStorageJson Raw storage as JSON string
133
- */
134
- setBlockStorageRaw(blockId: string, rawStorageJson: string): Promise<void>;
135
- /** Resets arguments and ui state of the block to initial state */
136
- resetBlockArgsAndUiState(blockId: string, author?: AuthorMarker): Promise<void>;
137
- private getBlockComputables;
138
- /**
139
- * Returns a computable, that can be used to retrieve and watch full block state,
140
- * including outputs, arguments, ui state.
141
- * */
142
- getBlockState(blockId: string): Computable<BlockStateInternalV3>;
143
- /**
144
- * Returns a computable, that can be used to retrieve and watch path of the
145
- * folder containing frontend code.
146
- * */
147
- getBlockFrontend(blockId: string): ComputableStableDefined<FrontendData>;
148
- /** Called by middle layer on close */
149
- destroy(): Promise<void>;
150
- /** @deprecated */
151
- destroyAndAwaitTermination(): Promise<void>;
152
- dumpState(): ExtendedResourceData[];
153
- static init(env: MiddleLayerEnvironment, rid: ResourceId): Promise<Project>;
13
+ declare class Project {
14
+ private readonly env;
15
+ private readonly projectTree;
16
+ /** Underlying pl resource id */
17
+ readonly rid: ResourceId;
18
+ /** Data for the left panel, contain basic information about block status. */
19
+ readonly overview: ComputableStableDefined<ProjectOverview>;
20
+ private readonly overviewLight;
21
+ private readonly navigationStates;
22
+ private readonly blockComputables;
23
+ private readonly blockFrontends;
24
+ private readonly activeConfigs;
25
+ private readonly refreshLoopResult;
26
+ private readonly abortController;
27
+ private get destroyed();
28
+ constructor(env: MiddleLayerEnvironment, rid: ResourceId, projectTree: SynchronizedTreeState);
29
+ get projectLockId(): string;
30
+ private refreshLoop;
31
+ /**
32
+ * Adds new block to the project.
33
+ *
34
+ * @param blockLabel block label / title visible to the user
35
+ * @param blockPackSpec object describing the "block type", read more in the type docs
36
+ * @param before id of the block to insert new block before
37
+ * @param blockId internal id to be assigned for the block, this arg can be omitted
38
+ * then, randomly generated UUID will be assigned automatically
39
+ *
40
+ * @return returns newly created block id
41
+ * */
42
+ addBlock(blockLabel: string, blockPackSpec: BlockPackSpecAny, before?: string, author?: AuthorMarker | undefined, blockId?: string): Promise<string>;
43
+ /**
44
+ * Duplicates an existing block by copying all its fields and state.
45
+ * This method works at the mutator level for efficient block copying.
46
+ *
47
+ * @param originalBlockId id of the block to duplicate
48
+ * @param before id of the block to insert new block before
49
+ * @param author author marker for the duplication operation
50
+ * @param newBlockId internal id to be assigned for the duplicated block,
51
+ * if omitted, a randomly generated UUID will be assigned
52
+ *
53
+ * @return returns newly created block id
54
+ * */
55
+ duplicateBlock(originalBlockId: string, before?: string, author?: AuthorMarker | undefined, newBlockId?: string): Promise<string>;
56
+ /**
57
+ * Update block to new block pack, optionally resetting args and ui state to
58
+ * initial values
59
+ * */
60
+ updateBlockPack(blockId: string, blockPackSpec: BlockPackSpecAny, resetArgs?: boolean, author?: AuthorMarker): Promise<void>;
61
+ /** Deletes a block with all associated data. */
62
+ deleteBlock(blockId: string, author?: AuthorMarker): Promise<void>;
63
+ /**
64
+ * Updates block order according to the given array of block ids.
65
+ *
66
+ * Provided array must contain exactly the same set of ids current project cosists of,
67
+ * an error will be thrown instead.
68
+ */
69
+ reorderBlocks(blocks: string[], author?: AuthorMarker): Promise<void>;
70
+ /**
71
+ * Renders production part of the block starting all connected heavy computations.
72
+ * Upstream blocks of the specified block will be started automatically if in
73
+ * stale state.
74
+ * */
75
+ runBlock(blockId: string): Promise<void>;
76
+ /**
77
+ * Stops the block if it is running by destroying its production state. All
78
+ * its downstreams will also be destroyed or moved to limbo if already
79
+ * calculated.
80
+ * */
81
+ stopBlock(blockId: string): Promise<void>;
82
+ /**
83
+ * @deprecated Use mutateBlockStorage() for V3 blocks.
84
+ * Sets block args, and changes whole project state accordingly.
85
+ * Along with setting arguments one can specify author marker, that will be
86
+ * transactionally associated with the block, to facilitate conflict resolution
87
+ * in collaborative editing scenario.
88
+ * */
89
+ setBlockArgs(blockId: string, args: unknown, author?: AuthorMarker): Promise<void>;
90
+ /**
91
+ * @deprecated Use mutateBlockStorage() for V3 blocks.
92
+ * Sets ui block state associated with the block.
93
+ * Along with setting arguments one can specify author marker, that will be
94
+ * transactionally associated with the block, to facilitate conflict resolution
95
+ * in collaborative editing scenario.
96
+ * */
97
+ setUiState(blockId: string, uiState: unknown, author?: AuthorMarker): Promise<void>;
98
+ /**
99
+ * @deprecated Use mutateBlockStorage() for V3 blocks.
100
+ * Sets block args and ui state, and changes the whole project state accordingly.
101
+ * Along with setting arguments one can specify author marker, that will be
102
+ * transactionally associated with the block, to facilitate conflict resolution
103
+ * in collaborative editing scenario.
104
+ * */
105
+ setBlockArgsAndUiState(blockId: string, args: unknown, // keep for v1/v2 compatibility
106
+ uiState: unknown, // keep for v1/v2 compatibility
107
+ author?: AuthorMarker): Promise<void>;
108
+ /**
109
+ * Sets navigation state.
110
+ * */
111
+ setNavigationState(blockId: string, state: NavigationState): Promise<void>;
112
+ /**
113
+ * Mutates block storage for Model API v3 blocks.
114
+ * Applies a storage operation (e.g., 'update-data') which triggers
115
+ * args derivation (args(data) and prerunArgs(data)).
116
+ * The derived args are stored atomically with the data.
117
+ *
118
+ * @param blockId - The block ID
119
+ * @param payload - Storage mutation payload with operation and value
120
+ * @param author - Optional author marker for collaborative editing
121
+ */
122
+ mutateBlockStorage(blockId: string, payload: {
123
+ operation: string;
124
+ value: unknown;
125
+ }, author?: AuthorMarker): Promise<void>;
126
+ /** Update block settings */
127
+ setBlockSettings(blockId: string, newValue: BlockSettings): Promise<void>;
128
+ /**
129
+ * Sets raw block storage content directly.
130
+ * This bypasses all normalization and VM transformations.
131
+ *
132
+ * @param blockId The block to set storage for
133
+ * @param rawStorageJson Raw storage as JSON string
134
+ */
135
+ setBlockStorageRaw(blockId: string, rawStorageJson: string): Promise<void>;
136
+ /** Resets arguments and ui state of the block to initial state */
137
+ resetBlockArgsAndUiState(blockId: string, author?: AuthorMarker): Promise<void>;
138
+ private getBlockComputables;
139
+ /**
140
+ * Returns a computable, that can be used to retrieve and watch full block state,
141
+ * including outputs, arguments, ui state.
142
+ * */
143
+ getBlockState(blockId: string): Computable<BlockStateInternalV3>;
144
+ /**
145
+ * Returns a computable, that can be used to retrieve and watch path of the
146
+ * folder containing frontend code.
147
+ * */
148
+ getBlockFrontend(blockId: string): ComputableStableDefined<FrontendData>;
149
+ /** Called by middle layer on close */
150
+ destroy(): Promise<void>;
151
+ /** @deprecated */
152
+ destroyAndAwaitTermination(): Promise<void>;
153
+ dumpState(): ExtendedResourceData[];
154
+ static init(env: MiddleLayerEnvironment, rid: ResourceId): Promise<Project>;
154
155
  }
156
+ //#endregion
157
+ export { Project };
155
158
  //# sourceMappingURL=project.d.ts.map