@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.
- package/dist/block_registry/index.d.ts +3 -3
- package/dist/block_registry/registry-v2-provider.cjs.map +1 -1
- package/dist/block_registry/registry-v2-provider.d.ts +2 -2
- package/dist/block_registry/registry-v2-provider.js.map +1 -1
- package/dist/block_registry/registry.cjs +54 -53
- package/dist/block_registry/registry.cjs.map +1 -1
- package/dist/block_registry/registry.d.ts +4 -4
- package/dist/block_registry/registry.d.ts.map +1 -1
- package/dist/block_registry/registry.js +54 -53
- package/dist/block_registry/registry.js.map +1 -1
- package/dist/block_registry/watcher.cjs +12 -12
- package/dist/block_registry/watcher.cjs.map +1 -1
- package/dist/block_registry/watcher.d.ts +6 -6
- package/dist/block_registry/watcher.d.ts.map +1 -1
- package/dist/block_registry/watcher.js +12 -12
- package/dist/block_registry/watcher.js.map +1 -1
- package/dist/block_registry/well_known_registries.cjs +6 -6
- package/dist/block_registry/well_known_registries.cjs.map +1 -1
- package/dist/block_registry/well_known_registries.d.ts +1 -1
- package/dist/block_registry/well_known_registries.js +6 -6
- package/dist/block_registry/well_known_registries.js.map +1 -1
- package/dist/cfg_render/executor.cjs +11 -11
- package/dist/cfg_render/executor.cjs.map +1 -1
- package/dist/cfg_render/executor.d.ts +5 -5
- package/dist/cfg_render/executor.js +11 -11
- package/dist/cfg_render/executor.js.map +1 -1
- package/dist/cfg_render/operation.d.ts +5 -5
- package/dist/cfg_render/renderer.cjs +74 -75
- package/dist/cfg_render/renderer.cjs.map +1 -1
- package/dist/cfg_render/renderer.d.ts +2 -2
- package/dist/cfg_render/renderer.d.ts.map +1 -1
- package/dist/cfg_render/renderer.js +74 -75
- package/dist/cfg_render/renderer.js.map +1 -1
- package/dist/cfg_render/traverse.cjs +27 -27
- package/dist/cfg_render/traverse.cjs.map +1 -1
- package/dist/cfg_render/traverse.d.ts +1 -1
- package/dist/cfg_render/traverse.js +27 -27
- package/dist/cfg_render/traverse.js.map +1 -1
- package/dist/cfg_render/util.cjs +1 -1
- package/dist/cfg_render/util.cjs.map +1 -1
- package/dist/cfg_render/util.d.ts +1 -1
- package/dist/cfg_render/util.js +1 -1
- package/dist/cfg_render/util.js.map +1 -1
- package/dist/debug/index.cjs +4 -2
- package/dist/debug/index.cjs.map +1 -1
- package/dist/debug/index.d.ts +2 -2
- package/dist/debug/index.d.ts.map +1 -1
- package/dist/debug/index.js +4 -2
- package/dist/debug/index.js.map +1 -1
- package/dist/dev_env/index.cjs +8 -8
- package/dist/dev_env/index.cjs.map +1 -1
- package/dist/dev_env/index.js +8 -8
- package/dist/dev_env/index.js.map +1 -1
- package/dist/dev_env/util.cjs +1 -1
- package/dist/dev_env/util.cjs.map +1 -1
- package/dist/dev_env/util.d.ts +1 -1
- package/dist/dev_env/util.js +1 -1
- package/dist/dev_env/util.js.map +1 -1
- package/dist/index.d.ts +16 -16
- package/dist/js_render/computable_context.cjs +78 -78
- package/dist/js_render/computable_context.cjs.map +1 -1
- package/dist/js_render/computable_context.d.ts +9 -9
- package/dist/js_render/computable_context.d.ts.map +1 -1
- package/dist/js_render/computable_context.js +78 -78
- package/dist/js_render/computable_context.js.map +1 -1
- package/dist/js_render/context.cjs +33 -27
- package/dist/js_render/context.cjs.map +1 -1
- package/dist/js_render/context.d.ts +7 -7
- package/dist/js_render/context.d.ts.map +1 -1
- package/dist/js_render/context.js +33 -27
- package/dist/js_render/context.js.map +1 -1
- package/dist/js_render/index.cjs +10 -6
- package/dist/js_render/index.cjs.map +1 -1
- package/dist/js_render/index.d.ts +6 -6
- package/dist/js_render/index.d.ts.map +1 -1
- package/dist/js_render/index.js +10 -6
- package/dist/js_render/index.js.map +1 -1
- package/dist/middle_layer/active_cfg.cjs.map +1 -1
- package/dist/middle_layer/active_cfg.d.ts +3 -3
- package/dist/middle_layer/active_cfg.d.ts.map +1 -1
- package/dist/middle_layer/active_cfg.js.map +1 -1
- package/dist/middle_layer/block.cjs +1 -1
- package/dist/middle_layer/block.cjs.map +1 -1
- package/dist/middle_layer/block.d.ts +6 -6
- package/dist/middle_layer/block.d.ts.map +1 -1
- package/dist/middle_layer/block.js +1 -1
- package/dist/middle_layer/block.js.map +1 -1
- package/dist/middle_layer/block_ctx.cjs +9 -9
- package/dist/middle_layer/block_ctx.cjs.map +1 -1
- package/dist/middle_layer/block_ctx.d.ts +6 -6
- package/dist/middle_layer/block_ctx.d.ts.map +1 -1
- package/dist/middle_layer/block_ctx.js +9 -9
- package/dist/middle_layer/block_ctx.js.map +1 -1
- package/dist/middle_layer/block_ctx_unsafe.cjs +1 -1
- package/dist/middle_layer/block_ctx_unsafe.cjs.map +1 -1
- package/dist/middle_layer/block_ctx_unsafe.d.ts +5 -5
- package/dist/middle_layer/block_ctx_unsafe.js +1 -1
- package/dist/middle_layer/block_ctx_unsafe.js.map +1 -1
- package/dist/middle_layer/driver_kit.cjs +1 -2
- package/dist/middle_layer/driver_kit.cjs.map +1 -1
- package/dist/middle_layer/driver_kit.d.ts +7 -7
- package/dist/middle_layer/driver_kit.d.ts.map +1 -1
- package/dist/middle_layer/driver_kit.js +1 -2
- package/dist/middle_layer/driver_kit.js.map +1 -1
- package/dist/middle_layer/frontend_path.cjs +5 -5
- package/dist/middle_layer/frontend_path.cjs.map +1 -1
- package/dist/middle_layer/frontend_path.d.ts +4 -4
- package/dist/middle_layer/frontend_path.d.ts.map +1 -1
- package/dist/middle_layer/frontend_path.js +5 -5
- package/dist/middle_layer/frontend_path.js.map +1 -1
- package/dist/middle_layer/index.d.ts +4 -4
- package/dist/middle_layer/middle_layer.cjs +11 -11
- package/dist/middle_layer/middle_layer.cjs.map +1 -1
- package/dist/middle_layer/middle_layer.d.ts +18 -18
- package/dist/middle_layer/middle_layer.d.ts.map +1 -1
- package/dist/middle_layer/middle_layer.js +11 -11
- package/dist/middle_layer/middle_layer.js.map +1 -1
- package/dist/middle_layer/navigation_states.cjs +2 -2
- package/dist/middle_layer/navigation_states.cjs.map +1 -1
- package/dist/middle_layer/navigation_states.d.ts +2 -2
- package/dist/middle_layer/navigation_states.js +2 -2
- package/dist/middle_layer/navigation_states.js.map +1 -1
- package/dist/middle_layer/ops.cjs +5 -5
- package/dist/middle_layer/ops.cjs.map +1 -1
- package/dist/middle_layer/ops.d.ts +11 -11
- package/dist/middle_layer/ops.d.ts.map +1 -1
- package/dist/middle_layer/ops.js +5 -5
- package/dist/middle_layer/ops.js.map +1 -1
- package/dist/middle_layer/project.cjs +71 -63
- package/dist/middle_layer/project.cjs.map +1 -1
- package/dist/middle_layer/project.d.ts +10 -10
- package/dist/middle_layer/project.d.ts.map +1 -1
- package/dist/middle_layer/project.js +71 -63
- package/dist/middle_layer/project.js.map +1 -1
- package/dist/middle_layer/project_list.cjs +2 -2
- package/dist/middle_layer/project_list.cjs.map +1 -1
- package/dist/middle_layer/project_list.d.ts +6 -6
- package/dist/middle_layer/project_list.d.ts.map +1 -1
- package/dist/middle_layer/project_list.js +2 -2
- package/dist/middle_layer/project_list.js.map +1 -1
- package/dist/middle_layer/project_overview.cjs +40 -40
- package/dist/middle_layer/project_overview.cjs.map +1 -1
- package/dist/middle_layer/project_overview.d.ts +5 -5
- package/dist/middle_layer/project_overview.d.ts.map +1 -1
- package/dist/middle_layer/project_overview.js +40 -40
- package/dist/middle_layer/project_overview.js.map +1 -1
- package/dist/middle_layer/project_overview_light.cjs.map +1 -1
- package/dist/middle_layer/project_overview_light.d.ts +2 -2
- package/dist/middle_layer/project_overview_light.d.ts.map +1 -1
- package/dist/middle_layer/project_overview_light.js.map +1 -1
- package/dist/middle_layer/render.cjs +1 -1
- package/dist/middle_layer/render.cjs.map +1 -1
- package/dist/middle_layer/render.d.ts +4 -4
- package/dist/middle_layer/render.js +1 -1
- package/dist/middle_layer/render.js.map +1 -1
- package/dist/middle_layer/render.test.d.ts +2 -2
- package/dist/middle_layer/types.d.ts +3 -3
- package/dist/middle_layer/util.cjs +9 -4
- package/dist/middle_layer/util.cjs.map +1 -1
- package/dist/middle_layer/util.d.ts +4 -4
- package/dist/middle_layer/util.d.ts.map +1 -1
- package/dist/middle_layer/util.js +9 -4
- package/dist/middle_layer/util.js.map +1 -1
- package/dist/model/args.cjs +19 -15
- package/dist/model/args.cjs.map +1 -1
- package/dist/model/args.d.ts +1 -1
- package/dist/model/args.d.ts.map +1 -1
- package/dist/model/args.js +19 -15
- package/dist/model/args.js.map +1 -1
- package/dist/model/block_pack.d.ts +2 -2
- package/dist/model/block_pack_spec.cjs +3 -3
- package/dist/model/block_pack_spec.cjs.map +1 -1
- package/dist/model/block_pack_spec.d.ts +8 -8
- package/dist/model/block_pack_spec.js +3 -3
- package/dist/model/block_pack_spec.js.map +1 -1
- package/dist/model/block_storage_helper.cjs +4 -4
- package/dist/model/block_storage_helper.cjs.map +1 -1
- package/dist/model/block_storage_helper.d.ts +2 -2
- package/dist/model/block_storage_helper.d.ts.map +1 -1
- package/dist/model/block_storage_helper.js +4 -4
- package/dist/model/block_storage_helper.js.map +1 -1
- package/dist/model/index.d.ts +3 -3
- package/dist/model/project_helper.cjs +30 -13
- package/dist/model/project_helper.cjs.map +1 -1
- package/dist/model/project_helper.d.ts +4 -4
- package/dist/model/project_helper.d.ts.map +1 -1
- package/dist/model/project_helper.js +30 -13
- package/dist/model/project_helper.js.map +1 -1
- package/dist/model/project_model.cjs +23 -23
- package/dist/model/project_model.cjs.map +1 -1
- package/dist/model/project_model.d.ts +6 -6
- package/dist/model/project_model.d.ts.map +1 -1
- package/dist/model/project_model.js +23 -23
- package/dist/model/project_model.js.map +1 -1
- package/dist/model/project_model_util.cjs +2 -2
- package/dist/model/project_model_util.cjs.map +1 -1
- package/dist/model/project_model_util.d.ts +3 -3
- package/dist/model/project_model_util.d.ts.map +1 -1
- package/dist/model/project_model_util.js +2 -2
- package/dist/model/project_model_util.js.map +1 -1
- package/dist/model/project_model_v1.cjs +2 -2
- package/dist/model/project_model_v1.cjs.map +1 -1
- package/dist/model/project_model_v1.js +2 -2
- package/dist/model/project_model_v1.js.map +1 -1
- package/dist/model/template_spec.d.ts +5 -5
- package/dist/mutator/block-pack/block_pack.cjs +43 -43
- package/dist/mutator/block-pack/block_pack.cjs.map +1 -1
- package/dist/mutator/block-pack/block_pack.d.ts +6 -6
- package/dist/mutator/block-pack/block_pack.d.ts.map +1 -1
- package/dist/mutator/block-pack/block_pack.js +43 -43
- package/dist/mutator/block-pack/block_pack.js.map +1 -1
- package/dist/mutator/block-pack/frontend.cjs +2 -2
- package/dist/mutator/block-pack/frontend.cjs.map +1 -1
- package/dist/mutator/block-pack/frontend.d.ts +2 -2
- package/dist/mutator/block-pack/frontend.d.ts.map +1 -1
- package/dist/mutator/block-pack/frontend.js +2 -2
- package/dist/mutator/block-pack/frontend.js.map +1 -1
- package/dist/mutator/context_export.cjs +5 -5
- package/dist/mutator/context_export.cjs.map +1 -1
- package/dist/mutator/context_export.d.ts +2 -2
- package/dist/mutator/context_export.d.ts.map +1 -1
- package/dist/mutator/context_export.js +5 -5
- package/dist/mutator/context_export.js.map +1 -1
- package/dist/mutator/migration.cjs +7 -7
- package/dist/mutator/migration.cjs.map +1 -1
- package/dist/mutator/migration.d.ts +1 -1
- package/dist/mutator/migration.d.ts.map +1 -1
- package/dist/mutator/migration.js +7 -7
- package/dist/mutator/migration.js.map +1 -1
- package/dist/mutator/project.cjs +147 -148
- package/dist/mutator/project.cjs.map +1 -1
- package/dist/mutator/project.d.ts +13 -13
- package/dist/mutator/project.d.ts.map +1 -1
- package/dist/mutator/project.js +147 -148
- package/dist/mutator/project.js.map +1 -1
- package/dist/mutator/template/direct_template_loader.cjs +16 -16
- package/dist/mutator/template/direct_template_loader.cjs.map +1 -1
- package/dist/mutator/template/direct_template_loader.d.ts +2 -2
- package/dist/mutator/template/direct_template_loader.d.ts.map +1 -1
- package/dist/mutator/template/direct_template_loader.js +16 -16
- package/dist/mutator/template/direct_template_loader.js.map +1 -1
- package/dist/mutator/template/direct_template_loader_v3.cjs +13 -13
- package/dist/mutator/template/direct_template_loader_v3.cjs.map +1 -1
- package/dist/mutator/template/direct_template_loader_v3.d.ts +3 -3
- package/dist/mutator/template/direct_template_loader_v3.d.ts.map +1 -1
- package/dist/mutator/template/direct_template_loader_v3.js +13 -13
- package/dist/mutator/template/direct_template_loader_v3.js.map +1 -1
- package/dist/mutator/template/render_block.cjs +7 -7
- package/dist/mutator/template/render_block.cjs.map +1 -1
- package/dist/mutator/template/render_block.d.ts +1 -1
- package/dist/mutator/template/render_block.d.ts.map +1 -1
- package/dist/mutator/template/render_block.js +7 -7
- package/dist/mutator/template/render_block.js.map +1 -1
- package/dist/mutator/template/render_template.cjs +10 -10
- package/dist/mutator/template/render_template.cjs.map +1 -1
- package/dist/mutator/template/render_template.d.ts +2 -2
- package/dist/mutator/template/render_template.js +10 -10
- package/dist/mutator/template/render_template.js.map +1 -1
- package/dist/mutator/template/template_loading.cjs +17 -17
- package/dist/mutator/template/template_loading.cjs.map +1 -1
- package/dist/mutator/template/template_loading.d.ts +2 -2
- package/dist/mutator/template/template_loading.js +17 -17
- package/dist/mutator/template/template_loading.js.map +1 -1
- package/dist/network_check/network_check.cjs +33 -32
- package/dist/network_check/network_check.cjs.map +1 -1
- package/dist/network_check/network_check.d.ts +6 -6
- package/dist/network_check/network_check.d.ts.map +1 -1
- package/dist/network_check/network_check.js +33 -32
- package/dist/network_check/network_check.js.map +1 -1
- package/dist/network_check/pings.cjs +3 -3
- package/dist/network_check/pings.cjs.map +1 -1
- package/dist/network_check/pings.d.ts +4 -4
- package/dist/network_check/pings.d.ts.map +1 -1
- package/dist/network_check/pings.js +3 -3
- package/dist/network_check/pings.js.map +1 -1
- package/dist/network_check/template.cjs +57 -44
- package/dist/network_check/template.cjs.map +1 -1
- package/dist/network_check/template.d.ts +8 -8
- package/dist/network_check/template.d.ts.map +1 -1
- package/dist/network_check/template.js +57 -44
- package/dist/network_check/template.js.map +1 -1
- package/dist/pool/data.cjs +45 -33
- package/dist/pool/data.cjs.map +1 -1
- package/dist/pool/data.d.ts +3 -3
- package/dist/pool/data.d.ts.map +1 -1
- package/dist/pool/data.js +45 -33
- package/dist/pool/data.js.map +1 -1
- package/dist/pool/driver.cjs +18 -16
- package/dist/pool/driver.cjs.map +1 -1
- package/dist/pool/driver.d.ts +5 -5
- package/dist/pool/driver.d.ts.map +1 -1
- package/dist/pool/driver.js +18 -16
- package/dist/pool/driver.js.map +1 -1
- package/dist/pool/index.d.ts +2 -2
- package/dist/pool/p_object_collection.cjs +5 -5
- package/dist/pool/p_object_collection.cjs.map +1 -1
- package/dist/pool/p_object_collection.d.ts +2 -2
- package/dist/pool/p_object_collection.d.ts.map +1 -1
- package/dist/pool/p_object_collection.js +5 -5
- package/dist/pool/p_object_collection.js.map +1 -1
- package/dist/pool/result_pool.cjs +6 -6
- package/dist/pool/result_pool.cjs.map +1 -1
- package/dist/pool/result_pool.d.ts +6 -6
- package/dist/pool/result_pool.d.ts.map +1 -1
- package/dist/pool/result_pool.js +6 -6
- package/dist/pool/result_pool.js.map +1 -1
- package/dist/test/block_packs.d.ts +2 -2
- package/dist/test/known_templates.d.ts +1 -1
- package/dist/worker/WorkerManager.cjs +7 -8
- package/dist/worker/WorkerManager.cjs.map +1 -1
- package/dist/worker/WorkerManager.d.ts +2 -2
- package/dist/worker/WorkerManager.d.ts.map +1 -1
- package/dist/worker/WorkerManager.js +7 -8
- package/dist/worker/WorkerManager.js.map +1 -1
- package/dist/worker/worker.cjs +6 -4
- package/dist/worker/worker.cjs.map +1 -1
- package/dist/worker/worker.js +6 -4
- package/dist/worker/worker.js.map +1 -1
- package/dist/worker/workerApi.cjs.map +1 -1
- package/dist/worker/workerApi.js.map +1 -1
- package/package.json +41 -41
- package/src/block_registry/index.ts +3 -3
- package/src/block_registry/registry-v2-provider.ts +2 -2
- package/src/block_registry/registry.test.ts +17 -17
- package/src/block_registry/registry.ts +55 -60
- package/src/block_registry/watcher.ts +24 -23
- package/src/block_registry/well_known_registries.ts +7 -7
- package/src/cfg_render/executor.test.ts +36 -36
- package/src/cfg_render/executor.ts +24 -24
- package/src/cfg_render/operation.ts +5 -5
- package/src/cfg_render/renderer.ts +96 -93
- package/src/cfg_render/traverse.ts +50 -50
- package/src/cfg_render/util.ts +3 -3
- package/src/debug/index.ts +6 -4
- package/src/dev_env/index.ts +16 -16
- package/src/dev_env/util.ts +3 -3
- package/src/index.ts +16 -16
- package/src/js_render/computable_context.ts +143 -126
- package/src/js_render/context.ts +72 -44
- package/src/js_render/index.ts +51 -24
- package/src/middle_layer/active_cfg.ts +14 -12
- package/src/middle_layer/block.ts +30 -23
- package/src/middle_layer/block_ctx.ts +27 -31
- package/src/middle_layer/block_ctx_unsafe.ts +9 -9
- package/src/middle_layer/driver_kit.ts +13 -19
- package/src/middle_layer/frontend_path.ts +18 -23
- package/src/middle_layer/index.ts +4 -4
- package/src/middle_layer/middle_layer.ts +57 -55
- package/src/middle_layer/navigation_states.ts +6 -6
- package/src/middle_layer/ops.ts +43 -42
- package/src/middle_layer/project.ts +274 -173
- package/src/middle_layer/project_list.ts +14 -15
- package/src/middle_layer/project_overview.ts +104 -113
- package/src/middle_layer/project_overview_light.ts +7 -9
- package/src/middle_layer/render.test.ts +49 -48
- package/src/middle_layer/render.ts +9 -9
- package/src/middle_layer/types.ts +3 -3
- package/src/middle_layer/util.ts +17 -12
- package/src/model/args.ts +22 -19
- package/src/model/block_pack.ts +2 -2
- package/src/model/block_pack_spec.ts +11 -11
- package/src/model/block_storage_helper.ts +11 -11
- package/src/model/index.ts +3 -3
- package/src/model/project_helper.ts +78 -32
- package/src/model/project_model.test.ts +5 -9
- package/src/model/project_model.ts +48 -49
- package/src/model/project_model_util.test.ts +86 -53
- package/src/model/project_model_util.ts +18 -14
- package/src/model/project_model_v1.ts +3 -3
- package/src/model/template_spec.ts +5 -5
- package/src/mutator/block-pack/block_pack.test.ts +25 -25
- package/src/mutator/block-pack/block_pack.ts +70 -68
- package/src/mutator/block-pack/frontend.ts +6 -13
- package/src/mutator/context_export.ts +12 -10
- package/src/mutator/migration.ts +20 -14
- package/src/mutator/project-v3.test.ts +123 -118
- package/src/mutator/project.test.ts +105 -94
- package/src/mutator/project.ts +357 -274
- package/src/mutator/template/direct_template_loader.ts +26 -32
- package/src/mutator/template/direct_template_loader_v3.ts +51 -25
- package/src/mutator/template/render_block.ts +14 -21
- package/src/mutator/template/render_template.ts +13 -13
- package/src/mutator/template/template_loading.ts +23 -23
- package/src/mutator/template/template_render.test.ts +87 -86
- package/src/network_check/network_check.test.ts +4 -4
- package/src/network_check/network_check.ts +102 -79
- package/src/network_check/pings.ts +35 -16
- package/src/network_check/template.test.ts +47 -44
- package/src/network_check/template.ts +151 -95
- package/src/network_check/test_utils.ts +1 -1
- package/src/pool/data.ts +81 -69
- package/src/pool/driver.ts +56 -51
- package/src/pool/index.ts +2 -2
- package/src/pool/p_object_collection.ts +16 -15
- package/src/pool/result_pool.ts +23 -34
- package/src/test/block_packs.ts +15 -15
- package/src/test/explicit_templates.ts +4 -4
- package/src/test/known_templates.ts +10 -10
- package/src/test_env.ts +1 -1
- package/src/worker/WorkerManager.ts +22 -18
- package/src/worker/worker.ts +11 -9
- package/src/worker/workerApi.ts +1 -1
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
import type { MiddleLayerEnvironment } from
|
|
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
|
|
16
|
-
import type { ComputableStableDefined, ComputableValueOrErrors } from
|
|
17
|
-
import { Computable } from
|
|
18
|
-
import { projectOverview } from
|
|
19
|
-
import type { BlockPackSpecAny } from
|
|
20
|
-
import { randomUUID } from
|
|
21
|
-
import { withProject, withProjectAuthored } from
|
|
22
|
-
import type { ExtendedResourceData } from
|
|
23
|
-
import { SynchronizedTreeState, treeDumpStats } from
|
|
24
|
-
import { setTimeout } from
|
|
25
|
-
import { frontendData } from
|
|
26
|
-
import type { NavigationState } from
|
|
27
|
-
import { getBlockParameters, blockOutputs } from
|
|
28
|
-
import type { FrontendData } from
|
|
29
|
-
import type { ProjectStructure } from
|
|
30
|
-
import { projectFieldName } from
|
|
31
|
-
import { cachedDeserialize, notEmpty } from
|
|
32
|
-
import type { BlockPackInfo } from
|
|
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
|
|
39
|
-
import { activeConfigs } from
|
|
40
|
-
import { NavigationStates } from
|
|
41
|
-
import { extractConfig } from
|
|
42
|
-
import fs from
|
|
43
|
-
import canonicalize from
|
|
44
|
-
import type { ProjectOverviewLight } from
|
|
45
|
-
import { projectOverviewLight } from
|
|
46
|
-
import { applyProjectMigrations } from
|
|
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 ===
|
|
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
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
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(
|
|
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(
|
|
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
|
|
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(
|
|
129
|
-
|
|
130
|
-
|
|
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(
|
|
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
|
-
|
|
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(
|
|
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 =
|
|
193
|
-
|
|
194
|
-
|
|
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(
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
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
|
-
|
|
204
|
-
|
|
205
|
-
);
|
|
206
|
-
},
|
|
207
|
-
{
|
|
208
|
-
retryOptions: {
|
|
209
|
-
...DefaultRetryOptions,
|
|
210
|
-
backoffMultiplier: DefaultRetryOptions.backoffMultiplier * 1.1,
|
|
224
|
+
name: "addBlock",
|
|
225
|
+
lockId: this.projectLockId,
|
|
211
226
|
},
|
|
212
|
-
|
|
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(
|
|
240
|
-
|
|
241
|
-
|
|
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(
|
|
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
|
-
? {
|
|
283
|
+
? {
|
|
284
|
+
state:
|
|
285
|
+
blockCfg.modelAPIVersion === 2
|
|
286
|
+
? {}
|
|
287
|
+
: { args: blockCfg.initialArgs, uiState: blockCfg.initialUiState },
|
|
288
|
+
}
|
|
265
289
|
: undefined;
|
|
266
|
-
await withProjectAuthored(
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
),
|
|
272
|
-
|
|
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(
|
|
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(
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
groups
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
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(
|
|
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(
|
|
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(
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
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(
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
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(
|
|
383
|
-
|
|
384
|
-
|
|
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(
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
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(
|
|
416
|
-
|
|
417
|
-
|
|
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(
|
|
430
|
-
|
|
431
|
-
|
|
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(
|
|
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,
|
|
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(
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
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 =
|
|
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(
|
|
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(
|
|
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:
|
|
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(
|
|
615
|
-
return [];
|
|
716
|
+
if (r.type.name.startsWith("StreamWorkdir/")) return [];
|
|
616
717
|
switch (r.type.name) {
|
|
617
|
-
case
|
|
618
|
-
return r.fields.filter((f) => f.name !==
|
|
619
|
-
case
|
|
620
|
-
return r.fields.filter((f) => !f.name.startsWith(
|
|
621
|
-
case
|
|
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,
|
|
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(
|
|
638
|
-
const target = targetVersion.split(
|
|
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
|
-
|
|
643
|
-
|
|
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 ===
|
|
762
|
+
if (typeof e === "string") {
|
|
662
763
|
return e;
|
|
663
|
-
} else if (e.type ==
|
|
764
|
+
} else if (e.type == "PlError" && e.fullMessage !== undefined) {
|
|
664
765
|
return e.fullMessage;
|
|
665
766
|
}
|
|
666
767
|
return e.message;
|