@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
package/src/js_render/context.ts
CHANGED
|
@@ -1,18 +1,15 @@
|
|
|
1
|
-
import type { ComputableCtx } from
|
|
2
|
-
import type {
|
|
3
|
-
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
} from
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import type {
|
|
10
|
-
import {
|
|
11
|
-
import
|
|
12
|
-
import
|
|
13
|
-
import { stringifyWithResourceId } from '@milaboratories/pl-client';
|
|
14
|
-
import { PlQuickJSError } from '@milaboratories/pl-errors';
|
|
15
|
-
import { ComputableContextHelper } from './computable_context';
|
|
1
|
+
import type { ComputableCtx } from "@milaboratories/computable";
|
|
2
|
+
import type { BlockCodeKnownFeatureFlags } from "@platforma-sdk/model";
|
|
3
|
+
import { JsRenderInternal } from "@platforma-sdk/model";
|
|
4
|
+
import { notEmpty } from "@milaboratories/ts-helpers";
|
|
5
|
+
import { randomUUID } from "node:crypto";
|
|
6
|
+
import type { QuickJSContext, QuickJSHandle } from "quickjs-emscripten";
|
|
7
|
+
import { Scope, errors } from "quickjs-emscripten";
|
|
8
|
+
import type { BlockContextAny } from "../middle_layer/block_ctx";
|
|
9
|
+
import type { MiddleLayerEnvironment } from "../middle_layer/middle_layer";
|
|
10
|
+
import { stringifyWithResourceId } from "@milaboratories/pl-client";
|
|
11
|
+
import { PlQuickJSError } from "@milaboratories/pl-errors";
|
|
12
|
+
import { ComputableContextHelper } from "./computable_context";
|
|
16
13
|
|
|
17
14
|
export type DeadlineSettings = {
|
|
18
15
|
currentExecutionTarget: string;
|
|
@@ -70,28 +67,37 @@ export class JsExecutionContext {
|
|
|
70
67
|
this.callbackRegistry = this.scope.manage(this.vm.newObject());
|
|
71
68
|
|
|
72
69
|
this.fnJSONStringify = scope.manage(
|
|
73
|
-
vm.getProp(vm.global,
|
|
70
|
+
vm.getProp(vm.global, "JSON").consume((json) => vm.getProp(json, "stringify")),
|
|
74
71
|
);
|
|
75
|
-
if (vm.typeof(this.fnJSONStringify) !==
|
|
72
|
+
if (vm.typeof(this.fnJSONStringify) !== "function")
|
|
76
73
|
throw new Error(`JSON.stringify() not found.`);
|
|
77
74
|
|
|
78
75
|
this.fnJSONParse = scope.manage(
|
|
79
|
-
vm.getProp(vm.global,
|
|
76
|
+
vm.getProp(vm.global, "JSON").consume((json) => vm.getProp(json, "parse")),
|
|
80
77
|
);
|
|
81
|
-
if (vm.typeof(this.fnJSONParse) !==
|
|
78
|
+
if (vm.typeof(this.fnJSONParse) !== "function") throw new Error(`JSON.parse() not found.`);
|
|
82
79
|
|
|
83
80
|
if (computableEnv !== undefined)
|
|
84
|
-
this.computableHelper = new ComputableContextHelper(
|
|
81
|
+
this.computableHelper = new ComputableContextHelper(
|
|
82
|
+
this,
|
|
83
|
+
computableEnv.blockCtx,
|
|
84
|
+
computableEnv.mlEnv,
|
|
85
|
+
featureFlags,
|
|
86
|
+
computableEnv.computableCtx,
|
|
87
|
+
);
|
|
85
88
|
|
|
86
89
|
this.injectCtx();
|
|
87
90
|
}
|
|
88
91
|
|
|
89
92
|
public resetComputableCtx() {
|
|
90
|
-
notEmpty(
|
|
93
|
+
notEmpty(
|
|
94
|
+
this.computableHelper,
|
|
95
|
+
"Computable context helper is not initialized",
|
|
96
|
+
).resetComputableCtx();
|
|
91
97
|
}
|
|
92
98
|
|
|
93
99
|
private static cleanErrorContext(error: unknown): void {
|
|
94
|
-
if (typeof error ===
|
|
100
|
+
if (typeof error === "object" && error !== null && "context" in error) delete error["context"];
|
|
95
101
|
}
|
|
96
102
|
|
|
97
103
|
// private static cleanError(error: unknown): unknown {
|
|
@@ -106,8 +112,11 @@ export class JsExecutionContext {
|
|
|
106
112
|
|
|
107
113
|
public evaluateBundle(code: string) {
|
|
108
114
|
try {
|
|
109
|
-
this.deadlineSetter({
|
|
110
|
-
|
|
115
|
+
this.deadlineSetter({
|
|
116
|
+
currentExecutionTarget: "evaluateBundle",
|
|
117
|
+
deadline: Date.now() + 10000,
|
|
118
|
+
});
|
|
119
|
+
this.vm.unwrapResult(this.vm.evalCode(code, "bundle.js", { type: "global" })).dispose();
|
|
111
120
|
} catch (err: unknown) {
|
|
112
121
|
JsExecutionContext.cleanErrorContext(err);
|
|
113
122
|
throw err;
|
|
@@ -122,7 +131,7 @@ export class JsExecutionContext {
|
|
|
122
131
|
return Scope.withScope((localScope) => {
|
|
123
132
|
const targetCallback = localScope.manage(this.vm.getProp(this.callbackRegistry, cbName));
|
|
124
133
|
|
|
125
|
-
if (this.vm.typeof(targetCallback) !==
|
|
134
|
+
if (this.vm.typeof(targetCallback) !== "function")
|
|
126
135
|
throw new Error(`No such callback: ${cbName}`);
|
|
127
136
|
|
|
128
137
|
return this.scope.manage(
|
|
@@ -154,7 +163,9 @@ export class JsExecutionContext {
|
|
|
154
163
|
): QuickJSHandle {
|
|
155
164
|
const result = this.tryExportSingleValue(obj, scope);
|
|
156
165
|
if (result === undefined) {
|
|
157
|
-
throw new Error(
|
|
166
|
+
throw new Error(
|
|
167
|
+
`Can't export value: ${obj === undefined ? "undefined" : JSON.stringify(obj)}`,
|
|
168
|
+
);
|
|
158
169
|
}
|
|
159
170
|
return result;
|
|
160
171
|
}
|
|
@@ -163,18 +174,18 @@ export class JsExecutionContext {
|
|
|
163
174
|
let handle: QuickJSHandle;
|
|
164
175
|
let manage = false;
|
|
165
176
|
switch (typeof obj) {
|
|
166
|
-
case
|
|
177
|
+
case "string":
|
|
167
178
|
handle = this.vm.newString(obj);
|
|
168
179
|
manage = true;
|
|
169
180
|
break;
|
|
170
|
-
case
|
|
181
|
+
case "number":
|
|
171
182
|
handle = this.vm.newNumber(obj);
|
|
172
183
|
manage = true;
|
|
173
184
|
break;
|
|
174
|
-
case
|
|
185
|
+
case "undefined":
|
|
175
186
|
handle = this.vm.undefined;
|
|
176
187
|
break;
|
|
177
|
-
case
|
|
188
|
+
case "boolean":
|
|
178
189
|
handle = obj ? this.vm.true : this.vm.false;
|
|
179
190
|
break;
|
|
180
191
|
default:
|
|
@@ -210,11 +221,11 @@ export class JsExecutionContext {
|
|
|
210
221
|
public importObjectUniversal(handle: QuickJSHandle | undefined): unknown {
|
|
211
222
|
if (handle === undefined) return undefined;
|
|
212
223
|
switch (this.vm.typeof(handle)) {
|
|
213
|
-
case
|
|
224
|
+
case "undefined":
|
|
214
225
|
return undefined;
|
|
215
|
-
case
|
|
216
|
-
case
|
|
217
|
-
case
|
|
226
|
+
case "boolean":
|
|
227
|
+
case "number":
|
|
228
|
+
case "string":
|
|
218
229
|
return this.vm.dump(handle);
|
|
219
230
|
default:
|
|
220
231
|
return this.importObjectViaJson(handle);
|
|
@@ -225,7 +236,7 @@ export class JsExecutionContext {
|
|
|
225
236
|
const text = this.vm
|
|
226
237
|
.unwrapResult(this.vm.callFunction(this.fnJSONStringify, this.vm.undefined, handle))
|
|
227
238
|
.consume((strHandle) => this.vm.getString(strHandle));
|
|
228
|
-
if (text ===
|
|
239
|
+
if (text === "undefined")
|
|
229
240
|
// special case with futures
|
|
230
241
|
return undefined;
|
|
231
242
|
return JSON.parse(text);
|
|
@@ -239,10 +250,10 @@ export class JsExecutionContext {
|
|
|
239
250
|
// Core props
|
|
240
251
|
//
|
|
241
252
|
|
|
242
|
-
this.vm.setProp(configCtx,
|
|
253
|
+
this.vm.setProp(configCtx, "callbackRegistry", this.callbackRegistry);
|
|
243
254
|
this.vm.setProp(
|
|
244
255
|
configCtx,
|
|
245
|
-
|
|
256
|
+
"featureFlags",
|
|
246
257
|
this.exportObjectUniversal(JsRenderInternal.GlobalCfgRenderCtxFeatureFlags, localScope),
|
|
247
258
|
);
|
|
248
259
|
|
|
@@ -255,7 +266,7 @@ export class JsExecutionContext {
|
|
|
255
266
|
// Creating global variable inside the vm
|
|
256
267
|
//
|
|
257
268
|
|
|
258
|
-
this.vm.setProp(this.vm.global,
|
|
269
|
+
this.vm.setProp(this.vm.global, "cfgRenderCtx", configCtx);
|
|
259
270
|
});
|
|
260
271
|
}
|
|
261
272
|
}
|
|
@@ -290,25 +301,42 @@ export class ErrorRepository {
|
|
|
290
301
|
/** Returns the original error that was stored by parsing uuid of mimicrated error. */
|
|
291
302
|
public getOriginal(quickJSError: unknown): unknown {
|
|
292
303
|
if (!(quickJSError instanceof errors.QuickJSUnwrapError)) {
|
|
293
|
-
console.warn(
|
|
304
|
+
console.warn(
|
|
305
|
+
"ErrorRepo: quickJSError is not a QuickJSUnwrapError",
|
|
306
|
+
stringifyWithResourceId(quickJSError),
|
|
307
|
+
);
|
|
294
308
|
return quickJSError;
|
|
295
309
|
}
|
|
296
310
|
|
|
297
311
|
const cause = quickJSError.cause;
|
|
298
|
-
if (
|
|
299
|
-
|
|
312
|
+
if (
|
|
313
|
+
!(
|
|
314
|
+
typeof cause === "object" &&
|
|
315
|
+
cause !== null &&
|
|
316
|
+
"name" in cause &&
|
|
317
|
+
typeof cause.name === "string"
|
|
318
|
+
)
|
|
319
|
+
) {
|
|
320
|
+
console.warn(
|
|
321
|
+
"ErrorRepo: quickJSError.cause is not an Error (can be stack limit exceeded)",
|
|
322
|
+
stringifyWithResourceId(quickJSError),
|
|
323
|
+
);
|
|
300
324
|
return quickJSError;
|
|
301
325
|
}
|
|
302
326
|
|
|
303
327
|
const causeName = cause.name;
|
|
304
|
-
const errorId = causeName.slice(causeName.indexOf(
|
|
328
|
+
const errorId = causeName.slice(causeName.indexOf("/uuid:") + "/uuid:".length);
|
|
305
329
|
if (!errorId) {
|
|
306
|
-
throw new Error(
|
|
330
|
+
throw new Error(
|
|
331
|
+
`ErrorRepo: quickJSError.cause.name does not contain errorId: ${causeName}, ${stringifyWithResourceId(quickJSError)}`,
|
|
332
|
+
);
|
|
307
333
|
}
|
|
308
334
|
|
|
309
335
|
const error = this.errorIdToError.get(errorId);
|
|
310
336
|
if (error === undefined) {
|
|
311
|
-
throw new Error(
|
|
337
|
+
throw new Error(
|
|
338
|
+
`ErrorRepo: errorId not found: ${errorId}, ${stringifyWithResourceId(quickJSError)}`,
|
|
339
|
+
);
|
|
312
340
|
}
|
|
313
341
|
|
|
314
342
|
return new PlQuickJSError(quickJSError, error as Error);
|
package/src/js_render/index.ts
CHANGED
|
@@ -1,20 +1,30 @@
|
|
|
1
|
-
import type { MiddleLayerEnvironment } from
|
|
2
|
-
import type { BlockCodeWithInfo, ConfigRenderLambda } from
|
|
3
|
-
import type { ComputableRenderingOps } from
|
|
4
|
-
import { Computable } from
|
|
5
|
-
import type { QuickJSWASMModule } from
|
|
6
|
-
import { Scope } from
|
|
7
|
-
import type { DeadlineSettings } from
|
|
8
|
-
import { JsExecutionContext } from
|
|
9
|
-
import type { BlockContextAny } from
|
|
10
|
-
import { getDebugFlags } from
|
|
11
|
-
|
|
12
|
-
function logOutputStatus(
|
|
13
|
-
|
|
1
|
+
import type { MiddleLayerEnvironment } from "../middle_layer/middle_layer";
|
|
2
|
+
import type { BlockCodeWithInfo, ConfigRenderLambda } from "@platforma-sdk/model";
|
|
3
|
+
import type { ComputableRenderingOps } from "@milaboratories/computable";
|
|
4
|
+
import { Computable } from "@milaboratories/computable";
|
|
5
|
+
import type { QuickJSWASMModule } from "quickjs-emscripten";
|
|
6
|
+
import { Scope } from "quickjs-emscripten";
|
|
7
|
+
import type { DeadlineSettings } from "./context";
|
|
8
|
+
import { JsExecutionContext } from "./context";
|
|
9
|
+
import type { BlockContextAny } from "../middle_layer/block_ctx";
|
|
10
|
+
import { getDebugFlags } from "../debug";
|
|
11
|
+
|
|
12
|
+
function logOutputStatus(
|
|
13
|
+
handle: string,
|
|
14
|
+
renderedResult: unknown,
|
|
15
|
+
stable: boolean,
|
|
16
|
+
recalculationCounter: number,
|
|
17
|
+
unstableMarker?: string,
|
|
18
|
+
) {
|
|
19
|
+
if (getDebugFlags().logOutputStatus && (getDebugFlags().logOutputStatus === "any" || !stable)) {
|
|
14
20
|
if (stable)
|
|
15
|
-
console.log(
|
|
21
|
+
console.log(
|
|
22
|
+
`Stable output ${handle} calculated ${renderedResult !== undefined ? "defined" : "undefined"}; (#${recalculationCounter})`,
|
|
23
|
+
);
|
|
16
24
|
else
|
|
17
|
-
console.log(
|
|
25
|
+
console.log(
|
|
26
|
+
`Unstable output ${handle}; marker = ${unstableMarker}; ${renderedResult !== undefined ? "defined" : "undefined"} (#${recalculationCounter})`,
|
|
27
|
+
);
|
|
18
28
|
}
|
|
19
29
|
}
|
|
20
30
|
|
|
@@ -77,12 +87,14 @@ export function computableFromRF(
|
|
|
77
87
|
// adding configKey to reload all outputs on block-pack update
|
|
78
88
|
const key = `${ctx.blockId}#lambda#${configKey}#${fh.handle}`;
|
|
79
89
|
ops = { ...ops, key };
|
|
80
|
-
if (ops.mode === undefined && fh.retentive === true) ops.mode =
|
|
90
|
+
if (ops.mode === undefined && fh.retentive === true) ops.mode = "StableOnlyRetentive";
|
|
81
91
|
return Computable.makeRaw((cCtx) => {
|
|
82
92
|
const { code, featureFlags } = codeWithInfo;
|
|
83
93
|
|
|
84
94
|
if (getDebugFlags().logOutputRecalculations)
|
|
85
|
-
console.log(
|
|
95
|
+
console.log(
|
|
96
|
+
`Block lambda recalculation : ${key} (${cCtx.changeSourceMarker}; ${cCtx.bodyInvocations} invocations)`,
|
|
97
|
+
);
|
|
86
98
|
|
|
87
99
|
const scope = new Scope();
|
|
88
100
|
let keepVmAlive = false;
|
|
@@ -104,10 +116,15 @@ export function computableFromRF(
|
|
|
104
116
|
return false;
|
|
105
117
|
});
|
|
106
118
|
const vm = scope.manage(runtime.newContext());
|
|
107
|
-
const rCtx = new JsExecutionContext(
|
|
108
|
-
|
|
119
|
+
const rCtx = new JsExecutionContext(
|
|
120
|
+
scope,
|
|
121
|
+
vm,
|
|
122
|
+
(s) => {
|
|
123
|
+
deadlineSettings = s;
|
|
124
|
+
},
|
|
109
125
|
featureFlags,
|
|
110
|
-
{ computableCtx: cCtx, blockCtx: ctx, mlEnv: env }
|
|
126
|
+
{ computableCtx: cCtx, blockCtx: ctx, mlEnv: env },
|
|
127
|
+
);
|
|
111
128
|
|
|
112
129
|
rCtx.evaluateBundle(code.content);
|
|
113
130
|
const result = rCtx.runCallback(fh.handle);
|
|
@@ -118,7 +135,13 @@ export function computableFromRF(
|
|
|
118
135
|
|
|
119
136
|
if (Object.keys(toBeResolved).length === 0) {
|
|
120
137
|
const importedResult = rCtx.importObjectUniversal(result);
|
|
121
|
-
logOutputStatus(
|
|
138
|
+
logOutputStatus(
|
|
139
|
+
fh.handle,
|
|
140
|
+
importedResult,
|
|
141
|
+
cCtx.unstableMarker === undefined,
|
|
142
|
+
-1,
|
|
143
|
+
cCtx.unstableMarker,
|
|
144
|
+
);
|
|
122
145
|
return { ir: importedResult };
|
|
123
146
|
}
|
|
124
147
|
|
|
@@ -130,7 +153,7 @@ export function computableFromRF(
|
|
|
130
153
|
return {
|
|
131
154
|
ir: toBeResolved,
|
|
132
155
|
postprocessValue: (resolved: Record<string, unknown>, { unstableMarker, stable }) => {
|
|
133
|
-
|
|
156
|
+
// resolving futures
|
|
134
157
|
for (const [handle, value] of Object.entries(resolved)) rCtx.runCallback(handle, value);
|
|
135
158
|
|
|
136
159
|
// rendering result
|
|
@@ -172,8 +195,12 @@ export function executeSingleLambda(
|
|
|
172
195
|
return false;
|
|
173
196
|
});
|
|
174
197
|
const vm = scope.manage(runtime.newContext());
|
|
175
|
-
const rCtx = new JsExecutionContext(
|
|
176
|
-
|
|
198
|
+
const rCtx = new JsExecutionContext(
|
|
199
|
+
scope,
|
|
200
|
+
vm,
|
|
201
|
+
(s) => {
|
|
202
|
+
deadlineSettings = s;
|
|
203
|
+
},
|
|
177
204
|
featureFlags,
|
|
178
205
|
);
|
|
179
206
|
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { notEmpty } from
|
|
2
|
-
import type { PlTreeEntry } from
|
|
3
|
-
import type { MiddleLayerEnvironment } from
|
|
4
|
-
import { Computable } from
|
|
5
|
-
import type { ProjectStructure } from
|
|
6
|
-
import { ProjectStructureKey } from
|
|
7
|
-
import { allBlocks } from
|
|
8
|
-
import { constructBlockContext } from
|
|
9
|
-
import { computableFromCfgOrRF, isActive } from
|
|
10
|
-
import { getBlockPackInfo } from
|
|
11
|
-
import { extractCodeWithInfo, wrapCallback } from
|
|
1
|
+
import { notEmpty } from "@milaboratories/ts-helpers";
|
|
2
|
+
import type { PlTreeEntry } from "@milaboratories/pl-tree";
|
|
3
|
+
import type { MiddleLayerEnvironment } from "./middle_layer";
|
|
4
|
+
import { Computable } from "@milaboratories/computable";
|
|
5
|
+
import type { ProjectStructure } from "../model/project_model";
|
|
6
|
+
import { ProjectStructureKey } from "../model/project_model";
|
|
7
|
+
import { allBlocks } from "../model/project_model_util";
|
|
8
|
+
import { constructBlockContext } from "./block_ctx";
|
|
9
|
+
import { computableFromCfgOrRF, isActive } from "./render";
|
|
10
|
+
import { getBlockPackInfo } from "./util";
|
|
11
|
+
import { extractCodeWithInfo, wrapCallback } from "@platforma-sdk/model";
|
|
12
12
|
|
|
13
13
|
/** Returns derived general project state form the project resource */
|
|
14
14
|
export function activeConfigs(
|
|
@@ -38,7 +38,9 @@ export function activeConfigs(
|
|
|
38
38
|
|
|
39
39
|
for (const cfg of activeOutputConfigs) {
|
|
40
40
|
ret.push(
|
|
41
|
-
Computable.wrapError(
|
|
41
|
+
Computable.wrapError(
|
|
42
|
+
computableFromCfgOrRF(env, blockCtx, cfg, codeWithInfoOrError.value, bp.bpId),
|
|
43
|
+
),
|
|
42
44
|
);
|
|
43
45
|
}
|
|
44
46
|
}
|
|
@@ -1,34 +1,32 @@
|
|
|
1
|
-
import type { PlTreeEntry } from
|
|
1
|
+
import type { PlTreeEntry } from "@milaboratories/pl-tree";
|
|
2
2
|
import type {
|
|
3
3
|
ComputableCtx,
|
|
4
4
|
ComputableStableDefined,
|
|
5
5
|
ComputableValueOrErrors,
|
|
6
|
-
} from
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
} from
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import type {
|
|
14
|
-
import {
|
|
15
|
-
import
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import { extractCodeWithInfo } from '@platforma-sdk/model';
|
|
20
|
-
import { getDebugFlags } from '../debug';
|
|
6
|
+
} from "@milaboratories/computable";
|
|
7
|
+
import { Computable } from "@milaboratories/computable";
|
|
8
|
+
import { constructBlockContext, constructBlockContextArgsOnly } from "./block_ctx";
|
|
9
|
+
import { blockArgsAuthorKey } from "../model/project_model";
|
|
10
|
+
import { ifNotUndef } from "../cfg_render/util";
|
|
11
|
+
import type { MiddleLayerEnvironment } from "./middle_layer";
|
|
12
|
+
import { getBlockPackInfo } from "./util";
|
|
13
|
+
import type { AuthorMarker, BlockStateInternalV3 } from "@milaboratories/pl-model-middle-layer";
|
|
14
|
+
import { computableFromCfgOrRF } from "./render";
|
|
15
|
+
import { resourceIdToString } from "@milaboratories/pl-client";
|
|
16
|
+
import { deepFreeze } from "@milaboratories/ts-helpers";
|
|
17
|
+
import { extractCodeWithInfo } from "@platforma-sdk/model";
|
|
18
|
+
import { getDebugFlags } from "../debug";
|
|
21
19
|
|
|
22
|
-
export type BlockParameters = Omit<BlockStateInternalV3,
|
|
20
|
+
export type BlockParameters = Omit<BlockStateInternalV3, "outputs" | "navigationState">;
|
|
23
21
|
|
|
24
22
|
export function getBlockParameters(
|
|
25
23
|
projectEntry: PlTreeEntry,
|
|
26
|
-
blockId: string
|
|
24
|
+
blockId: string,
|
|
27
25
|
): Computable<BlockParameters>;
|
|
28
26
|
export function getBlockParameters(
|
|
29
27
|
projectEntry: PlTreeEntry,
|
|
30
28
|
blockId: string,
|
|
31
|
-
cCtx: ComputableCtx
|
|
29
|
+
cCtx: ComputableCtx,
|
|
32
30
|
): BlockParameters;
|
|
33
31
|
export function getBlockParameters(
|
|
34
32
|
projectEntry: PlTreeEntry,
|
|
@@ -44,7 +42,8 @@ export function getBlockParameters(
|
|
|
44
42
|
const ctx = constructBlockContextArgsOnly(projectEntry, blockId);
|
|
45
43
|
const blockStorageJson = ctx.blockStorage(cCtx);
|
|
46
44
|
// Parse raw storage JSON - UI will derive data using sdk/model
|
|
47
|
-
const blockStorage =
|
|
45
|
+
const blockStorage =
|
|
46
|
+
blockStorageJson !== undefined ? deepFreeze(JSON.parse(blockStorageJson)) : undefined;
|
|
48
47
|
return {
|
|
49
48
|
author: prj.getKeyValueAsJson<AuthorMarker>(blockArgsAuthorKey(blockId)),
|
|
50
49
|
blockStorage,
|
|
@@ -56,11 +55,13 @@ export function blockOutputs(
|
|
|
56
55
|
blockId: string,
|
|
57
56
|
env: MiddleLayerEnvironment,
|
|
58
57
|
): ComputableStableDefined<Record<string, ComputableValueOrErrors<unknown>>> {
|
|
59
|
-
const key =
|
|
58
|
+
const key = "outputs#" + resourceIdToString(projectEntry.rid) + "#" + blockId;
|
|
60
59
|
return Computable.make(
|
|
61
60
|
(c) => {
|
|
62
61
|
if (getDebugFlags().logOutputRecalculations) {
|
|
63
|
-
console.log(
|
|
62
|
+
console.log(
|
|
63
|
+
`blockOutput recalculation : ${key} (${c.changeSourceMarker}; ${c.bodyInvocations} invocations)`,
|
|
64
|
+
);
|
|
64
65
|
}
|
|
65
66
|
|
|
66
67
|
const prj = c.accessor(projectEntry).node();
|
|
@@ -69,7 +70,13 @@ export function blockOutputs(
|
|
|
69
70
|
return ifNotUndef(getBlockPackInfo(prj, blockId), ({ cfg, bpId }) => {
|
|
70
71
|
const outputs: Record<string, Computable<any>> = {};
|
|
71
72
|
for (const [cellId, cellCfg] of Object.entries(cfg.outputs)) {
|
|
72
|
-
const computableOutput = computableFromCfgOrRF(
|
|
73
|
+
const computableOutput = computableFromCfgOrRF(
|
|
74
|
+
env,
|
|
75
|
+
ctx,
|
|
76
|
+
cellCfg,
|
|
77
|
+
extractCodeWithInfo(cfg),
|
|
78
|
+
bpId,
|
|
79
|
+
);
|
|
73
80
|
outputs[cellId] = Computable.wrapError(computableOutput, 1);
|
|
74
81
|
}
|
|
75
82
|
return outputs;
|
|
@@ -1,17 +1,12 @@
|
|
|
1
|
-
import type { ComputableCtx } from
|
|
2
|
-
import type { PlTreeEntry } from
|
|
3
|
-
import { cachedDecode, notEmpty } from
|
|
4
|
-
import type { Optional } from
|
|
5
|
-
import type {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
projectFieldName,
|
|
11
|
-
} from '../model/project_model';
|
|
12
|
-
import { allBlocks } from '../model/project_model_util';
|
|
13
|
-
import { ResultPool } from '../pool/result_pool';
|
|
14
|
-
import { deriveDataFromStorage } from '@platforma-sdk/model';
|
|
1
|
+
import type { ComputableCtx } from "@milaboratories/computable";
|
|
2
|
+
import type { PlTreeEntry } from "@milaboratories/pl-tree";
|
|
3
|
+
import { cachedDecode, notEmpty } from "@milaboratories/ts-helpers";
|
|
4
|
+
import type { Optional } from "utility-types";
|
|
5
|
+
import type { Block, ProjectStructure } from "../model/project_model";
|
|
6
|
+
import { ProjectStructureKey, projectFieldName } from "../model/project_model";
|
|
7
|
+
import { allBlocks } from "../model/project_model_util";
|
|
8
|
+
import { ResultPool } from "../pool/result_pool";
|
|
9
|
+
import { deriveDataFromStorage } from "@platforma-sdk/model";
|
|
15
10
|
|
|
16
11
|
export type BlockContextArgsOnly = {
|
|
17
12
|
readonly blockId: string;
|
|
@@ -29,7 +24,7 @@ export type BlockContextFull = BlockContextArgsOnly & {
|
|
|
29
24
|
readonly getResultsPool: (cCtx: ComputableCtx) => ResultPool;
|
|
30
25
|
};
|
|
31
26
|
|
|
32
|
-
export type BlockContextAny = Optional<BlockContextFull,
|
|
27
|
+
export type BlockContextAny = Optional<BlockContextFull, "prod" | "staging" | "getResultsPool">;
|
|
33
28
|
|
|
34
29
|
export function constructBlockContextArgsOnly(
|
|
35
30
|
projectEntry: PlTreeEntry,
|
|
@@ -40,7 +35,7 @@ export function constructBlockContextArgsOnly(
|
|
|
40
35
|
.accessor(projectEntry)
|
|
41
36
|
.node()
|
|
42
37
|
.traverse({
|
|
43
|
-
field: projectFieldName(blockId,
|
|
38
|
+
field: projectFieldName(blockId, "currentArgs"),
|
|
44
39
|
stableIfNotFound: true,
|
|
45
40
|
})
|
|
46
41
|
?.getData();
|
|
@@ -51,7 +46,7 @@ export function constructBlockContextArgsOnly(
|
|
|
51
46
|
.accessor(projectEntry)
|
|
52
47
|
.node()
|
|
53
48
|
.traverse({
|
|
54
|
-
field: projectFieldName(blockId,
|
|
49
|
+
field: projectFieldName(blockId, "prodArgs"),
|
|
55
50
|
stableIfNotFound: true,
|
|
56
51
|
})
|
|
57
52
|
?.getData();
|
|
@@ -62,7 +57,7 @@ export function constructBlockContextArgsOnly(
|
|
|
62
57
|
.accessor(projectEntry)
|
|
63
58
|
.node()
|
|
64
59
|
.traverse({
|
|
65
|
-
field: projectFieldName(blockId,
|
|
60
|
+
field: projectFieldName(blockId, "blockStorage"),
|
|
66
61
|
stableIfNotFound: true,
|
|
67
62
|
})
|
|
68
63
|
?.getData();
|
|
@@ -76,7 +71,7 @@ export function constructBlockContextArgsOnly(
|
|
|
76
71
|
const parsed = JSON.parse(rawJson);
|
|
77
72
|
return JSON.stringify(deriveDataFromStorage(parsed));
|
|
78
73
|
} catch (err) {
|
|
79
|
-
console.error(
|
|
74
|
+
console.error("Error deriving data from storage", err);
|
|
80
75
|
return undefined;
|
|
81
76
|
}
|
|
82
77
|
};
|
|
@@ -86,7 +81,7 @@ export function constructBlockContextArgsOnly(
|
|
|
86
81
|
.accessor(projectEntry)
|
|
87
82
|
.node()
|
|
88
83
|
.traverse({
|
|
89
|
-
field: projectFieldName(blockId,
|
|
84
|
+
field: projectFieldName(blockId, "blockStorage"),
|
|
90
85
|
stableIfNotFound: true,
|
|
91
86
|
})
|
|
92
87
|
?.getData();
|
|
@@ -98,7 +93,7 @@ export function constructBlockContextArgsOnly(
|
|
|
98
93
|
.accessor(projectEntry)
|
|
99
94
|
.node()
|
|
100
95
|
.traverse({
|
|
101
|
-
field: projectFieldName(blockId,
|
|
96
|
+
field: projectFieldName(blockId, "currentPrerunArgs"),
|
|
102
97
|
stableIfNotFound: true,
|
|
103
98
|
})
|
|
104
99
|
?.getData();
|
|
@@ -132,7 +127,7 @@ export function constructBlockContext(
|
|
|
132
127
|
.accessor(projectEntry)
|
|
133
128
|
.node({ ignoreError: true })
|
|
134
129
|
.traverse({
|
|
135
|
-
field: projectFieldName(blockId,
|
|
130
|
+
field: projectFieldName(blockId, "prodOutput"),
|
|
136
131
|
stableIfNotFound: true,
|
|
137
132
|
ignoreError: true,
|
|
138
133
|
})
|
|
@@ -141,20 +136,21 @@ export function constructBlockContext(
|
|
|
141
136
|
staging: (cCtx: ComputableCtx) => {
|
|
142
137
|
// Check if staging is expected (currentPrerunArgs is set)
|
|
143
138
|
// For blocks with failed args derivation, staging will never be rendered
|
|
144
|
-
const hasPrerunArgs =
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
139
|
+
const hasPrerunArgs =
|
|
140
|
+
cCtx
|
|
141
|
+
.accessor(projectEntry)
|
|
142
|
+
.node({ ignoreError: true })
|
|
143
|
+
.traverse({
|
|
144
|
+
field: projectFieldName(blockId, "currentPrerunArgs"),
|
|
145
|
+
stableIfNotFound: true,
|
|
146
|
+
ignoreError: true,
|
|
147
|
+
}) !== undefined;
|
|
152
148
|
|
|
153
149
|
const result = cCtx
|
|
154
150
|
.accessor(projectEntry)
|
|
155
151
|
.node({ ignoreError: true })
|
|
156
152
|
.traverse({
|
|
157
|
-
field: projectFieldName(blockId,
|
|
153
|
+
field: projectFieldName(blockId, "stagingOutput"),
|
|
158
154
|
// Only mark stable if staging is NOT expected (no prerunArgs)
|
|
159
155
|
stableIfNotFound: !hasPrerunArgs,
|
|
160
156
|
ignoreError: true,
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import type { ComputableCtx } from
|
|
2
|
-
import type { PlTreeEntry } from
|
|
3
|
-
import type { PlResourceEntry, StdCtx } from
|
|
4
|
-
import type { BlockContextAny } from
|
|
1
|
+
import type { ComputableCtx } from "@milaboratories/computable";
|
|
2
|
+
import type { PlTreeEntry } from "@milaboratories/pl-tree";
|
|
3
|
+
import type { PlResourceEntry, StdCtx } from "@platforma-sdk/model";
|
|
4
|
+
import type { BlockContextAny } from "./block_ctx";
|
|
5
5
|
|
|
6
6
|
type SC = StdCtx<unknown, unknown>;
|
|
7
|
-
type SCAO = Pick<SC,
|
|
7
|
+
type SCAO = Pick<SC, "$blockId" | "$ui" | "$args" | "$data">;
|
|
8
8
|
export type MatStdCtxArgsOnly = {
|
|
9
9
|
[Var in keyof SCAO]: SCAO[Var] extends PlResourceEntry
|
|
10
10
|
? PlTreeEntry | ((cCtx: ComputableCtx) => PlTreeEntry | undefined) | undefined
|
|
@@ -16,22 +16,22 @@ export type MatStdCtx = {
|
|
|
16
16
|
: SC[Var];
|
|
17
17
|
};
|
|
18
18
|
|
|
19
|
-
export const NonKeyCtxFields = [
|
|
19
|
+
export const NonKeyCtxFields = ["$prod", "$staging"];
|
|
20
20
|
|
|
21
21
|
export function toCfgContext(ctx: BlockContextAny): MatStdCtx {
|
|
22
22
|
return {
|
|
23
23
|
$blockId: ctx.blockId,
|
|
24
24
|
$args: (cCtx: ComputableCtx) => {
|
|
25
25
|
const args = ctx.args(cCtx);
|
|
26
|
-
return args !== undefined ? JSON.parse(args) as unknown : undefined;
|
|
26
|
+
return args !== undefined ? (JSON.parse(args) as unknown) : undefined;
|
|
27
27
|
},
|
|
28
28
|
$ui: (cCtx: ComputableCtx) => {
|
|
29
29
|
const data = ctx.data(cCtx);
|
|
30
|
-
return data !== undefined ? JSON.parse(data) as unknown : undefined;
|
|
30
|
+
return data !== undefined ? (JSON.parse(data) as unknown) : undefined;
|
|
31
31
|
},
|
|
32
32
|
$data: (cCtx: ComputableCtx) => {
|
|
33
33
|
const data = ctx.data(cCtx);
|
|
34
|
-
return data !== undefined ? JSON.parse(data) as unknown : undefined;
|
|
34
|
+
return data !== undefined ? (JSON.parse(data) as unknown) : undefined;
|
|
35
35
|
},
|
|
36
36
|
$prod: ctx.prod,
|
|
37
37
|
$staging: ctx.staging,
|