@milaboratories/pl-middle-layer 1.46.20 → 1.46.22

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 (402) hide show
  1. package/dist/block_registry/index.d.ts +3 -3
  2. package/dist/block_registry/registry-v2-provider.cjs.map +1 -1
  3. package/dist/block_registry/registry-v2-provider.d.ts +2 -2
  4. package/dist/block_registry/registry-v2-provider.js.map +1 -1
  5. package/dist/block_registry/registry.cjs +54 -53
  6. package/dist/block_registry/registry.cjs.map +1 -1
  7. package/dist/block_registry/registry.d.ts +4 -4
  8. package/dist/block_registry/registry.d.ts.map +1 -1
  9. package/dist/block_registry/registry.js +54 -53
  10. package/dist/block_registry/registry.js.map +1 -1
  11. package/dist/block_registry/watcher.cjs +12 -12
  12. package/dist/block_registry/watcher.cjs.map +1 -1
  13. package/dist/block_registry/watcher.d.ts +6 -6
  14. package/dist/block_registry/watcher.d.ts.map +1 -1
  15. package/dist/block_registry/watcher.js +12 -12
  16. package/dist/block_registry/watcher.js.map +1 -1
  17. package/dist/block_registry/well_known_registries.cjs +6 -6
  18. package/dist/block_registry/well_known_registries.cjs.map +1 -1
  19. package/dist/block_registry/well_known_registries.d.ts +1 -1
  20. package/dist/block_registry/well_known_registries.js +6 -6
  21. package/dist/block_registry/well_known_registries.js.map +1 -1
  22. package/dist/cfg_render/executor.cjs +11 -11
  23. package/dist/cfg_render/executor.cjs.map +1 -1
  24. package/dist/cfg_render/executor.d.ts +5 -5
  25. package/dist/cfg_render/executor.js +11 -11
  26. package/dist/cfg_render/executor.js.map +1 -1
  27. package/dist/cfg_render/operation.d.ts +5 -5
  28. package/dist/cfg_render/renderer.cjs +74 -75
  29. package/dist/cfg_render/renderer.cjs.map +1 -1
  30. package/dist/cfg_render/renderer.d.ts +2 -2
  31. package/dist/cfg_render/renderer.d.ts.map +1 -1
  32. package/dist/cfg_render/renderer.js +74 -75
  33. package/dist/cfg_render/renderer.js.map +1 -1
  34. package/dist/cfg_render/traverse.cjs +27 -27
  35. package/dist/cfg_render/traverse.cjs.map +1 -1
  36. package/dist/cfg_render/traverse.d.ts +1 -1
  37. package/dist/cfg_render/traverse.js +27 -27
  38. package/dist/cfg_render/traverse.js.map +1 -1
  39. package/dist/cfg_render/util.cjs +1 -1
  40. package/dist/cfg_render/util.cjs.map +1 -1
  41. package/dist/cfg_render/util.d.ts +1 -1
  42. package/dist/cfg_render/util.js +1 -1
  43. package/dist/cfg_render/util.js.map +1 -1
  44. package/dist/debug/index.cjs +4 -2
  45. package/dist/debug/index.cjs.map +1 -1
  46. package/dist/debug/index.d.ts +2 -2
  47. package/dist/debug/index.d.ts.map +1 -1
  48. package/dist/debug/index.js +4 -2
  49. package/dist/debug/index.js.map +1 -1
  50. package/dist/dev_env/index.cjs +8 -8
  51. package/dist/dev_env/index.cjs.map +1 -1
  52. package/dist/dev_env/index.js +8 -8
  53. package/dist/dev_env/index.js.map +1 -1
  54. package/dist/dev_env/util.cjs +1 -1
  55. package/dist/dev_env/util.cjs.map +1 -1
  56. package/dist/dev_env/util.d.ts +1 -1
  57. package/dist/dev_env/util.js +1 -1
  58. package/dist/dev_env/util.js.map +1 -1
  59. package/dist/index.d.ts +16 -16
  60. package/dist/js_render/computable_context.cjs +78 -78
  61. package/dist/js_render/computable_context.cjs.map +1 -1
  62. package/dist/js_render/computable_context.d.ts +9 -9
  63. package/dist/js_render/computable_context.d.ts.map +1 -1
  64. package/dist/js_render/computable_context.js +78 -78
  65. package/dist/js_render/computable_context.js.map +1 -1
  66. package/dist/js_render/context.cjs +33 -27
  67. package/dist/js_render/context.cjs.map +1 -1
  68. package/dist/js_render/context.d.ts +7 -7
  69. package/dist/js_render/context.d.ts.map +1 -1
  70. package/dist/js_render/context.js +33 -27
  71. package/dist/js_render/context.js.map +1 -1
  72. package/dist/js_render/index.cjs +10 -6
  73. package/dist/js_render/index.cjs.map +1 -1
  74. package/dist/js_render/index.d.ts +6 -6
  75. package/dist/js_render/index.d.ts.map +1 -1
  76. package/dist/js_render/index.js +10 -6
  77. package/dist/js_render/index.js.map +1 -1
  78. package/dist/middle_layer/active_cfg.cjs.map +1 -1
  79. package/dist/middle_layer/active_cfg.d.ts +3 -3
  80. package/dist/middle_layer/active_cfg.d.ts.map +1 -1
  81. package/dist/middle_layer/active_cfg.js.map +1 -1
  82. package/dist/middle_layer/block.cjs +1 -1
  83. package/dist/middle_layer/block.cjs.map +1 -1
  84. package/dist/middle_layer/block.d.ts +6 -6
  85. package/dist/middle_layer/block.d.ts.map +1 -1
  86. package/dist/middle_layer/block.js +1 -1
  87. package/dist/middle_layer/block.js.map +1 -1
  88. package/dist/middle_layer/block_ctx.cjs +9 -9
  89. package/dist/middle_layer/block_ctx.cjs.map +1 -1
  90. package/dist/middle_layer/block_ctx.d.ts +6 -6
  91. package/dist/middle_layer/block_ctx.d.ts.map +1 -1
  92. package/dist/middle_layer/block_ctx.js +9 -9
  93. package/dist/middle_layer/block_ctx.js.map +1 -1
  94. package/dist/middle_layer/block_ctx_unsafe.cjs +1 -1
  95. package/dist/middle_layer/block_ctx_unsafe.cjs.map +1 -1
  96. package/dist/middle_layer/block_ctx_unsafe.d.ts +5 -5
  97. package/dist/middle_layer/block_ctx_unsafe.js +1 -1
  98. package/dist/middle_layer/block_ctx_unsafe.js.map +1 -1
  99. package/dist/middle_layer/driver_kit.cjs +1 -2
  100. package/dist/middle_layer/driver_kit.cjs.map +1 -1
  101. package/dist/middle_layer/driver_kit.d.ts +7 -7
  102. package/dist/middle_layer/driver_kit.d.ts.map +1 -1
  103. package/dist/middle_layer/driver_kit.js +1 -2
  104. package/dist/middle_layer/driver_kit.js.map +1 -1
  105. package/dist/middle_layer/frontend_path.cjs +5 -5
  106. package/dist/middle_layer/frontend_path.cjs.map +1 -1
  107. package/dist/middle_layer/frontend_path.d.ts +4 -4
  108. package/dist/middle_layer/frontend_path.d.ts.map +1 -1
  109. package/dist/middle_layer/frontend_path.js +5 -5
  110. package/dist/middle_layer/frontend_path.js.map +1 -1
  111. package/dist/middle_layer/index.d.ts +4 -4
  112. package/dist/middle_layer/middle_layer.cjs +11 -11
  113. package/dist/middle_layer/middle_layer.cjs.map +1 -1
  114. package/dist/middle_layer/middle_layer.d.ts +18 -18
  115. package/dist/middle_layer/middle_layer.d.ts.map +1 -1
  116. package/dist/middle_layer/middle_layer.js +11 -11
  117. package/dist/middle_layer/middle_layer.js.map +1 -1
  118. package/dist/middle_layer/navigation_states.cjs +2 -2
  119. package/dist/middle_layer/navigation_states.cjs.map +1 -1
  120. package/dist/middle_layer/navigation_states.d.ts +2 -2
  121. package/dist/middle_layer/navigation_states.js +2 -2
  122. package/dist/middle_layer/navigation_states.js.map +1 -1
  123. package/dist/middle_layer/ops.cjs +5 -5
  124. package/dist/middle_layer/ops.cjs.map +1 -1
  125. package/dist/middle_layer/ops.d.ts +11 -11
  126. package/dist/middle_layer/ops.d.ts.map +1 -1
  127. package/dist/middle_layer/ops.js +5 -5
  128. package/dist/middle_layer/ops.js.map +1 -1
  129. package/dist/middle_layer/project.cjs +71 -63
  130. package/dist/middle_layer/project.cjs.map +1 -1
  131. package/dist/middle_layer/project.d.ts +10 -10
  132. package/dist/middle_layer/project.d.ts.map +1 -1
  133. package/dist/middle_layer/project.js +71 -63
  134. package/dist/middle_layer/project.js.map +1 -1
  135. package/dist/middle_layer/project_list.cjs +2 -2
  136. package/dist/middle_layer/project_list.cjs.map +1 -1
  137. package/dist/middle_layer/project_list.d.ts +6 -6
  138. package/dist/middle_layer/project_list.d.ts.map +1 -1
  139. package/dist/middle_layer/project_list.js +2 -2
  140. package/dist/middle_layer/project_list.js.map +1 -1
  141. package/dist/middle_layer/project_overview.cjs +40 -40
  142. package/dist/middle_layer/project_overview.cjs.map +1 -1
  143. package/dist/middle_layer/project_overview.d.ts +5 -5
  144. package/dist/middle_layer/project_overview.d.ts.map +1 -1
  145. package/dist/middle_layer/project_overview.js +40 -40
  146. package/dist/middle_layer/project_overview.js.map +1 -1
  147. package/dist/middle_layer/project_overview_light.cjs.map +1 -1
  148. package/dist/middle_layer/project_overview_light.d.ts +2 -2
  149. package/dist/middle_layer/project_overview_light.d.ts.map +1 -1
  150. package/dist/middle_layer/project_overview_light.js.map +1 -1
  151. package/dist/middle_layer/render.cjs +1 -1
  152. package/dist/middle_layer/render.cjs.map +1 -1
  153. package/dist/middle_layer/render.d.ts +4 -4
  154. package/dist/middle_layer/render.js +1 -1
  155. package/dist/middle_layer/render.js.map +1 -1
  156. package/dist/middle_layer/render.test.d.ts +2 -2
  157. package/dist/middle_layer/types.d.ts +3 -3
  158. package/dist/middle_layer/util.cjs +9 -4
  159. package/dist/middle_layer/util.cjs.map +1 -1
  160. package/dist/middle_layer/util.d.ts +4 -4
  161. package/dist/middle_layer/util.d.ts.map +1 -1
  162. package/dist/middle_layer/util.js +9 -4
  163. package/dist/middle_layer/util.js.map +1 -1
  164. package/dist/model/args.cjs +19 -15
  165. package/dist/model/args.cjs.map +1 -1
  166. package/dist/model/args.d.ts +1 -1
  167. package/dist/model/args.d.ts.map +1 -1
  168. package/dist/model/args.js +19 -15
  169. package/dist/model/args.js.map +1 -1
  170. package/dist/model/block_pack.d.ts +2 -2
  171. package/dist/model/block_pack_spec.cjs +3 -3
  172. package/dist/model/block_pack_spec.cjs.map +1 -1
  173. package/dist/model/block_pack_spec.d.ts +8 -8
  174. package/dist/model/block_pack_spec.js +3 -3
  175. package/dist/model/block_pack_spec.js.map +1 -1
  176. package/dist/model/block_storage_helper.cjs +4 -4
  177. package/dist/model/block_storage_helper.cjs.map +1 -1
  178. package/dist/model/block_storage_helper.d.ts +2 -2
  179. package/dist/model/block_storage_helper.d.ts.map +1 -1
  180. package/dist/model/block_storage_helper.js +4 -4
  181. package/dist/model/block_storage_helper.js.map +1 -1
  182. package/dist/model/index.d.ts +3 -3
  183. package/dist/model/project_helper.cjs +30 -13
  184. package/dist/model/project_helper.cjs.map +1 -1
  185. package/dist/model/project_helper.d.ts +4 -4
  186. package/dist/model/project_helper.d.ts.map +1 -1
  187. package/dist/model/project_helper.js +30 -13
  188. package/dist/model/project_helper.js.map +1 -1
  189. package/dist/model/project_model.cjs +23 -23
  190. package/dist/model/project_model.cjs.map +1 -1
  191. package/dist/model/project_model.d.ts +6 -6
  192. package/dist/model/project_model.d.ts.map +1 -1
  193. package/dist/model/project_model.js +23 -23
  194. package/dist/model/project_model.js.map +1 -1
  195. package/dist/model/project_model_util.cjs +2 -2
  196. package/dist/model/project_model_util.cjs.map +1 -1
  197. package/dist/model/project_model_util.d.ts +3 -3
  198. package/dist/model/project_model_util.d.ts.map +1 -1
  199. package/dist/model/project_model_util.js +2 -2
  200. package/dist/model/project_model_util.js.map +1 -1
  201. package/dist/model/project_model_v1.cjs +2 -2
  202. package/dist/model/project_model_v1.cjs.map +1 -1
  203. package/dist/model/project_model_v1.js +2 -2
  204. package/dist/model/project_model_v1.js.map +1 -1
  205. package/dist/model/template_spec.d.ts +5 -5
  206. package/dist/mutator/block-pack/block_pack.cjs +43 -43
  207. package/dist/mutator/block-pack/block_pack.cjs.map +1 -1
  208. package/dist/mutator/block-pack/block_pack.d.ts +6 -6
  209. package/dist/mutator/block-pack/block_pack.d.ts.map +1 -1
  210. package/dist/mutator/block-pack/block_pack.js +43 -43
  211. package/dist/mutator/block-pack/block_pack.js.map +1 -1
  212. package/dist/mutator/block-pack/frontend.cjs +2 -2
  213. package/dist/mutator/block-pack/frontend.cjs.map +1 -1
  214. package/dist/mutator/block-pack/frontend.d.ts +2 -2
  215. package/dist/mutator/block-pack/frontend.d.ts.map +1 -1
  216. package/dist/mutator/block-pack/frontend.js +2 -2
  217. package/dist/mutator/block-pack/frontend.js.map +1 -1
  218. package/dist/mutator/context_export.cjs +5 -5
  219. package/dist/mutator/context_export.cjs.map +1 -1
  220. package/dist/mutator/context_export.d.ts +2 -2
  221. package/dist/mutator/context_export.d.ts.map +1 -1
  222. package/dist/mutator/context_export.js +5 -5
  223. package/dist/mutator/context_export.js.map +1 -1
  224. package/dist/mutator/migration.cjs +7 -7
  225. package/dist/mutator/migration.cjs.map +1 -1
  226. package/dist/mutator/migration.d.ts +1 -1
  227. package/dist/mutator/migration.d.ts.map +1 -1
  228. package/dist/mutator/migration.js +7 -7
  229. package/dist/mutator/migration.js.map +1 -1
  230. package/dist/mutator/project.cjs +147 -148
  231. package/dist/mutator/project.cjs.map +1 -1
  232. package/dist/mutator/project.d.ts +13 -13
  233. package/dist/mutator/project.d.ts.map +1 -1
  234. package/dist/mutator/project.js +147 -148
  235. package/dist/mutator/project.js.map +1 -1
  236. package/dist/mutator/template/direct_template_loader.cjs +16 -16
  237. package/dist/mutator/template/direct_template_loader.cjs.map +1 -1
  238. package/dist/mutator/template/direct_template_loader.d.ts +2 -2
  239. package/dist/mutator/template/direct_template_loader.d.ts.map +1 -1
  240. package/dist/mutator/template/direct_template_loader.js +16 -16
  241. package/dist/mutator/template/direct_template_loader.js.map +1 -1
  242. package/dist/mutator/template/direct_template_loader_v3.cjs +13 -13
  243. package/dist/mutator/template/direct_template_loader_v3.cjs.map +1 -1
  244. package/dist/mutator/template/direct_template_loader_v3.d.ts +3 -3
  245. package/dist/mutator/template/direct_template_loader_v3.d.ts.map +1 -1
  246. package/dist/mutator/template/direct_template_loader_v3.js +13 -13
  247. package/dist/mutator/template/direct_template_loader_v3.js.map +1 -1
  248. package/dist/mutator/template/render_block.cjs +7 -7
  249. package/dist/mutator/template/render_block.cjs.map +1 -1
  250. package/dist/mutator/template/render_block.d.ts +1 -1
  251. package/dist/mutator/template/render_block.d.ts.map +1 -1
  252. package/dist/mutator/template/render_block.js +7 -7
  253. package/dist/mutator/template/render_block.js.map +1 -1
  254. package/dist/mutator/template/render_template.cjs +10 -10
  255. package/dist/mutator/template/render_template.cjs.map +1 -1
  256. package/dist/mutator/template/render_template.d.ts +2 -2
  257. package/dist/mutator/template/render_template.js +10 -10
  258. package/dist/mutator/template/render_template.js.map +1 -1
  259. package/dist/mutator/template/template_loading.cjs +17 -17
  260. package/dist/mutator/template/template_loading.cjs.map +1 -1
  261. package/dist/mutator/template/template_loading.d.ts +2 -2
  262. package/dist/mutator/template/template_loading.js +17 -17
  263. package/dist/mutator/template/template_loading.js.map +1 -1
  264. package/dist/network_check/network_check.cjs +33 -32
  265. package/dist/network_check/network_check.cjs.map +1 -1
  266. package/dist/network_check/network_check.d.ts +6 -6
  267. package/dist/network_check/network_check.d.ts.map +1 -1
  268. package/dist/network_check/network_check.js +33 -32
  269. package/dist/network_check/network_check.js.map +1 -1
  270. package/dist/network_check/pings.cjs +3 -3
  271. package/dist/network_check/pings.cjs.map +1 -1
  272. package/dist/network_check/pings.d.ts +4 -4
  273. package/dist/network_check/pings.d.ts.map +1 -1
  274. package/dist/network_check/pings.js +3 -3
  275. package/dist/network_check/pings.js.map +1 -1
  276. package/dist/network_check/template.cjs +57 -44
  277. package/dist/network_check/template.cjs.map +1 -1
  278. package/dist/network_check/template.d.ts +8 -8
  279. package/dist/network_check/template.d.ts.map +1 -1
  280. package/dist/network_check/template.js +57 -44
  281. package/dist/network_check/template.js.map +1 -1
  282. package/dist/pool/data.cjs +45 -33
  283. package/dist/pool/data.cjs.map +1 -1
  284. package/dist/pool/data.d.ts +3 -3
  285. package/dist/pool/data.d.ts.map +1 -1
  286. package/dist/pool/data.js +45 -33
  287. package/dist/pool/data.js.map +1 -1
  288. package/dist/pool/driver.cjs +18 -16
  289. package/dist/pool/driver.cjs.map +1 -1
  290. package/dist/pool/driver.d.ts +5 -5
  291. package/dist/pool/driver.d.ts.map +1 -1
  292. package/dist/pool/driver.js +18 -16
  293. package/dist/pool/driver.js.map +1 -1
  294. package/dist/pool/index.d.ts +2 -2
  295. package/dist/pool/p_object_collection.cjs +5 -5
  296. package/dist/pool/p_object_collection.cjs.map +1 -1
  297. package/dist/pool/p_object_collection.d.ts +2 -2
  298. package/dist/pool/p_object_collection.d.ts.map +1 -1
  299. package/dist/pool/p_object_collection.js +5 -5
  300. package/dist/pool/p_object_collection.js.map +1 -1
  301. package/dist/pool/result_pool.cjs +6 -6
  302. package/dist/pool/result_pool.cjs.map +1 -1
  303. package/dist/pool/result_pool.d.ts +6 -6
  304. package/dist/pool/result_pool.d.ts.map +1 -1
  305. package/dist/pool/result_pool.js +6 -6
  306. package/dist/pool/result_pool.js.map +1 -1
  307. package/dist/test/block_packs.d.ts +2 -2
  308. package/dist/test/known_templates.d.ts +1 -1
  309. package/dist/worker/WorkerManager.cjs +7 -8
  310. package/dist/worker/WorkerManager.cjs.map +1 -1
  311. package/dist/worker/WorkerManager.d.ts +2 -2
  312. package/dist/worker/WorkerManager.d.ts.map +1 -1
  313. package/dist/worker/WorkerManager.js +7 -8
  314. package/dist/worker/WorkerManager.js.map +1 -1
  315. package/dist/worker/worker.cjs +6 -4
  316. package/dist/worker/worker.cjs.map +1 -1
  317. package/dist/worker/worker.js +6 -4
  318. package/dist/worker/worker.js.map +1 -1
  319. package/dist/worker/workerApi.cjs.map +1 -1
  320. package/dist/worker/workerApi.js.map +1 -1
  321. package/package.json +41 -41
  322. package/src/block_registry/index.ts +3 -3
  323. package/src/block_registry/registry-v2-provider.ts +2 -2
  324. package/src/block_registry/registry.test.ts +17 -17
  325. package/src/block_registry/registry.ts +55 -60
  326. package/src/block_registry/watcher.ts +24 -23
  327. package/src/block_registry/well_known_registries.ts +7 -7
  328. package/src/cfg_render/executor.test.ts +36 -36
  329. package/src/cfg_render/executor.ts +24 -24
  330. package/src/cfg_render/operation.ts +5 -5
  331. package/src/cfg_render/renderer.ts +96 -93
  332. package/src/cfg_render/traverse.ts +50 -50
  333. package/src/cfg_render/util.ts +3 -3
  334. package/src/debug/index.ts +6 -4
  335. package/src/dev_env/index.ts +16 -16
  336. package/src/dev_env/util.ts +3 -3
  337. package/src/index.ts +16 -16
  338. package/src/js_render/computable_context.ts +143 -126
  339. package/src/js_render/context.ts +72 -44
  340. package/src/js_render/index.ts +51 -24
  341. package/src/middle_layer/active_cfg.ts +14 -12
  342. package/src/middle_layer/block.ts +30 -23
  343. package/src/middle_layer/block_ctx.ts +27 -31
  344. package/src/middle_layer/block_ctx_unsafe.ts +9 -9
  345. package/src/middle_layer/driver_kit.ts +13 -19
  346. package/src/middle_layer/frontend_path.ts +18 -23
  347. package/src/middle_layer/index.ts +4 -4
  348. package/src/middle_layer/middle_layer.ts +57 -55
  349. package/src/middle_layer/navigation_states.ts +6 -6
  350. package/src/middle_layer/ops.ts +43 -42
  351. package/src/middle_layer/project.ts +274 -173
  352. package/src/middle_layer/project_list.ts +14 -15
  353. package/src/middle_layer/project_overview.ts +104 -113
  354. package/src/middle_layer/project_overview_light.ts +7 -9
  355. package/src/middle_layer/render.test.ts +49 -48
  356. package/src/middle_layer/render.ts +9 -9
  357. package/src/middle_layer/types.ts +3 -3
  358. package/src/middle_layer/util.ts +17 -12
  359. package/src/model/args.ts +22 -19
  360. package/src/model/block_pack.ts +2 -2
  361. package/src/model/block_pack_spec.ts +11 -11
  362. package/src/model/block_storage_helper.ts +11 -11
  363. package/src/model/index.ts +3 -3
  364. package/src/model/project_helper.ts +78 -32
  365. package/src/model/project_model.test.ts +5 -9
  366. package/src/model/project_model.ts +48 -49
  367. package/src/model/project_model_util.test.ts +86 -53
  368. package/src/model/project_model_util.ts +18 -14
  369. package/src/model/project_model_v1.ts +3 -3
  370. package/src/model/template_spec.ts +5 -5
  371. package/src/mutator/block-pack/block_pack.test.ts +25 -25
  372. package/src/mutator/block-pack/block_pack.ts +70 -68
  373. package/src/mutator/block-pack/frontend.ts +6 -13
  374. package/src/mutator/context_export.ts +12 -10
  375. package/src/mutator/migration.ts +20 -14
  376. package/src/mutator/project-v3.test.ts +123 -118
  377. package/src/mutator/project.test.ts +105 -94
  378. package/src/mutator/project.ts +357 -274
  379. package/src/mutator/template/direct_template_loader.ts +26 -32
  380. package/src/mutator/template/direct_template_loader_v3.ts +51 -25
  381. package/src/mutator/template/render_block.ts +14 -21
  382. package/src/mutator/template/render_template.ts +13 -13
  383. package/src/mutator/template/template_loading.ts +23 -23
  384. package/src/mutator/template/template_render.test.ts +87 -86
  385. package/src/network_check/network_check.test.ts +4 -4
  386. package/src/network_check/network_check.ts +102 -79
  387. package/src/network_check/pings.ts +35 -16
  388. package/src/network_check/template.test.ts +47 -44
  389. package/src/network_check/template.ts +151 -95
  390. package/src/network_check/test_utils.ts +1 -1
  391. package/src/pool/data.ts +81 -69
  392. package/src/pool/driver.ts +56 -51
  393. package/src/pool/index.ts +2 -2
  394. package/src/pool/p_object_collection.ts +16 -15
  395. package/src/pool/result_pool.ts +23 -34
  396. package/src/test/block_packs.ts +15 -15
  397. package/src/test/explicit_templates.ts +4 -4
  398. package/src/test/known_templates.ts +10 -10
  399. package/src/test_env.ts +1 -1
  400. package/src/worker/WorkerManager.ts +22 -18
  401. package/src/worker/worker.ts +11 -9
  402. package/src/worker/workerApi.ts +1 -1
@@ -44,19 +44,19 @@ class BlockInfo {
44
44
  check() {
45
45
  // state assertions
46
46
  if ((this.fields.prodOutput === undefined) !== (this.fields.prodCtx === undefined))
47
- throw new Error('inconsistent prod fields');
47
+ throw new Error("inconsistent prod fields");
48
48
  if ((this.fields.stagingOutput === undefined) !== (this.fields.stagingCtx === undefined))
49
- throw new Error('inconsistent stage fields');
50
- if ((this.fields.prodOutputPrevious === undefined)
51
- !== (this.fields.prodCtxPrevious === undefined))
52
- throw new Error('inconsistent prod cache fields');
53
- if ((this.fields.stagingOutputPrevious === undefined)
54
- !== (this.fields.stagingCtxPrevious === undefined))
55
- throw new Error('inconsistent stage cache fields');
49
+ throw new Error("inconsistent stage fields");
50
+ if ((this.fields.prodOutputPrevious === undefined) !==
51
+ (this.fields.prodCtxPrevious === undefined))
52
+ throw new Error("inconsistent prod cache fields");
53
+ if ((this.fields.stagingOutputPrevious === undefined) !==
54
+ (this.fields.stagingCtxPrevious === undefined))
55
+ throw new Error("inconsistent stage cache fields");
56
56
  if (this.fields.blockPack === undefined)
57
- throw new Error('no block pack field');
57
+ throw new Error("no block pack field");
58
58
  if (this.fields.blockStorage === undefined)
59
- throw new Error('no block storage field');
59
+ throw new Error("no block storage field");
60
60
  }
61
61
  currentArgsC = cached(() => this.fields.currentArgs?.modCount, () => {
62
62
  const bin = this.fields.currentArgs?.value;
@@ -96,7 +96,7 @@ class BlockInfo {
96
96
  return this.blockStorageC();
97
97
  }
98
98
  catch (e) {
99
- console.error('Error getting blockStorage:', e);
99
+ console.error("Error getting blockStorage:", e);
100
100
  return undefined;
101
101
  }
102
102
  }
@@ -113,10 +113,10 @@ class BlockInfo {
113
113
  return this.fields.prodCtx !== undefined;
114
114
  }
115
115
  get productionHasErrors() {
116
- return this.fields.prodUiCtx?.status === 'Error';
116
+ return this.fields.prodUiCtx?.status === "Error";
117
117
  }
118
- productionStaleC = cached(() => `${this.fields.currentArgs.modCount}_${this.fields.prodArgs?.modCount}`, () => this.fields.prodArgs === undefined
119
- || Buffer.compare(this.fields.currentArgs.value, this.fields.prodArgs.value) !== 0);
118
+ productionStaleC = cached(() => `${this.fields.currentArgs.modCount}_${this.fields.prodArgs?.modCount}`, () => this.fields.prodArgs === undefined ||
119
+ Buffer.compare(this.fields.currentArgs.value, this.fields.prodArgs.value) !== 0);
120
120
  get requireProductionRendering() {
121
121
  return !this.productionRendered || this.productionStaleC() || this.productionHasErrors;
122
122
  }
@@ -131,7 +131,7 @@ class BlockInfo {
131
131
  return this.prodArgsC();
132
132
  }
133
133
  getTemplate(tx) {
134
- return tx.getFutureFieldValue(Pl.unwrapHolder(tx, this.fields.blockPack.ref), BlockPackTemplateField, 'Input');
134
+ return tx.getFutureFieldValue(Pl.unwrapHolder(tx, this.fields.blockPack.ref), BlockPackTemplateField, "Input");
135
135
  }
136
136
  }
137
137
  const NoNewBlocks = (blockId) => {
@@ -178,10 +178,10 @@ class ProjectMutator {
178
178
  fixProblemsAndMigrate() {
179
179
  // Fixing problems introduced by old code
180
180
  this.blockInfos.forEach((blockInfo) => {
181
- if (blockInfo.fields.prodArgs === undefined
182
- || blockInfo.fields.prodOutput === undefined
183
- || blockInfo.fields.prodCtx === undefined)
184
- this.deleteBlockFields(blockInfo.id, 'prodArgs', 'prodOutput', 'prodCtx');
181
+ if (blockInfo.fields.prodArgs === undefined ||
182
+ blockInfo.fields.prodOutput === undefined ||
183
+ blockInfo.fields.prodCtx === undefined)
184
+ this.deleteBlockFields(blockInfo.id, "prodArgs", "prodOutput", "prodCtx");
185
185
  });
186
186
  // Migration for addition of block settings field
187
187
  let initialBlockSettings;
@@ -189,16 +189,16 @@ class ProjectMutator {
189
189
  if (blockInfo.fields.blockSettings === undefined) {
190
190
  if (initialBlockSettings === undefined)
191
191
  initialBlockSettings = this.createJsonFieldValue(InitialBlockSettings);
192
- this.setBlockFieldObj(blockInfo.id, 'blockSettings', initialBlockSettings);
192
+ this.setBlockFieldObj(blockInfo.id, "blockSettings", initialBlockSettings);
193
193
  }
194
194
  });
195
195
  }
196
196
  get wasModified() {
197
- return (this.lastModifiedChanged
198
- || this.structureChanged
199
- || this.fieldsChanged
200
- || this.metaChanged
201
- || this.renderingStateChanged);
197
+ return (this.lastModifiedChanged ||
198
+ this.structureChanged ||
199
+ this.fieldsChanged ||
200
+ this.metaChanged ||
201
+ this.renderingStateChanged);
202
202
  }
203
203
  get structure() {
204
204
  return JSON.parse(JSON.stringify(this.struct));
@@ -265,10 +265,10 @@ class ProjectMutator {
265
265
  }
266
266
  createJsonFieldValueByContent(content) {
267
267
  if (content === undefined)
268
- throw new Error('content is undefined');
268
+ throw new Error("content is undefined");
269
269
  const value = Buffer.from(content);
270
270
  const ref = this.tx.createValue(Pl.JsonObject, value);
271
- return { ref, value, status: 'Ready' };
271
+ return { ref, value, status: "Ready" };
272
272
  }
273
273
  createJsonFieldValue(obj) {
274
274
  return this.createJsonFieldValueByContent(JSON.stringify(obj));
@@ -277,14 +277,14 @@ class ProjectMutator {
277
277
  for (const block of allBlocks(this.struct))
278
278
  if (block.id === blockId)
279
279
  return block;
280
- throw new Error('block not found');
280
+ throw new Error("block not found");
281
281
  }
282
282
  setBlockFieldObj(blockId, fieldName, state) {
283
283
  const fid = field(this.rid, projectFieldName(blockId, fieldName));
284
284
  if (state.ref === undefined)
285
- throw new Error('Can\'t set value with empty ref');
285
+ throw new Error("Can't set value with empty ref");
286
286
  if (this.getBlockInfo(blockId).fields[fieldName] === undefined)
287
- this.tx.createField(fid, 'Dynamic', state.ref);
287
+ this.tx.createField(fid, "Dynamic", state.ref);
288
288
  else
289
289
  this.tx.setField(fid, state.ref);
290
290
  this.getBlockInfo(blockId).fields[fieldName] = {
@@ -323,26 +323,26 @@ class ProjectMutator {
323
323
  }
324
324
  resetStaging(blockId) {
325
325
  const fields = this.getBlockInfo(blockId).fields;
326
- if (fields.stagingOutput?.status === 'Ready'
327
- && fields.stagingCtx?.status === 'Ready'
328
- && fields.stagingUiCtx?.status === 'Ready') {
329
- this.setBlockFieldObj(blockId, 'stagingOutputPrevious', fields.stagingOutput);
330
- this.setBlockFieldObj(blockId, 'stagingCtxPrevious', fields.stagingCtx);
331
- this.setBlockFieldObj(blockId, 'stagingUiCtxPrevious', fields.stagingUiCtx);
326
+ if (fields.stagingOutput?.status === "Ready" &&
327
+ fields.stagingCtx?.status === "Ready" &&
328
+ fields.stagingUiCtx?.status === "Ready") {
329
+ this.setBlockFieldObj(blockId, "stagingOutputPrevious", fields.stagingOutput);
330
+ this.setBlockFieldObj(blockId, "stagingCtxPrevious", fields.stagingCtx);
331
+ this.setBlockFieldObj(blockId, "stagingUiCtxPrevious", fields.stagingUiCtx);
332
332
  }
333
- if (this.deleteBlockFields(blockId, 'stagingOutput', 'stagingCtx', 'stagingUiCtx'))
333
+ if (this.deleteBlockFields(blockId, "stagingOutput", "stagingCtx", "stagingUiCtx"))
334
334
  this.resetStagingRefreshTimestamp();
335
335
  }
336
336
  resetProduction(blockId) {
337
337
  const fields = this.getBlockInfo(blockId).fields;
338
- if (fields.prodOutput?.status === 'Ready'
339
- && fields.prodCtx?.status === 'Ready'
340
- && fields.prodUiCtx?.status === 'Ready') {
341
- this.setBlockFieldObj(blockId, 'prodOutputPrevious', fields.prodOutput);
342
- this.setBlockFieldObj(blockId, 'prodCtxPrevious', fields.prodCtx);
343
- this.setBlockFieldObj(blockId, 'prodUiCtxPrevious', fields.prodUiCtx);
338
+ if (fields.prodOutput?.status === "Ready" &&
339
+ fields.prodCtx?.status === "Ready" &&
340
+ fields.prodUiCtx?.status === "Ready") {
341
+ this.setBlockFieldObj(blockId, "prodOutputPrevious", fields.prodOutput);
342
+ this.setBlockFieldObj(blockId, "prodCtxPrevious", fields.prodCtx);
343
+ this.setBlockFieldObj(blockId, "prodUiCtxPrevious", fields.prodUiCtx);
344
344
  }
345
- this.deleteBlockFields(blockId, 'prodOutput', 'prodCtx', 'prodUiCtx', 'prodArgs');
345
+ this.deleteBlockFields(blockId, "prodOutput", "prodCtx", "prodUiCtx", "prodArgs");
346
346
  }
347
347
  /** Running blocks are reset, already computed moved to limbo. Returns if
348
348
  * either of the actions were actually performed.
@@ -350,7 +350,7 @@ class ProjectMutator {
350
350
  resetOrLimboProduction(blockId) {
351
351
  const fields = this.getBlockInfo(blockId).fields;
352
352
  // Check if we can safely move to limbo (both core production fields are ready)
353
- if (fields.prodOutput?.status === 'Ready' && fields.prodCtx?.status === 'Ready') {
353
+ if (fields.prodOutput?.status === "Ready" && fields.prodCtx?.status === "Ready") {
354
354
  if (this.blocksInLimbo.has(blockId))
355
355
  // we are already in limbo
356
356
  return false;
@@ -358,12 +358,12 @@ class ProjectMutator {
358
358
  this.blocksInLimbo.add(blockId);
359
359
  this.renderingStateChanged = true;
360
360
  // doing some gc - clean up previous cache fields
361
- this.deleteBlockFields(blockId, 'prodOutputPrevious', 'prodCtxPrevious', 'prodUiCtxPrevious');
361
+ this.deleteBlockFields(blockId, "prodOutputPrevious", "prodCtxPrevious", "prodUiCtxPrevious");
362
362
  return true;
363
363
  }
364
364
  else {
365
365
  // reset - clean up any partial/inconsistent production stat
366
- return this.deleteBlockFields(blockId, 'prodOutput', 'prodCtx', 'prodUiCtx', 'prodArgs', 'prodOutputPrevious', 'prodCtxPrevious', 'prodUiCtxPrevious');
366
+ return this.deleteBlockFields(blockId, "prodOutput", "prodCtx", "prodUiCtx", "prodArgs", "prodOutputPrevious", "prodCtxPrevious", "prodUiCtxPrevious");
367
367
  }
368
368
  }
369
369
  /**
@@ -387,7 +387,7 @@ class ProjectMutator {
387
387
  * @param rawStorageJson Raw storage as JSON string
388
388
  */
389
389
  setBlockStorageRaw(blockId, rawStorageJson) {
390
- this.setBlockFieldObj(blockId, 'blockStorage', this.createJsonFieldValueByContent(rawStorageJson));
390
+ this.setBlockFieldObj(blockId, "blockStorage", this.createJsonFieldValueByContent(rawStorageJson));
391
391
  this.blocksWithChangedInputs.add(blockId);
392
392
  this.updateLastModified();
393
393
  }
@@ -403,7 +403,7 @@ class ProjectMutator {
403
403
  const info = this.getBlockInfo(blockId);
404
404
  const blockConfig = info.config;
405
405
  if (blockConfig.modelAPIVersion !== 2) {
406
- throw new Error('resetToInitialStorage is only supported for model API version 2');
406
+ throw new Error("resetToInitialStorage is only supported for model API version 2");
407
407
  }
408
408
  // Get initial storage from VM
409
409
  const initialStorageJson = this.projectHelper.getInitialStorageInVM(blockConfig);
@@ -411,15 +411,15 @@ class ProjectMutator {
411
411
  // Derive args from storage - set or clear currentArgs based on derivation result
412
412
  const deriveArgsResult = this.projectHelper.deriveArgsFromStorage(blockConfig, initialStorageJson);
413
413
  if (!deriveArgsResult.error) {
414
- this.setBlockFieldObj(blockId, 'currentArgs', this.createJsonFieldValue(deriveArgsResult.value));
414
+ this.setBlockFieldObj(blockId, "currentArgs", this.createJsonFieldValue(deriveArgsResult.value));
415
415
  // Derive prerunArgs from storage
416
416
  const prerunArgs = this.projectHelper.derivePrerunArgsFromStorage(blockConfig, initialStorageJson);
417
417
  if (prerunArgs !== undefined) {
418
- this.setBlockFieldObj(blockId, 'currentPrerunArgs', this.createJsonFieldValue(prerunArgs));
418
+ this.setBlockFieldObj(blockId, "currentPrerunArgs", this.createJsonFieldValue(prerunArgs));
419
419
  }
420
420
  }
421
421
  else {
422
- this.deleteBlockFields(blockId, 'currentArgs');
422
+ this.deleteBlockFields(blockId, "currentArgs");
423
423
  }
424
424
  }
425
425
  /** Optimally sets inputs for multiple blocks in one go */
@@ -444,7 +444,7 @@ class ProjectMutator {
444
444
  }
445
445
  // Apply the state update to storage
446
446
  const updatedStorageJson = this.projectHelper.applyStorageUpdateInVM(blockConfig, currentStorageJson, req.payload);
447
- this.setBlockFieldObj(req.blockId, 'blockStorage', this.createJsonFieldValueByContent(updatedStorageJson));
447
+ this.setBlockFieldObj(req.blockId, "blockStorage", this.createJsonFieldValueByContent(updatedStorageJson));
448
448
  // Derive args directly from storage (VM extracts data internally)
449
449
  const derivedArgsResult = this.projectHelper.deriveArgsFromStorage(blockConfig, updatedStorageJson);
450
450
  if (derivedArgsResult.error) {
@@ -458,8 +458,8 @@ class ProjectMutator {
458
458
  }
459
459
  }
460
460
  else {
461
- this.setBlockFieldObj(req.blockId, 'blockStorage', this.createJsonFieldValue(req.state));
462
- if (req.state !== null && typeof req.state === 'object' && 'args' in req.state) {
461
+ this.setBlockFieldObj(req.blockId, "blockStorage", this.createJsonFieldValue(req.state));
462
+ if (req.state !== null && typeof req.state === "object" && "args" in req.state) {
463
463
  args = req.state.args;
464
464
  }
465
465
  else {
@@ -472,10 +472,10 @@ class ProjectMutator {
472
472
  if (args !== undefined) {
473
473
  const currentArgsData = canonicalJsonBytes(args);
474
474
  const argsPartRef = this.tx.createValue(Pl.JsonObject, currentArgsData);
475
- this.setBlockField(req.blockId, 'currentArgs', argsPartRef, 'Ready', currentArgsData);
475
+ this.setBlockField(req.blockId, "currentArgs", argsPartRef, "Ready", currentArgsData);
476
476
  }
477
477
  else {
478
- this.deleteBlockFields(req.blockId, 'currentArgs');
478
+ this.deleteBlockFields(req.blockId, "currentArgs");
479
479
  }
480
480
  // Set currentPrerunArgs field and check if it actually changed
481
481
  let prerunArgsChanged = false;
@@ -483,11 +483,12 @@ class ProjectMutator {
483
483
  const prerunArgsData = canonicalJsonBytes(prerunArgs);
484
484
  const oldPrerunArgsData = info.fields.currentPrerunArgs?.value;
485
485
  // Check if prerunArgs actually changed
486
- if (oldPrerunArgsData === undefined || Buffer.compare(oldPrerunArgsData, prerunArgsData) !== 0) {
486
+ if (oldPrerunArgsData === undefined ||
487
+ Buffer.compare(oldPrerunArgsData, prerunArgsData) !== 0) {
487
488
  prerunArgsChanged = true;
488
489
  }
489
490
  const prerunArgsRef = this.tx.createValue(Pl.JsonObject, prerunArgsData);
490
- this.setBlockField(req.blockId, 'currentPrerunArgs', prerunArgsRef, 'Ready', prerunArgsData);
491
+ this.setBlockField(req.blockId, "currentPrerunArgs", prerunArgsRef, "Ready", prerunArgsData);
491
492
  }
492
493
  else {
493
494
  // prerunArgs is undefined - check if we previously had one
@@ -507,21 +508,21 @@ class ProjectMutator {
507
508
  }
508
509
  }
509
510
  // resetting staging outputs for all downstream blocks
510
- this.getStagingGraph().traverse('downstream', changedArgs, ({ id }) => this.resetStaging(id));
511
+ this.getStagingGraph().traverse("downstream", changedArgs, ({ id }) => this.resetStaging(id));
511
512
  if (somethingChanged)
512
513
  this.updateLastModified();
513
514
  }
514
515
  setBlockSettings(blockId, newValue) {
515
- this.setBlockFieldObj(blockId, 'blockSettings', this.createJsonFieldValue(newValue));
516
+ this.setBlockFieldObj(blockId, "blockSettings", this.createJsonFieldValue(newValue));
516
517
  this.updateLastModified();
517
518
  }
518
519
  createProdCtx(upstream) {
519
520
  const upstreamContexts = [];
520
521
  upstream.forEach((id) => {
521
522
  const info = this.getBlockInfo(id);
522
- if (info.fields['prodCtx']?.ref === undefined)
523
- throw new Error('One of the upstreams staging is not rendered.');
524
- upstreamContexts.push(Pl.unwrapHolder(this.tx, info.fields['prodCtx'].ref));
523
+ if (info.fields["prodCtx"]?.ref === undefined)
524
+ throw new Error("One of the upstreams staging is not rendered.");
525
+ upstreamContexts.push(Pl.unwrapHolder(this.tx, info.fields["prodCtx"].ref));
525
526
  });
526
527
  return createBContextFromUpstreams(this.tx, upstreamContexts);
527
528
  }
@@ -529,11 +530,11 @@ class ProjectMutator {
529
530
  const upstreamContexts = [];
530
531
  upstream.forEach((id) => {
531
532
  const info = this.getBlockInfo(id);
532
- if (info.fields['stagingCtx']?.ref === undefined)
533
- throw new Error('One of the upstreams staging is not rendered.');
534
- upstreamContexts.push(Pl.unwrapHolder(this.tx, info.fields['stagingCtx'].ref));
535
- if (info.fields['prodCtx']?.ref !== undefined)
536
- upstreamContexts.push(Pl.unwrapHolder(this.tx, info.fields['prodCtx'].ref));
533
+ if (info.fields["stagingCtx"]?.ref === undefined)
534
+ throw new Error("One of the upstreams staging is not rendered.");
535
+ upstreamContexts.push(Pl.unwrapHolder(this.tx, info.fields["stagingCtx"].ref));
536
+ if (info.fields["prodCtx"]?.ref !== undefined)
537
+ upstreamContexts.push(Pl.unwrapHolder(this.tx, info.fields["prodCtx"].ref));
537
538
  });
538
539
  return createBContextFromUpstreams(this.tx, upstreamContexts);
539
540
  }
@@ -553,8 +554,8 @@ class ProjectMutator {
553
554
  return;
554
555
  }
555
556
  const ctx = this.createStagingCtx(this.getStagingGraph().nodes.get(blockId).upstream);
556
- if (this.getBlock(blockId).renderingMode !== 'Heavy')
557
- throw new Error('not supported yet');
557
+ if (this.getBlock(blockId).renderingMode !== "Heavy")
558
+ throw new Error("not supported yet");
558
559
  const tpl = info.getTemplate(this.tx);
559
560
  // Use currentPrerunArgs for staging rendering
560
561
  const results = createRenderHeavyBlock(this.tx, tpl, {
@@ -566,11 +567,11 @@ class ProjectMutator {
566
567
  // Here we set the staging ctx to the input context of the staging workflow, not the output because exports
567
568
  // of one staging context should stay within the same block, and not travel downstream.
568
569
  // We may change this decision in the future if wanted to support traveling staging exports downstream.
569
- this.setBlockField(blockId, 'stagingCtx', Pl.wrapInEphHolder(this.tx, ctx), 'NotReady');
570
+ this.setBlockField(blockId, "stagingCtx", Pl.wrapInEphHolder(this.tx, ctx), "NotReady");
570
571
  // Yet the staging UI Ctx is the output context of the staging workflow, because it is used to form the result pool
571
572
  // thus creating a certain discrepancy between staging workflow context behavior and desktop's result pool.
572
- this.setBlockField(blockId, 'stagingUiCtx', this.exportCtx(results.context), 'NotReady');
573
- this.setBlockField(blockId, 'stagingOutput', results.result, 'NotReady');
573
+ this.setBlockField(blockId, "stagingUiCtx", this.exportCtx(results.context), "NotReady");
574
+ this.setBlockField(blockId, "stagingOutput", results.result, "NotReady");
574
575
  }
575
576
  renderProductionFor(blockId) {
576
577
  this.resetProduction(blockId);
@@ -580,8 +581,8 @@ class ProjectMutator {
580
581
  throw new Error(`Can't render production for block ${blockId}: currentArgs not set`);
581
582
  }
582
583
  const ctx = this.createProdCtx(this.getPendingProductionGraph().nodes.get(blockId).upstream);
583
- if (this.getBlock(blockId).renderingMode === 'Light')
584
- throw new Error('Can\'t render production for light block.');
584
+ if (this.getBlock(blockId).renderingMode === "Light")
585
+ throw new Error("Can't render production for light block.");
585
586
  const tpl = info.getTemplate(this.tx);
586
587
  const results = createRenderHeavyBlock(this.tx, tpl, {
587
588
  args: info.fields.currentArgs.ref,
@@ -589,11 +590,11 @@ class ProjectMutator {
589
590
  isProduction: this.tx.createValue(Pl.JsonBool, JSON.stringify(true)),
590
591
  context: ctx,
591
592
  });
592
- this.setBlockField(blockId, 'prodCtx', Pl.wrapInEphHolder(this.tx, results.context), 'NotReady');
593
- this.setBlockField(blockId, 'prodUiCtx', this.exportCtx(results.context), 'NotReady');
594
- this.setBlockField(blockId, 'prodOutput', results.result, 'NotReady');
593
+ this.setBlockField(blockId, "prodCtx", Pl.wrapInEphHolder(this.tx, results.context), "NotReady");
594
+ this.setBlockField(blockId, "prodUiCtx", this.exportCtx(results.context), "NotReady");
595
+ this.setBlockField(blockId, "prodOutput", results.result, "NotReady");
595
596
  // saving inputs for which we rendered the production
596
- this.setBlockFieldObj(blockId, 'prodArgs', info.fields.currentArgs);
597
+ this.setBlockFieldObj(blockId, "prodArgs", info.fields.currentArgs);
597
598
  // removing block from limbo as we juts rendered fresh production for it
598
599
  if (this.blocksInLimbo.delete(blockId))
599
600
  this.renderingStateChanged = true;
@@ -606,14 +607,14 @@ class ProjectMutator {
606
607
  this.blockInfos.set(blockId, info);
607
608
  // block pack
608
609
  const bp = createBlockPack(this.tx, spec.blockPack);
609
- this.setBlockField(blockId, 'blockPack', Pl.wrapInHolder(this.tx, bp), 'NotReady');
610
+ this.setBlockField(blockId, "blockPack", Pl.wrapInHolder(this.tx, bp), "NotReady");
610
611
  // settings
611
- this.setBlockFieldObj(blockId, 'blockSettings', this.createJsonFieldValue(InitialBlockSettings));
612
+ this.setBlockFieldObj(blockId, "blockSettings", this.createJsonFieldValue(InitialBlockSettings));
612
613
  const blockConfig = info.config;
613
614
  let args;
614
615
  let prerunArgs;
615
616
  let storageToWrite;
616
- if (spec.storageMode === 'fromModel') {
617
+ if (spec.storageMode === "fromModel") {
617
618
  // Model API v2+: get initial storage and derive args from it
618
619
  storageToWrite = this.projectHelper.getInitialStorageInVM(blockConfig);
619
620
  // Derive args directly from storage (VM extracts data internally)
@@ -627,12 +628,12 @@ class ProjectMutator {
627
628
  prerunArgs = this.projectHelper.derivePrerunArgsFromStorage(blockConfig, storageToWrite);
628
629
  }
629
630
  }
630
- else if (spec.storageMode === 'legacy') {
631
+ else if (spec.storageMode === "legacy") {
631
632
  // Model API v1: use legacyState from spec
632
633
  const parsedState = JSON.parse(spec.legacyState);
633
634
  args = parsedState.args;
634
635
  if (args === undefined) {
635
- throw new Error('args is undefined in legacyState');
636
+ throw new Error("args is undefined in legacyState");
636
637
  }
637
638
  prerunArgs = args;
638
639
  storageToWrite = spec.legacyState;
@@ -642,14 +643,14 @@ class ProjectMutator {
642
643
  }
643
644
  // currentArgs
644
645
  if (args !== undefined) {
645
- this.setBlockFieldObj(blockId, 'currentArgs', this.createJsonFieldValue(args));
646
+ this.setBlockFieldObj(blockId, "currentArgs", this.createJsonFieldValue(args));
646
647
  }
647
648
  // currentPrerunArgs
648
649
  if (prerunArgs !== undefined) {
649
- this.setBlockFieldObj(blockId, 'currentPrerunArgs', this.createJsonFieldValue(prerunArgs));
650
+ this.setBlockFieldObj(blockId, "currentPrerunArgs", this.createJsonFieldValue(prerunArgs));
650
651
  }
651
652
  // blockStorage
652
- this.setBlockFieldObj(blockId, 'blockStorage', this.createJsonFieldValueByContent(storageToWrite));
653
+ this.setBlockFieldObj(blockId, "blockStorage", this.createJsonFieldValueByContent(storageToWrite));
653
654
  // checking structure
654
655
  info.check();
655
656
  }
@@ -657,25 +658,21 @@ class ProjectMutator {
657
658
  const fields = this.getBlockInfo(blockId).fields;
658
659
  const diff = (setA, setB) => new Set([...setA].filter((x) => !setB.has(x)));
659
660
  // Check if we can safely move to limbo (both core production fields are ready)
660
- if (fields.prodOutput?.status === 'Ready' && fields.prodCtx?.status === 'Ready') {
661
+ if (fields.prodOutput?.status === "Ready" && fields.prodCtx?.status === "Ready") {
661
662
  if (this.blocksInLimbo.has(blockId))
662
663
  // we are already in limbo
663
664
  return FieldsToDuplicate;
664
- return diff(FieldsToDuplicate, new Set([
665
- 'prodOutputPrevious',
666
- 'prodCtxPrevious',
667
- 'prodUiCtxPrevious',
668
- ]));
665
+ return diff(FieldsToDuplicate, new Set(["prodOutputPrevious", "prodCtxPrevious", "prodUiCtxPrevious"]));
669
666
  }
670
667
  else {
671
668
  return diff(FieldsToDuplicate, new Set([
672
- 'prodOutput',
673
- 'prodCtx',
674
- 'prodUiCtx',
675
- 'prodArgs',
676
- 'prodOutputPrevious',
677
- 'prodCtxPrevious',
678
- 'prodUiCtxPrevious',
669
+ "prodOutput",
670
+ "prodCtx",
671
+ "prodUiCtx",
672
+ "prodArgs",
673
+ "prodOutputPrevious",
674
+ "prodCtxPrevious",
675
+ "prodUiCtxPrevious",
679
676
  ]));
680
677
  }
681
678
  }
@@ -685,7 +682,9 @@ class ProjectMutator {
685
682
  const fieldNamesToDuplicate = this.getFieldNamesToDuplicate(blockId);
686
683
  // Copy all fields from original block to new block by sharing references
687
684
  for (const [fieldName, fieldState] of Object.entries(originalBlockInfo.fields)) {
688
- if (fieldNamesToDuplicate.has(fieldName) && fieldState && fieldState.ref) {
685
+ if (fieldNamesToDuplicate.has(fieldName) &&
686
+ fieldState &&
687
+ fieldState.ref) {
689
688
  this.setBlockFieldObj(blockId, fieldName, {
690
689
  ref: fieldState.ref,
691
690
  status: fieldState.status,
@@ -722,12 +721,12 @@ class ProjectMutator {
722
721
  const prodDiff = graphDiff(currentActualProductionGraph, newActualProductionGraph);
723
722
  // applying changes due to topology change in production to affected nodes and
724
723
  // all their downstreams
725
- currentActualProductionGraph.traverse('downstream', [...prodDiff.different], (node) => {
724
+ currentActualProductionGraph.traverse("downstream", [...prodDiff.different], (node) => {
726
725
  this.resetOrLimboProduction(node.id);
727
726
  });
728
- if (stagingDiff.onlyInB.size > 0
729
- || stagingDiff.onlyInA.size > 0
730
- || stagingDiff.different.size > 0)
727
+ if (stagingDiff.onlyInB.size > 0 ||
728
+ stagingDiff.onlyInA.size > 0 ||
729
+ stagingDiff.different.size > 0)
731
730
  this.resetStagingRefreshTimestamp();
732
731
  this.struct = newStructure;
733
732
  this.structureChanged = true;
@@ -760,7 +759,7 @@ class ProjectMutator {
760
759
  }
761
760
  this.updateStructure(newStruct, (blockId) => {
762
761
  if (blockId !== block.id)
763
- throw new Error('Unexpected');
762
+ throw new Error("Unexpected");
764
763
  this.initializeNewBlock(blockId, spec);
765
764
  });
766
765
  }
@@ -803,7 +802,7 @@ class ProjectMutator {
803
802
  }
804
803
  this.updateStructure(newStruct, (blockId) => {
805
804
  if (blockId !== newBlockId)
806
- throw new Error('Unexpected');
805
+ throw new Error("Unexpected");
807
806
  this.initializeBlockDuplicate(blockId, originalBlockInfo);
808
807
  });
809
808
  }
@@ -828,7 +827,7 @@ class ProjectMutator {
828
827
  migrateBlockPack(blockId, spec, newClearState) {
829
828
  const info = this.getBlockInfo(blockId);
830
829
  const newConfig = extractConfig(spec.config);
831
- this.setBlockField(blockId, 'blockPack', Pl.wrapInHolder(this.tx, createBlockPack(this.tx, spec)), 'NotReady');
830
+ this.setBlockField(blockId, "blockPack", Pl.wrapInHolder(this.tx, createBlockPack(this.tx, spec)), "NotReady");
832
831
  if (newClearState !== undefined) {
833
832
  // State is being reset - no migration needed
834
833
  const supportsStorageFromVM = newConfig.modelAPIVersion === 2;
@@ -839,11 +838,11 @@ class ProjectMutator {
839
838
  // Derive args from storage - only set currentArgs if derivation succeeds
840
839
  const deriveArgsResult = this.projectHelper.deriveArgsFromStorage(newConfig, initialStorageJson);
841
840
  if (!deriveArgsResult.error) {
842
- this.setBlockFieldObj(blockId, 'currentArgs', this.createJsonFieldValue(deriveArgsResult.value));
841
+ this.setBlockFieldObj(blockId, "currentArgs", this.createJsonFieldValue(deriveArgsResult.value));
843
842
  // Derive prerunArgs from storage
844
843
  const prerunArgs = this.projectHelper.derivePrerunArgsFromStorage(newConfig, initialStorageJson);
845
844
  if (prerunArgs !== undefined) {
846
- this.setBlockFieldObj(blockId, 'currentPrerunArgs', this.createJsonFieldValue(prerunArgs));
845
+ this.setBlockFieldObj(blockId, "currentPrerunArgs", this.createJsonFieldValue(prerunArgs));
847
846
  }
848
847
  }
849
848
  this.blocksWithChangedInputs.add(blockId);
@@ -873,11 +872,11 @@ class ProjectMutator {
873
872
  }
874
873
  }
875
874
  // resetting staging outputs for all downstream blocks
876
- this.getStagingGraph().traverse('downstream', [blockId], ({ id }) => this.resetStaging(id));
875
+ this.getStagingGraph().traverse("downstream", [blockId], ({ id }) => this.resetStaging(id));
877
876
  }
878
877
  // also reset or limbo all downstream productions
879
878
  if (info.productionRendered)
880
- this.getActualProductionGraph().traverse('downstream', [blockId], ({ id }) => this.resetOrLimboProduction(id));
879
+ this.getActualProductionGraph().traverse("downstream", [blockId], ({ id }) => this.resetOrLimboProduction(id));
881
880
  this.updateLastModified();
882
881
  }
883
882
  //
@@ -888,17 +887,18 @@ class ProjectMutator {
888
887
  const prodGraph = this.getPendingProductionGraph();
889
888
  if (addUpstreams)
890
889
  // adding all upstreams automatically
891
- prodGraph.traverse('upstream', blockIds, (node) => {
890
+ prodGraph.traverse("upstream", blockIds, (node) => {
892
891
  blockIdsSet.add(node.id);
893
892
  });
894
- else // checking that targets contain all upstreams
893
+ else
894
+ // checking that targets contain all upstreams
895
895
  for (const blockId of blockIdsSet) {
896
896
  const node = prodGraph.nodes.get(blockId);
897
897
  if (node === undefined)
898
898
  throw new Error(`Can't find block with id: ${blockId}`);
899
899
  for (const upstream of node.upstream)
900
900
  if (!blockIdsSet.has(upstream))
901
- throw new Error('Can\'t render blocks not including all upstreams.');
901
+ throw new Error("Can't render blocks not including all upstreams.");
902
902
  }
903
903
  // traversing in topological order and rendering target blocks
904
904
  const rendered = new Set();
@@ -919,14 +919,14 @@ class ProjectMutator {
919
919
  }
920
920
  const renderedArray = [...rendered];
921
921
  // sending to limbo all downstream blocks
922
- prodGraph.traverse('downstream', renderedArray, (node) => {
922
+ prodGraph.traverse("downstream", renderedArray, (node) => {
923
923
  if (rendered.has(node.id))
924
924
  // don't send to limbo blocks that were just rendered
925
925
  return;
926
926
  this.resetOrLimboProduction(node.id);
927
927
  });
928
928
  // resetting staging outputs for all downstream blocks
929
- this.getStagingGraph().traverse('downstream', renderedArray, ({ id }) => {
929
+ this.getStagingGraph().traverse("downstream", renderedArray, ({ id }) => {
930
930
  // don't reset staging of the first rendered block
931
931
  if (renderedArray[0] !== id)
932
932
  this.resetStaging(id);
@@ -946,14 +946,14 @@ class ProjectMutator {
946
946
  while (!queue.isEmpty()) {
947
947
  const blockId = queue.shift();
948
948
  const fields = this.getBlockInfo(blockId).fields;
949
- if (fields.prodOutput?.status === 'Ready' && fields.prodCtx?.status === 'Ready')
949
+ if (fields.prodOutput?.status === "Ready" && fields.prodCtx?.status === "Ready")
950
950
  // skipping finished blocks
951
951
  continue;
952
- if (this.deleteBlockFields(blockId, 'prodOutput', 'prodCtx', 'prodUiCtx', 'prodArgs')) {
952
+ if (this.deleteBlockFields(blockId, "prodOutput", "prodCtx", "prodUiCtx", "prodArgs")) {
953
953
  // was actually stopped
954
954
  stopped.push(blockId);
955
955
  // will try to stop all its downstreams
956
- for (const downstream of activeProdGraph.traverseIdsExcludingRoots('downstream', blockId)) {
956
+ for (const downstream of activeProdGraph.traverseIdsExcludingRoots("downstream", blockId)) {
957
957
  if (queued.has(downstream))
958
958
  continue;
959
959
  queue.push(downstream);
@@ -962,10 +962,10 @@ class ProjectMutator {
962
962
  }
963
963
  }
964
964
  // blocks under stopped blocks, but having finished production results, goes to limbo
965
- for (const blockId of activeProdGraph.traverseIdsExcludingRoots('downstream', ...stopped))
965
+ for (const blockId of activeProdGraph.traverseIdsExcludingRoots("downstream", ...stopped))
966
966
  this.resetOrLimboProduction(blockId);
967
967
  // reset staging outputs for all downstream blocks
968
- this.getStagingGraph().traverse('downstream', stopped, ({ id }) => this.resetStaging(id));
968
+ this.getStagingGraph().traverse("downstream", stopped, ({ id }) => this.resetStaging(id));
969
969
  }
970
970
  traverseWithStagingLag(cb) {
971
971
  const lags = new Map();
@@ -1022,12 +1022,12 @@ class ProjectMutator {
1022
1022
  doRefresh(stagingRenderingRate) {
1023
1023
  this.refreshStagings(stagingRenderingRate);
1024
1024
  this.blockInfos.forEach((blockInfo) => {
1025
- if (blockInfo.fields.prodCtx?.status === 'Ready'
1026
- && blockInfo.fields.prodOutput?.status === 'Ready')
1027
- this.deleteBlockFields(blockInfo.id, 'prodOutputPrevious', 'prodCtxPrevious', 'prodUiCtxPrevious');
1028
- if (blockInfo.fields.stagingCtx?.status === 'Ready'
1029
- && blockInfo.fields.stagingOutput?.status === 'Ready')
1030
- this.deleteBlockFields(blockInfo.id, 'stagingOutputPrevious', 'stagingCtxPrevious', 'stagingUiCtxPrevious');
1025
+ if (blockInfo.fields.prodCtx?.status === "Ready" &&
1026
+ blockInfo.fields.prodOutput?.status === "Ready")
1027
+ this.deleteBlockFields(blockInfo.id, "prodOutputPrevious", "prodCtxPrevious", "prodUiCtxPrevious");
1028
+ if (blockInfo.fields.stagingCtx?.status === "Ready" &&
1029
+ blockInfo.fields.stagingOutput?.status === "Ready")
1030
+ this.deleteBlockFields(blockInfo.id, "stagingOutputPrevious", "stagingCtxPrevious", "stagingUiCtxPrevious");
1031
1031
  });
1032
1032
  }
1033
1033
  assignAuthorMarkers() {
@@ -1102,22 +1102,18 @@ class ProjectMutator {
1102
1102
  if (state.ref === undefined)
1103
1103
  continue;
1104
1104
  if (!isResource(state.ref) || isResourceRef(state.ref))
1105
- throw new Error('unexpected behaviour');
1105
+ throw new Error("unexpected behaviour");
1106
1106
  const fieldName = fName;
1107
1107
  blockFieldRequests.push([
1108
- info, fieldName,
1109
- state, tx.getResourceData(state.ref, fieldName == 'blockPack')
1108
+ info,
1109
+ fieldName,
1110
+ state,
1111
+ tx.getResourceData(state.ref, fieldName == "blockPack"),
1110
1112
  ]);
1111
1113
  }
1112
1114
  });
1113
1115
  // loading jsons
1114
- const [schema, lastModified, meta, structure, { stagingRefreshTimestamp, blocksInLimbo },] = await Promise.all([
1115
- schemaP,
1116
- lastModifiedP,
1117
- metaP,
1118
- structureP,
1119
- renderingStateP,
1120
- ]);
1116
+ const [schema, lastModified, meta, structure, { stagingRefreshTimestamp, blocksInLimbo }] = await Promise.all([schemaP, lastModifiedP, metaP, structureP, renderingStateP]);
1121
1117
  // Checking schema version of the project
1122
1118
  if (schema !== SchemaVersionCurrent) {
1123
1119
  if (Number(schema) < Number(SchemaVersionCurrent))
@@ -1137,17 +1133,20 @@ class ProjectMutator {
1137
1133
  const result = await response;
1138
1134
  state.value = result.data;
1139
1135
  if (isNotNullResourceId(result.error))
1140
- state.status = 'Error';
1136
+ state.status = "Error";
1141
1137
  else if (result.resourceReady || isNotNullResourceId(result.originalResourceId))
1142
- state.status = 'Ready';
1138
+ state.status = "Ready";
1143
1139
  else
1144
- state.status = 'NotReady';
1140
+ state.status = "NotReady";
1145
1141
  // For block pack we need to traverse the ref field from the resource data
1146
- if (fieldName === 'blockPack') {
1142
+ if (fieldName === "blockPack") {
1147
1143
  const refField = result.fields.find((f) => f.name === Pl.HolderRefField);
1148
1144
  if (refField === undefined)
1149
- throw new Error('Block pack ref field is missing');
1150
- blockPackRequests.push([info, tx.getResourceData(ensureResourceIdNotNull(refField.value), false)]);
1145
+ throw new Error("Block pack ref field is missing");
1146
+ blockPackRequests.push([
1147
+ info,
1148
+ tx.getResourceData(ensureResourceIdNotNull(refField.value), false),
1149
+ ]);
1151
1150
  }
1152
1151
  }
1153
1152
  //
@@ -1172,7 +1171,7 @@ class ProjectMutator {
1172
1171
  ctxExportTplHolder = ensureResourceIdNotNull(ctxExportTplField.value);
1173
1172
  else {
1174
1173
  ctxExportTplHolder = Pl.wrapInHolder(tx, loadTemplate(tx, ctxExportTplEnvelope.spec));
1175
- tx.createField(field(rid, getServiceTemplateField(ctxExportTplEnvelope.hash)), 'Dynamic', ctxExportTplHolder);
1174
+ tx.createField(field(rid, getServiceTemplateField(ctxExportTplEnvelope.hash)), "Dynamic", ctxExportTplHolder);
1176
1175
  }
1177
1176
  const renderingState = { stagingRefreshTimestamp };
1178
1177
  const blocksInLimboSet = new Set(blocksInLimbo);
@@ -1207,7 +1206,7 @@ async function createProject(tx, meta = InitialBlockMeta) {
1207
1206
  tx.setKValue(prj, ProjectStructureKey, JSON.stringify(InitialBlockStructure));
1208
1207
  tx.setKValue(prj, BlockRenderingStateKey, JSON.stringify(InitialProjectRenderingState));
1209
1208
  const ctxExportTplEnvelope = await getPreparedExportTemplateEnvelope();
1210
- tx.createField(field(prj, getServiceTemplateField(ctxExportTplEnvelope.hash)), 'Dynamic', Pl.wrapInHolder(tx, loadTemplate(tx, ctxExportTplEnvelope.spec)));
1209
+ tx.createField(field(prj, getServiceTemplateField(ctxExportTplEnvelope.hash)), "Dynamic", Pl.wrapInHolder(tx, loadTemplate(tx, ctxExportTplEnvelope.spec)));
1211
1210
  return prj;
1212
1211
  }
1213
1212
  async function withProject(projectHelper, txOrPl, rid, cb, ops) {
@@ -1215,7 +1214,7 @@ async function withProject(projectHelper, txOrPl, rid, cb, ops) {
1215
1214
  }
1216
1215
  async function withProjectAuthored(projectHelper, txOrPl, rid, author, cb, ops = {}) {
1217
1216
  if (txOrPl instanceof PlClient) {
1218
- return await txOrPl.withWriteTx('ProjectAction' + (ops.name ? `: ${ops.name}` : ''), async (tx) => {
1217
+ return await txOrPl.withWriteTx("ProjectAction" + (ops.name ? `: ${ops.name}` : ""), async (tx) => {
1219
1218
  const mut = await ProjectMutator.load(projectHelper, tx, rid, author);
1220
1219
  const result = await cb(mut);
1221
1220
  if (!mut.wasModified)