@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
@@ -1,9 +1,5 @@
1
- import type { MiddleLayerEnvironment } from './middle_layer';
2
- import type {
3
- FieldData,
4
- OptionalAnyResourceId,
5
- ResourceId,
6
- } from '@milaboratories/pl-client';
1
+ import type { MiddleLayerEnvironment } from "./middle_layer";
2
+ import type { FieldData, OptionalAnyResourceId, ResourceId } from "@milaboratories/pl-client";
7
3
  import {
8
4
  DefaultRetryOptions,
9
5
  ensureResourceIdNotNull,
@@ -12,38 +8,38 @@ import {
12
8
  isTimeoutOrCancelError,
13
9
  Pl,
14
10
  resourceIdToString,
15
- } from '@milaboratories/pl-client';
16
- import type { ComputableStableDefined, ComputableValueOrErrors } from '@milaboratories/computable';
17
- import { Computable } from '@milaboratories/computable';
18
- import { projectOverview } from './project_overview';
19
- import type { BlockPackSpecAny } from '../model';
20
- import { randomUUID } from 'node:crypto';
21
- import { withProject, withProjectAuthored } from '../mutator/project';
22
- import type { ExtendedResourceData } from '@milaboratories/pl-tree';
23
- import { SynchronizedTreeState, treeDumpStats } from '@milaboratories/pl-tree';
24
- import { setTimeout } from 'node:timers/promises';
25
- import { frontendData } from './frontend_path';
26
- import type { NavigationState } from '@milaboratories/pl-model-common';
27
- import { getBlockParameters, blockOutputs } from './block';
28
- import type { FrontendData } from '../model/frontend';
29
- import type { ProjectStructure } from '../model/project_model';
30
- import { projectFieldName } from '../model/project_model';
31
- import { cachedDeserialize, notEmpty } from '@milaboratories/ts-helpers';
32
- import type { BlockPackInfo } from '../model/block_pack';
11
+ } from "@milaboratories/pl-client";
12
+ import type { ComputableStableDefined, ComputableValueOrErrors } from "@milaboratories/computable";
13
+ import { Computable } from "@milaboratories/computable";
14
+ import { projectOverview } from "./project_overview";
15
+ import type { BlockPackSpecAny } from "../model";
16
+ import { randomUUID } from "node:crypto";
17
+ import { withProject, withProjectAuthored } from "../mutator/project";
18
+ import type { ExtendedResourceData } from "@milaboratories/pl-tree";
19
+ import { SynchronizedTreeState, treeDumpStats } from "@milaboratories/pl-tree";
20
+ import { setTimeout } from "node:timers/promises";
21
+ import { frontendData } from "./frontend_path";
22
+ import type { NavigationState } from "@milaboratories/pl-model-common";
23
+ import { getBlockParameters, blockOutputs } from "./block";
24
+ import type { FrontendData } from "../model/frontend";
25
+ import type { ProjectStructure } from "../model/project_model";
26
+ import { projectFieldName } from "../model/project_model";
27
+ import { cachedDeserialize, notEmpty } from "@milaboratories/ts-helpers";
28
+ import type { BlockPackInfo } from "../model/block_pack";
33
29
  import type {
34
30
  ProjectOverview,
35
31
  AuthorMarker,
36
32
  BlockSettings,
37
33
  BlockStateInternalV3,
38
- } from '@milaboratories/pl-model-middle-layer';
39
- import { activeConfigs } from './active_cfg';
40
- import { NavigationStates } from './navigation_states';
41
- import { extractConfig } from '@platforma-sdk/model';
42
- import fs from 'node:fs/promises';
43
- import canonicalize from 'canonicalize';
44
- import type { ProjectOverviewLight } from './project_overview_light';
45
- import { projectOverviewLight } from './project_overview_light';
46
- import { applyProjectMigrations } from '../mutator/migration';
34
+ } from "@milaboratories/pl-model-middle-layer";
35
+ import { activeConfigs } from "./active_cfg";
36
+ import { NavigationStates } from "./navigation_states";
37
+ import { extractConfig } from "@platforma-sdk/model";
38
+ import fs from "node:fs/promises";
39
+ import canonicalize from "canonicalize";
40
+ import type { ProjectOverviewLight } from "./project_overview_light";
41
+ import { projectOverviewLight } from "./project_overview_light";
42
+ import { applyProjectMigrations } from "../mutator/migration";
47
43
 
48
44
  type BlockStateComputables = {
49
45
  readonly fullState: Computable<BlockStateInternalV3>;
@@ -51,25 +47,23 @@ type BlockStateComputables = {
51
47
 
52
48
  function stringifyForDump(object: unknown): string {
53
49
  return JSON.stringify(object, (key, value) => {
54
- if (typeof value === 'bigint')
55
- return resourceIdToString(value as OptionalAnyResourceId);
50
+ if (typeof value === "bigint") return resourceIdToString(value as OptionalAnyResourceId);
56
51
  else if (
57
- ArrayBuffer.isView(value)
58
- || value instanceof Int8Array
59
- || value instanceof Uint8Array
60
- || value instanceof Uint8ClampedArray
61
- || value instanceof Int16Array
62
- || value instanceof Uint16Array
63
- || value instanceof Int32Array
64
- || value instanceof Uint32Array
65
- || value instanceof Float32Array
66
- || value instanceof Float64Array
67
- || value instanceof BigInt64Array
68
- || value instanceof BigUint64Array
52
+ ArrayBuffer.isView(value) ||
53
+ value instanceof Int8Array ||
54
+ value instanceof Uint8Array ||
55
+ value instanceof Uint8ClampedArray ||
56
+ value instanceof Int16Array ||
57
+ value instanceof Uint16Array ||
58
+ value instanceof Int32Array ||
59
+ value instanceof Uint32Array ||
60
+ value instanceof Float32Array ||
61
+ value instanceof Float64Array ||
62
+ value instanceof BigInt64Array ||
63
+ value instanceof BigUint64Array
69
64
  )
70
- return Buffer.from(value.buffer, value.byteOffset, value.byteLength).toString('base64');
71
- else if (Buffer.isBuffer(value))
72
- return value.toString('base64');
65
+ return Buffer.from(value.buffer, value.byteOffset, value.byteLength).toString("base64");
66
+ else if (Buffer.isBuffer(value)) return value.toString("base64");
73
67
 
74
68
  return value;
75
69
  });
@@ -108,26 +102,31 @@ export class Project {
108
102
  this.navigationStates,
109
103
  env,
110
104
  ).withPreCalculatedValueTree();
111
- this.overviewLight = projectOverviewLight(projectTree.entry())
112
- .withPreCalculatedValueTree();
105
+ this.overviewLight = projectOverviewLight(projectTree.entry()).withPreCalculatedValueTree();
113
106
  this.rid = rid;
114
107
  this.refreshLoopResult = this.refreshLoop();
115
108
  this.refreshLoopResult.catch((err) => {
116
- env.logger.warn(new Error('Error during refresh loop', { cause: err })); // TODO (safe voiding for now)
109
+ env.logger.warn(new Error("Error during refresh loop", { cause: err })); // TODO (safe voiding for now)
117
110
  });
118
111
  this.activeConfigs = activeConfigs(projectTree.entry(), env);
119
112
  }
120
113
 
121
114
  get projectLockId(): string {
122
- return 'project:' + this.rid.toString();
115
+ return "project:" + this.rid.toString();
123
116
  }
124
117
 
125
118
  private async refreshLoop(): Promise<void> {
126
119
  while (!this.destroyed) {
127
120
  try {
128
- await withProject(this.env.projectHelper, this.env.pl, this.rid, (prj) => {
129
- prj.doRefresh(this.env.ops.stagingRenderingRate);
130
- }, { name: 'doRefresh', lockId: this.projectLockId });
121
+ await withProject(
122
+ this.env.projectHelper,
123
+ this.env.pl,
124
+ this.rid,
125
+ (prj) => {
126
+ prj.doRefresh(this.env.ops.stagingRenderingRate);
127
+ },
128
+ { name: "doRefresh", lockId: this.projectLockId },
129
+ );
131
130
  await this.activeConfigs.getValue();
132
131
  await setTimeout(this.env.ops.projectRefreshInterval, this.abortController.signal);
133
132
 
@@ -146,13 +145,13 @@ export class Project {
146
145
  // If we're destroyed, exit gracefully regardless of error type
147
146
  if (this.destroyed) {
148
147
  // Log just in case, to help with debugging if something unexpected happens during shutdown
149
- this.env.logger.warn(new Error('Error during refresh loop shutdown', { cause: e }));
148
+ this.env.logger.warn(new Error("Error during refresh loop shutdown", { cause: e }));
150
149
  break;
151
150
  }
152
151
 
153
152
  if (isNotFoundError(e)) {
154
153
  console.warn(
155
- 'project refresh routine terminated, because project was externally deleted',
154
+ "project refresh routine terminated, because project was externally deleted",
156
155
  );
157
156
  break;
158
157
  } else if (isTimeoutOrCancelError(e)) {
@@ -160,7 +159,7 @@ export class Project {
160
159
  } else {
161
160
  // TODO: This stops the refresh loop permanently, leaving the project broken.
162
161
  // Need to decide how to handle this case.
163
- throw new Error('Unexpected exception', { cause: e });
162
+ throw new Error("Unexpected exception", { cause: e });
164
163
  }
165
164
  }
166
165
  }
@@ -189,29 +188,43 @@ export class Project {
189
188
  const blockCfg = extractConfig(blockCfgContainer); // full content of this var should never be persisted
190
189
 
191
190
  // Build NewBlockSpec based on model API version
192
- const newBlockSpec = blockCfg.modelAPIVersion === 2
193
- ? { storageMode: 'fromModel' as const, blockPack: preparedBp }
194
- : { storageMode: 'legacy' as const, blockPack: preparedBp, legacyState: canonicalize({ args: blockCfg.initialArgs, uiState: blockCfg.initialUiState })! };
191
+ const newBlockSpec =
192
+ blockCfg.modelAPIVersion === 2
193
+ ? { storageMode: "fromModel" as const, blockPack: preparedBp }
194
+ : {
195
+ storageMode: "legacy" as const,
196
+ blockPack: preparedBp,
197
+ legacyState: canonicalize({
198
+ args: blockCfg.initialArgs,
199
+ uiState: blockCfg.initialUiState,
200
+ })!,
201
+ };
195
202
 
196
- await withProjectAuthored(this.env.projectHelper, this.env.pl, this.rid, author, (mut) => {
197
- return mut.addBlock(
198
- {
199
- id: blockId,
200
- label: blockLabel,
201
- renderingMode: blockCfg.renderingMode,
203
+ await withProjectAuthored(
204
+ this.env.projectHelper,
205
+ this.env.pl,
206
+ this.rid,
207
+ author,
208
+ (mut) => {
209
+ return mut.addBlock(
210
+ {
211
+ id: blockId,
212
+ label: blockLabel,
213
+ renderingMode: blockCfg.renderingMode,
214
+ },
215
+ newBlockSpec,
216
+ before,
217
+ );
218
+ },
219
+ {
220
+ retryOptions: {
221
+ ...DefaultRetryOptions,
222
+ backoffMultiplier: DefaultRetryOptions.backoffMultiplier * 1.1,
202
223
  },
203
- newBlockSpec,
204
- before,
205
- );
206
- },
207
- {
208
- retryOptions: {
209
- ...DefaultRetryOptions,
210
- backoffMultiplier: DefaultRetryOptions.backoffMultiplier * 1.1,
224
+ name: "addBlock",
225
+ lockId: this.projectLockId,
211
226
  },
212
- name: 'addBlock',
213
- lockId: this.projectLockId,
214
- });
227
+ );
215
228
 
216
229
  await this.projectTree.refreshState();
217
230
 
@@ -236,9 +249,13 @@ export class Project {
236
249
  author: AuthorMarker | undefined = undefined,
237
250
  newBlockId: string = randomUUID(),
238
251
  ): Promise<string> {
239
- await withProjectAuthored(this.env.projectHelper, this.env.pl, this.rid, author, (mut) =>
240
- mut.duplicateBlock(originalBlockId, newBlockId, before),
241
- { name: 'duplicateBlock', lockId: this.projectLockId },
252
+ await withProjectAuthored(
253
+ this.env.projectHelper,
254
+ this.env.pl,
255
+ this.rid,
256
+ author,
257
+ (mut) => mut.duplicateBlock(originalBlockId, newBlockId, before),
258
+ { name: "duplicateBlock", lockId: this.projectLockId },
242
259
  );
243
260
  await this.projectTree.refreshState();
244
261
 
@@ -256,27 +273,41 @@ export class Project {
256
273
  author?: AuthorMarker,
257
274
  ): Promise<void> {
258
275
  const preparedBp = await this.env.bpPreparer.prepare(blockPackSpec);
259
- const blockCfg = extractConfig(await this.env.bpPreparer.getBlockConfigContainer(blockPackSpec));
276
+ const blockCfg = extractConfig(
277
+ await this.env.bpPreparer.getBlockConfigContainer(blockPackSpec),
278
+ );
260
279
  // resetState signals to mutator to reset storage
261
280
  // For v2+ blocks: mutator gets initial storage directly via getInitialStorageInVM
262
281
  // For v1 blocks: we pass the legacy state format
263
282
  const resetState = resetArgs
264
- ? { state: blockCfg.modelAPIVersion === 2 ? {} : { args: blockCfg.initialArgs, uiState: blockCfg.initialUiState } }
283
+ ? {
284
+ state:
285
+ blockCfg.modelAPIVersion === 2
286
+ ? {}
287
+ : { args: blockCfg.initialArgs, uiState: blockCfg.initialUiState },
288
+ }
265
289
  : undefined;
266
- await withProjectAuthored(this.env.projectHelper, this.env.pl, this.rid, author, (mut) =>
267
- mut.migrateBlockPack(
268
- blockId,
269
- preparedBp,
270
- resetState,
271
- ),
272
- { name: 'updateBlockPack', lockId: this.projectLockId },
290
+ await withProjectAuthored(
291
+ this.env.projectHelper,
292
+ this.env.pl,
293
+ this.rid,
294
+ author,
295
+ (mut) => mut.migrateBlockPack(blockId, preparedBp, resetState),
296
+ { name: "updateBlockPack", lockId: this.projectLockId },
273
297
  );
274
298
  await this.projectTree.refreshState();
275
299
  }
276
300
 
277
301
  /** Deletes a block with all associated data. */
278
302
  public async deleteBlock(blockId: string, author?: AuthorMarker): Promise<void> {
279
- await withProjectAuthored(this.env.projectHelper, this.env.pl, this.rid, author, (mut) => mut.deleteBlock(blockId), { name: 'deleteBlock', lockId: this.projectLockId });
303
+ await withProjectAuthored(
304
+ this.env.projectHelper,
305
+ this.env.pl,
306
+ this.rid,
307
+ author,
308
+ (mut) => mut.deleteBlock(blockId),
309
+ { name: "deleteBlock", lockId: this.projectLockId },
310
+ );
280
311
  this.navigationStates.deleteBlock(blockId);
281
312
  await this.projectTree.refreshState();
282
313
  }
@@ -288,29 +319,36 @@ export class Project {
288
319
  * an error will be thrown instead.
289
320
  */
290
321
  public async reorderBlocks(blocks: string[], author?: AuthorMarker): Promise<void> {
291
- await withProjectAuthored(this.env.projectHelper, this.env.pl, this.rid, author, (mut) => {
292
- const currentStructure = mut.structure;
293
- if (currentStructure.groups.length !== 1)
294
- throw new Error('Unexpected project structure, non-singular block group');
295
- const currentGroup = currentStructure.groups[0];
296
- if (currentGroup.blocks.length !== blocks.length)
297
- throw new Error(`Length mismatch: ${currentGroup.blocks.length} !== ${blocks.length}`);
298
- if (new Set<string>(blocks).size !== blocks.length) throw new Error(`Repeated block ids`);
299
- const newStructure: ProjectStructure = {
300
- groups: [
301
- {
302
- id: currentGroup.id,
303
- label: currentGroup.label,
304
- blocks: blocks.map((blockId) => {
305
- const block = currentGroup.blocks.find((b) => b.id === blockId);
306
- if (block === undefined) throw new Error(`Can't find block: ${blockId}`);
307
- return block;
308
- }),
309
- },
310
- ],
311
- };
312
- mut.updateStructure(newStructure);
313
- }, { name: 'reorderBlocks', lockId: this.projectLockId });
322
+ await withProjectAuthored(
323
+ this.env.projectHelper,
324
+ this.env.pl,
325
+ this.rid,
326
+ author,
327
+ (mut) => {
328
+ const currentStructure = mut.structure;
329
+ if (currentStructure.groups.length !== 1)
330
+ throw new Error("Unexpected project structure, non-singular block group");
331
+ const currentGroup = currentStructure.groups[0];
332
+ if (currentGroup.blocks.length !== blocks.length)
333
+ throw new Error(`Length mismatch: ${currentGroup.blocks.length} !== ${blocks.length}`);
334
+ if (new Set<string>(blocks).size !== blocks.length) throw new Error(`Repeated block ids`);
335
+ const newStructure: ProjectStructure = {
336
+ groups: [
337
+ {
338
+ id: currentGroup.id,
339
+ label: currentGroup.label,
340
+ blocks: blocks.map((blockId) => {
341
+ const block = currentGroup.blocks.find((b) => b.id === blockId);
342
+ if (block === undefined) throw new Error(`Can't find block: ${blockId}`);
343
+ return block;
344
+ }),
345
+ },
346
+ ],
347
+ };
348
+ mut.updateStructure(newStructure);
349
+ },
350
+ { name: "reorderBlocks", lockId: this.projectLockId },
351
+ );
314
352
  await this.projectTree.refreshState();
315
353
  }
316
354
 
@@ -320,7 +358,13 @@ export class Project {
320
358
  * stale state.
321
359
  * */
322
360
  public async runBlock(blockId: string): Promise<void> {
323
- await withProject(this.env.projectHelper, this.env.pl, this.rid, (mut) => mut.renderProduction([blockId], true), { name: 'runBlock', lockId: this.projectLockId });
361
+ await withProject(
362
+ this.env.projectHelper,
363
+ this.env.pl,
364
+ this.rid,
365
+ (mut) => mut.renderProduction([blockId], true),
366
+ { name: "runBlock", lockId: this.projectLockId },
367
+ );
324
368
  await this.projectTree.refreshState();
325
369
  }
326
370
 
@@ -330,7 +374,13 @@ export class Project {
330
374
  * calculated.
331
375
  * */
332
376
  public async stopBlock(blockId: string): Promise<void> {
333
- await withProject(this.env.projectHelper, this.env.pl, this.rid, (mut) => mut.stopProduction(blockId), { name: 'stopBlock', lockId: this.projectLockId });
377
+ await withProject(
378
+ this.env.projectHelper,
379
+ this.env.pl,
380
+ this.rid,
381
+ (mut) => mut.stopProduction(blockId),
382
+ { name: "stopBlock", lockId: this.projectLockId },
383
+ );
334
384
  await this.projectTree.refreshState();
335
385
  }
336
386
 
@@ -342,10 +392,17 @@ export class Project {
342
392
  * in collaborative editing scenario.
343
393
  * */
344
394
  public async setBlockArgs(blockId: string, args: unknown, author?: AuthorMarker) {
345
- await withProjectAuthored(this.env.projectHelper, this.env.pl, this.rid, author, (mut) => {
346
- const state = mut.mergeBlockState(blockId, { args });
347
- mut.setStates([{ modelAPIVersion: 1, blockId, state }]);
348
- }, { name: 'setBlockArgs', lockId: this.projectLockId });
395
+ await withProjectAuthored(
396
+ this.env.projectHelper,
397
+ this.env.pl,
398
+ this.rid,
399
+ author,
400
+ (mut) => {
401
+ const state = mut.mergeBlockState(blockId, { args });
402
+ mut.setStates([{ modelAPIVersion: 1, blockId, state }]);
403
+ },
404
+ { name: "setBlockArgs", lockId: this.projectLockId },
405
+ );
349
406
  await this.projectTree.refreshState();
350
407
  }
351
408
 
@@ -357,10 +414,17 @@ export class Project {
357
414
  * in collaborative editing scenario.
358
415
  * */
359
416
  public async setUiState(blockId: string, uiState: unknown, author?: AuthorMarker) {
360
- await withProjectAuthored(this.env.projectHelper, this.env.pl, this.rid, author, (mut) => {
361
- const state = mut.mergeBlockState(blockId, { uiState });
362
- mut.setStates([{ modelAPIVersion: 1, blockId, state }]);
363
- }, { name: 'setUiState', lockId: this.projectLockId });
417
+ await withProjectAuthored(
418
+ this.env.projectHelper,
419
+ this.env.pl,
420
+ this.rid,
421
+ author,
422
+ (mut) => {
423
+ const state = mut.mergeBlockState(blockId, { uiState });
424
+ mut.setStates([{ modelAPIVersion: 1, blockId, state }]);
425
+ },
426
+ { name: "setUiState", lockId: this.projectLockId },
427
+ );
364
428
  await this.projectTree.refreshState();
365
429
  }
366
430
 
@@ -379,9 +443,16 @@ export class Project {
379
443
  ) {
380
444
  // Normalize to unified state format { args, uiState } for v1/v2 blocks
381
445
  const state = { args, uiState };
382
- await withProjectAuthored(this.env.projectHelper, this.env.pl, this.rid, author, (mut) => {
383
- mut.setStates([{ modelAPIVersion: 1, blockId, state }]);
384
- }, { name: 'setBlockArgsAndUiState', lockId: this.projectLockId });
446
+ await withProjectAuthored(
447
+ this.env.projectHelper,
448
+ this.env.pl,
449
+ this.rid,
450
+ author,
451
+ (mut) => {
452
+ mut.setStates([{ modelAPIVersion: 1, blockId, state }]);
453
+ },
454
+ { name: "setBlockArgsAndUiState", lockId: this.projectLockId },
455
+ );
385
456
  await this.projectTree.refreshState();
386
457
  }
387
458
 
@@ -403,18 +474,34 @@ export class Project {
403
474
  * @param payload - Storage mutation payload with operation and value
404
475
  * @param author - Optional author marker for collaborative editing
405
476
  */
406
- public async mutateBlockStorage(blockId: string, payload: { operation: string; value: unknown }, author?: AuthorMarker) {
407
- await withProjectAuthored(this.env.projectHelper, this.env.pl, this.rid, author, (mut) =>
408
- mut.setStates([{ modelAPIVersion: 2, blockId, payload }]),
409
- { name: 'mutateBlockStorage', lockId: this.projectLockId });
477
+ public async mutateBlockStorage(
478
+ blockId: string,
479
+ payload: { operation: string; value: unknown },
480
+ author?: AuthorMarker,
481
+ ) {
482
+ await withProjectAuthored(
483
+ this.env.projectHelper,
484
+ this.env.pl,
485
+ this.rid,
486
+ author,
487
+ (mut) => mut.setStates([{ modelAPIVersion: 2, blockId, payload }]),
488
+ { name: "mutateBlockStorage", lockId: this.projectLockId },
489
+ );
410
490
  await this.projectTree.refreshState();
411
491
  }
412
492
 
413
493
  /** Update block settings */
414
494
  public async setBlockSettings(blockId: string, newValue: BlockSettings) {
415
- await withProjectAuthored(this.env.projectHelper, this.env.pl, this.rid, undefined, (mut) => {
416
- mut.setBlockSettings(blockId, newValue);
417
- }, { name: 'setBlockSettings' });
495
+ await withProjectAuthored(
496
+ this.env.projectHelper,
497
+ this.env.pl,
498
+ this.rid,
499
+ undefined,
500
+ (mut) => {
501
+ mut.setBlockSettings(blockId, newValue);
502
+ },
503
+ { name: "setBlockSettings" },
504
+ );
418
505
  await this.projectTree.refreshState();
419
506
  }
420
507
 
@@ -426,18 +513,25 @@ export class Project {
426
513
  * @param rawStorageJson Raw storage as JSON string
427
514
  */
428
515
  public async setBlockStorageRaw(blockId: string, rawStorageJson: string): Promise<void> {
429
- await withProjectAuthored(this.env.projectHelper, this.env.pl, this.rid, undefined, (mut) => {
430
- mut.setBlockStorageRaw(blockId, rawStorageJson);
431
- }, { name: 'setBlockStorageRaw' });
516
+ await withProjectAuthored(
517
+ this.env.projectHelper,
518
+ this.env.pl,
519
+ this.rid,
520
+ undefined,
521
+ (mut) => {
522
+ mut.setBlockStorageRaw(blockId, rawStorageJson);
523
+ },
524
+ { name: "setBlockStorageRaw" },
525
+ );
432
526
  await this.projectTree.refreshState();
433
527
  }
434
528
 
435
529
  /** Resets arguments and ui state of the block to initial state */
436
530
  public async resetBlockArgsAndUiState(blockId: string, author?: AuthorMarker): Promise<void> {
437
- await this.env.pl.withWriteTx('BlockInputsReset', async (tx) => {
531
+ await this.env.pl.withWriteTx("BlockInputsReset", async (tx) => {
438
532
  // reading default arg values from block pack
439
533
  const bpHolderRid = ensureResourceIdNotNull(
440
- (await tx.getField(field(this.rid, projectFieldName(blockId, 'blockPack')))).value,
534
+ (await tx.getField(field(this.rid, projectFieldName(blockId, "blockPack")))).value,
441
535
  );
442
536
  const bpRid = ensureResourceIdNotNull(
443
537
  (await tx.getField(field(bpHolderRid, Pl.HolderRefField))).value,
@@ -445,16 +539,23 @@ export class Project {
445
539
  const bpData = await tx.getResourceData(bpRid, false);
446
540
  const config = extractConfig(cachedDeserialize<BlockPackInfo>(notEmpty(bpData.data)).config);
447
541
 
448
- await withProjectAuthored(this.env.projectHelper, tx, this.rid, author, (prj) => {
449
- if (config.modelAPIVersion === 2) {
450
- // V2+: Reset to initial storage via VM
451
- prj.resetToInitialStorage(blockId);
452
- } else {
453
- // V1: Use legacy state format
454
- const initialState = { args: config.initialArgs, uiState: config.initialUiState };
455
- prj.setStates([{ modelAPIVersion: 1, blockId, state: initialState }]);
456
- }
457
- }, { name: 'resetBlockArgsAndUiState', lockId: this.projectLockId });
542
+ await withProjectAuthored(
543
+ this.env.projectHelper,
544
+ tx,
545
+ this.rid,
546
+ author,
547
+ (prj) => {
548
+ if (config.modelAPIVersion === 2) {
549
+ // V2+: Reset to initial storage via VM
550
+ prj.resetToInitialStorage(blockId);
551
+ } else {
552
+ // V1: Use legacy state format
553
+ const initialState = { args: config.initialArgs, uiState: config.initialUiState };
554
+ prj.setStates([{ modelAPIVersion: 1, blockId, state: initialState }]);
555
+ }
556
+ },
557
+ { name: "resetBlockArgsAndUiState", lockId: this.projectLockId },
558
+ );
458
559
  await tx.commit();
459
560
  });
460
561
  await this.projectTree.refreshState();
@@ -481,9 +582,8 @@ export class Project {
481
582
  const sdkVersion = blockOverview?.sdkVersion;
482
583
  const storageDebugView = blockOverview?.storageDebugView;
483
584
  const toString = sdkVersion && shouldStillUseStringErrors(sdkVersion);
484
- const newOutputs = toString && v.outputs !== undefined
485
- ? convertErrorsToStrings(v.outputs)
486
- : v.outputs;
585
+ const newOutputs =
586
+ toString && v.outputs !== undefined ? convertErrorsToStrings(v.outputs) : v.outputs;
487
587
 
488
588
  return {
489
589
  ...v.parameters,
@@ -540,7 +640,9 @@ export class Project {
540
640
  await this.refreshLoopResult;
541
641
  } catch (e: unknown) {
542
642
  // Error was already logged in the constructor's catch handler, but log again for context
543
- this.env.logger.warn(new Error('Refresh loop had terminated with error before destroy', { cause: e }));
643
+ this.env.logger.warn(
644
+ new Error("Refresh loop had terminated with error before destroy", { cause: e }),
645
+ );
544
646
  }
545
647
 
546
648
  // terminating the synchronized project tree
@@ -549,7 +651,7 @@ export class Project {
549
651
  } catch (e: unknown) {
550
652
  // TODO: SynchronizedTreeState.terminate() can throw if mainLoop had an error before termination
551
653
  // Log error but continue cleanup - we must clean up remaining resources
552
- this.env.logger.warn(new Error('Project tree termination failed', { cause: e }));
654
+ this.env.logger.warn(new Error("Project tree termination failed", { cause: e }));
553
655
  }
554
656
 
555
657
  // the following will deregister all external resource holders, like
@@ -576,7 +678,7 @@ export class Project {
576
678
  await applyProjectMigrations(env.pl, rid);
577
679
 
578
680
  // Doing a no-op mutation to apply all migration and schema fixes
579
- await withProject(env.projectHelper, env.pl, rid, (_) => {}, { name: 'init' });
681
+ await withProject(env.projectHelper, env.pl, rid, (_) => {}, { name: "init" });
580
682
 
581
683
  // Loading project tree
582
684
  const projectTree = await SynchronizedTreeState.init(
@@ -611,14 +713,13 @@ function projectTreePruning(r: ExtendedResourceData): FieldData[] {
611
713
  // }
612
714
  // )
613
715
  // );
614
- if (r.type.name.startsWith('StreamWorkdir/'))
615
- return [];
716
+ if (r.type.name.startsWith("StreamWorkdir/")) return [];
616
717
  switch (r.type.name) {
617
- case 'BlockPackCustom':
618
- return r.fields.filter((f) => f.name !== 'template');
619
- case 'UserProject':
620
- return r.fields.filter((f) => !f.name.startsWith('__serviceTemplate'));
621
- case 'Blob':
718
+ case "BlockPackCustom":
719
+ return r.fields.filter((f) => f.name !== "template");
720
+ case "UserProject":
721
+ return r.fields.filter((f) => !f.name.startsWith("__serviceTemplate"));
722
+ case "Blob":
622
723
  return [];
623
724
  default:
624
725
  return r.fields;
@@ -629,20 +730,20 @@ function projectTreePruning(r: ExtendedResourceData): FieldData[] {
629
730
  * ErrorLike errors to strings like it was.
630
731
  * We need it for keeping old blocks and new UI compatibility. */
631
732
  function shouldStillUseStringErrors(sdkVersion: string): boolean {
632
- return !isVersionGreater(sdkVersion, '1.26.0');
733
+ return !isVersionGreater(sdkVersion, "1.26.0");
633
734
  }
634
735
 
635
736
  /** Checks if sdk version is greater that a target version. */
636
737
  function isVersionGreater(sdkVersion: string, targetVersion: string): boolean {
637
- const version = sdkVersion.split('.').map(Number);
638
- const target = targetVersion.split('.').map(Number);
738
+ const version = sdkVersion.split(".").map(Number);
739
+ const target = targetVersion.split(".").map(Number);
639
740
 
640
741
  return (
641
- version[0] > target[0]
642
- || (version[0] === target[0] && version[1] > target[1])
643
- || (version[0] === target[0] && version[1] === target[1] && version[2] > target[2])
742
+ version[0] > target[0] ||
743
+ (version[0] === target[0] && version[1] > target[1]) ||
744
+ (version[0] === target[0] && version[1] === target[1] && version[2] > target[2])
644
745
  );
645
- };
746
+ }
646
747
 
647
748
  /** Converts ErrorLike errors to strings in the outputs like it was in old ML versions. */
648
749
  function convertErrorsToStrings(
@@ -658,9 +759,9 @@ function convertErrorsToStrings(
658
759
  result[key] = {
659
760
  ok: false,
660
761
  errors: val.errors.map((e) => {
661
- if (typeof e === 'string') {
762
+ if (typeof e === "string") {
662
763
  return e;
663
- } else if (e.type == 'PlError' && e.fullMessage !== undefined) {
764
+ } else if (e.type == "PlError" && e.fullMessage !== undefined) {
664
765
  return e.fullMessage;
665
766
  }
666
767
  return e.message;