@milaboratories/pl-middle-layer 1.48.11 → 1.48.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_virtual/_@oxc-project_runtime@0.114.0/helpers/usingCtx.cjs +59 -0
- package/dist/_virtual/_@oxc-project_runtime@0.114.0/helpers/usingCtx.js +58 -0
- package/dist/_virtual/_rolldown/runtime.cjs +29 -0
- package/dist/block_registry/index.cjs +3 -0
- package/dist/block_registry/index.d.ts +3 -4
- package/dist/block_registry/index.js +3 -0
- package/dist/block_registry/registry-v2-provider.cjs +18 -19
- package/dist/block_registry/registry-v2-provider.cjs.map +1 -1
- package/dist/block_registry/registry-v2-provider.d.ts +10 -6
- package/dist/block_registry/registry-v2-provider.js +17 -17
- package/dist/block_registry/registry-v2-provider.js.map +1 -1
- package/dist/block_registry/registry.cjs +188 -219
- package/dist/block_registry/registry.cjs.map +1 -1
- package/dist/block_registry/registry.d.ts +18 -14
- package/dist/block_registry/registry.js +184 -217
- package/dist/block_registry/registry.js.map +1 -1
- package/dist/block_registry/watcher.cjs +141 -170
- package/dist/block_registry/watcher.cjs.map +1 -1
- package/dist/block_registry/watcher.d.ts +26 -24
- package/dist/block_registry/watcher.js +139 -168
- package/dist/block_registry/watcher.js.map +1 -1
- package/dist/block_registry/well_known_registries.cjs +9 -8
- package/dist/block_registry/well_known_registries.cjs.map +1 -1
- package/dist/block_registry/well_known_registries.d.ts +8 -4
- package/dist/block_registry/well_known_registries.js +9 -7
- package/dist/block_registry/well_known_registries.js.map +1 -1
- package/dist/cfg_render/executor.cjs +136 -137
- package/dist/cfg_render/executor.cjs.map +1 -1
- package/dist/cfg_render/executor.js +133 -135
- package/dist/cfg_render/executor.js.map +1 -1
- package/dist/cfg_render/renderer.cjs +354 -462
- package/dist/cfg_render/renderer.cjs.map +1 -1
- package/dist/cfg_render/renderer.js +353 -460
- package/dist/cfg_render/renderer.js.map +1 -1
- package/dist/cfg_render/traverse.cjs +58 -60
- package/dist/cfg_render/traverse.cjs.map +1 -1
- package/dist/cfg_render/traverse.js +57 -58
- package/dist/cfg_render/traverse.js.map +1 -1
- package/dist/cfg_render/util.cjs +14 -19
- package/dist/cfg_render/util.cjs.map +1 -1
- package/dist/cfg_render/util.js +14 -17
- package/dist/cfg_render/util.js.map +1 -1
- package/dist/debug/index.cjs +13 -17
- package/dist/debug/index.cjs.map +1 -1
- package/dist/debug/index.js +13 -16
- package/dist/debug/index.js.map +1 -1
- package/dist/dev_env/index.cjs +60 -44
- package/dist/dev_env/index.cjs.map +1 -1
- package/dist/dev_env/index.js +57 -33
- package/dist/dev_env/index.js.map +1 -1
- package/dist/dev_env/util.cjs +12 -32
- package/dist/dev_env/util.cjs.map +1 -1
- package/dist/dev_env/util.js +10 -11
- package/dist/dev_env/util.js.map +1 -1
- package/dist/index.cjs +75 -74
- package/dist/index.d.ts +21 -13
- package/dist/index.js +25 -18
- package/dist/js_render/computable_context.cjs +432 -568
- package/dist/js_render/computable_context.cjs.map +1 -1
- package/dist/js_render/computable_context.js +431 -566
- package/dist/js_render/computable_context.js.map +1 -1
- package/dist/js_render/context.cjs +184 -237
- package/dist/js_render/context.cjs.map +1 -1
- package/dist/js_render/context.js +184 -235
- package/dist/js_render/context.js.map +1 -1
- package/dist/js_render/index.cjs +137 -156
- package/dist/js_render/index.cjs.map +1 -1
- package/dist/js_render/index.js +136 -154
- package/dist/js_render/index.js.map +1 -1
- package/dist/middle_layer/active_cfg.cjs +28 -35
- package/dist/middle_layer/active_cfg.cjs.map +1 -1
- package/dist/middle_layer/active_cfg.js +27 -33
- package/dist/middle_layer/active_cfg.js.map +1 -1
- package/dist/middle_layer/block.cjs +36 -42
- package/dist/middle_layer/block.cjs.map +1 -1
- package/dist/middle_layer/block.js +35 -40
- package/dist/middle_layer/block.js.map +1 -1
- package/dist/middle_layer/block_ctx.cjs +91 -133
- package/dist/middle_layer/block_ctx.cjs.map +1 -1
- package/dist/middle_layer/block_ctx.js +90 -131
- package/dist/middle_layer/block_ctx.js.map +1 -1
- package/dist/middle_layer/block_ctx_unsafe.cjs +20 -19
- package/dist/middle_layer/block_ctx_unsafe.cjs.map +1 -1
- package/dist/middle_layer/block_ctx_unsafe.js +20 -18
- package/dist/middle_layer/block_ctx_unsafe.js.map +1 -1
- package/dist/middle_layer/driver_kit.cjs +47 -51
- package/dist/middle_layer/driver_kit.cjs.map +1 -1
- package/dist/middle_layer/driver_kit.d.ts +31 -27
- package/dist/middle_layer/driver_kit.js +46 -49
- package/dist/middle_layer/driver_kit.js.map +1 -1
- package/dist/middle_layer/frontend_path.cjs +49 -55
- package/dist/middle_layer/frontend_path.cjs.map +1 -1
- package/dist/middle_layer/frontend_path.js +48 -53
- package/dist/middle_layer/frontend_path.js.map +1 -1
- package/dist/middle_layer/index.cjs +4 -0
- package/dist/middle_layer/index.d.ts +4 -5
- package/dist/middle_layer/index.js +4 -0
- package/dist/middle_layer/middle_layer.cjs +216 -245
- package/dist/middle_layer/middle_layer.cjs.map +1 -1
- package/dist/middle_layer/middle_layer.d.ts +95 -91
- package/dist/middle_layer/middle_layer.js +215 -243
- package/dist/middle_layer/middle_layer.js.map +1 -1
- package/dist/middle_layer/navigation_states.cjs +45 -38
- package/dist/middle_layer/navigation_states.cjs.map +1 -1
- package/dist/middle_layer/navigation_states.js +44 -36
- package/dist/middle_layer/navigation_states.js.map +1 -1
- package/dist/middle_layer/ops.cjs +56 -57
- package/dist/middle_layer/ops.cjs.map +1 -1
- package/dist/middle_layer/ops.d.ts +86 -96
- package/dist/middle_layer/ops.js +54 -55
- package/dist/middle_layer/ops.js.map +1 -1
- package/dist/middle_layer/project.cjs +497 -527
- package/dist/middle_layer/project.cjs.map +1 -1
- package/dist/middle_layer/project.d.ts +155 -152
- package/dist/middle_layer/project.js +494 -525
- package/dist/middle_layer/project.js.map +1 -1
- package/dist/middle_layer/project_list.cjs +45 -43
- package/dist/middle_layer/project_list.cjs.map +1 -1
- package/dist/middle_layer/project_list.js +45 -41
- package/dist/middle_layer/project_list.js.map +1 -1
- package/dist/middle_layer/project_overview.cjs +202 -240
- package/dist/middle_layer/project_overview.cjs.map +1 -1
- package/dist/middle_layer/project_overview.js +201 -238
- package/dist/middle_layer/project_overview.js.map +1 -1
- package/dist/middle_layer/project_overview_light.cjs +11 -14
- package/dist/middle_layer/project_overview_light.cjs.map +1 -1
- package/dist/middle_layer/project_overview_light.js +10 -12
- package/dist/middle_layer/project_overview_light.js.map +1 -1
- package/dist/middle_layer/render.cjs +14 -18
- package/dist/middle_layer/render.cjs.map +1 -1
- package/dist/middle_layer/render.js +13 -16
- package/dist/middle_layer/render.js.map +1 -1
- package/dist/middle_layer/types.d.ts +7 -10
- package/dist/middle_layer/util.cjs +26 -21
- package/dist/middle_layer/util.cjs.map +1 -1
- package/dist/middle_layer/util.js +25 -19
- package/dist/middle_layer/util.js.map +1 -1
- package/dist/model/args.cjs +44 -53
- package/dist/model/args.cjs.map +1 -1
- package/dist/model/args.js +44 -51
- package/dist/model/args.js.map +1 -1
- package/dist/model/block_pack_spec.cjs +9 -5
- package/dist/model/block_pack_spec.cjs.map +1 -1
- package/dist/model/block_pack_spec.d.ts +34 -30
- package/dist/model/block_pack_spec.js +9 -4
- package/dist/model/block_pack_spec.js.map +1 -1
- package/dist/model/frontend.d.ts +8 -5
- package/dist/model/index.d.ts +2 -3
- package/dist/model/project_helper.cjs +154 -193
- package/dist/model/project_helper.cjs.map +1 -1
- package/dist/model/project_helper.d.ts +96 -92
- package/dist/model/project_helper.js +153 -191
- package/dist/model/project_helper.js.map +1 -1
- package/dist/model/project_model.cjs +33 -32
- package/dist/model/project_model.cjs.map +1 -1
- package/dist/model/project_model.d.ts +13 -64
- package/dist/model/project_model.js +34 -30
- package/dist/model/project_model.js.map +1 -1
- package/dist/model/project_model_util.cjs +119 -158
- package/dist/model/project_model_util.cjs.map +1 -1
- package/dist/model/project_model_util.js +120 -156
- package/dist/model/project_model_util.js.map +1 -1
- package/dist/model/project_model_v1.cjs +3 -2
- package/dist/model/project_model_v1.cjs.map +1 -1
- package/dist/model/project_model_v1.js +3 -1
- package/dist/model/project_model_v1.js.map +1 -1
- package/dist/model/template_spec.d.ts +20 -16
- package/dist/mutator/block-pack/block_pack.cjs +200 -223
- package/dist/mutator/block-pack/block_pack.cjs.map +1 -1
- package/dist/mutator/block-pack/block_pack.d.ts +20 -19
- package/dist/mutator/block-pack/block_pack.js +199 -221
- package/dist/mutator/block-pack/block_pack.js.map +1 -1
- package/dist/mutator/block-pack/frontend.cjs +14 -16
- package/dist/mutator/block-pack/frontend.cjs.map +1 -1
- package/dist/mutator/block-pack/frontend.js +13 -14
- package/dist/mutator/block-pack/frontend.js.map +1 -1
- package/dist/mutator/context_export.cjs +18 -17
- package/dist/mutator/context_export.cjs.map +1 -1
- package/dist/mutator/context_export.js +17 -15
- package/dist/mutator/context_export.js.map +1 -1
- package/dist/mutator/migration.cjs +86 -112
- package/dist/mutator/migration.cjs.map +1 -1
- package/dist/mutator/migration.js +85 -110
- package/dist/mutator/migration.js.map +1 -1
- package/dist/mutator/project.cjs +903 -1240
- package/dist/mutator/project.cjs.map +1 -1
- package/dist/mutator/project.js +901 -1237
- package/dist/mutator/project.js.map +1 -1
- package/dist/mutator/template/direct_template_loader.cjs +104 -130
- package/dist/mutator/template/direct_template_loader.cjs.map +1 -1
- package/dist/mutator/template/direct_template_loader.js +103 -128
- package/dist/mutator/template/direct_template_loader.js.map +1 -1
- package/dist/mutator/template/direct_template_loader_v3.cjs +104 -124
- package/dist/mutator/template/direct_template_loader_v3.cjs.map +1 -1
- package/dist/mutator/template/direct_template_loader_v3.js +103 -122
- package/dist/mutator/template/direct_template_loader_v3.js.map +1 -1
- package/dist/mutator/template/render_block.cjs +26 -30
- package/dist/mutator/template/render_block.cjs.map +1 -1
- package/dist/mutator/template/render_block.js +26 -23
- package/dist/mutator/template/render_block.js.map +1 -1
- package/dist/mutator/template/render_template.cjs +25 -25
- package/dist/mutator/template/render_template.cjs.map +1 -1
- package/dist/mutator/template/render_template.d.ts +6 -3
- package/dist/mutator/template/render_template.js +24 -23
- package/dist/mutator/template/render_template.js.map +1 -1
- package/dist/mutator/template/template_loading.cjs +42 -46
- package/dist/mutator/template/template_loading.cjs.map +1 -1
- package/dist/mutator/template/template_loading.d.ts +16 -12
- package/dist/mutator/template/template_loading.js +40 -44
- package/dist/mutator/template/template_loading.js.map +1 -1
- package/dist/network_check/network_check.cjs +149 -194
- package/dist/network_check/network_check.cjs.map +1 -1
- package/dist/network_check/network_check.d.ts +50 -66
- package/dist/network_check/network_check.js +146 -190
- package/dist/network_check/network_check.js.map +1 -1
- package/dist/network_check/pings.cjs +71 -69
- package/dist/network_check/pings.cjs.map +1 -1
- package/dist/network_check/pings.js +71 -65
- package/dist/network_check/pings.js.map +1 -1
- package/dist/network_check/template.cjs +256 -273
- package/dist/network_check/template.cjs.map +1 -1
- package/dist/network_check/template.js +253 -265
- package/dist/network_check/template.js.map +1 -1
- package/dist/pool/data.cjs +205 -226
- package/dist/pool/data.cjs.map +1 -1
- package/dist/pool/data.d.ts +10 -27
- package/dist/pool/data.js +196 -209
- package/dist/pool/data.js.map +1 -1
- package/dist/pool/driver.cjs +180 -207
- package/dist/pool/driver.cjs.map +1 -1
- package/dist/pool/driver.d.ts +12 -17
- package/dist/pool/driver.js +178 -205
- package/dist/pool/driver.js.map +1 -1
- package/dist/pool/index.cjs +2 -0
- package/dist/pool/index.d.ts +2 -3
- package/dist/pool/index.js +2 -0
- package/dist/pool/p_object_collection.cjs +67 -79
- package/dist/pool/p_object_collection.cjs.map +1 -1
- package/dist/pool/p_object_collection.d.ts +7 -28
- package/dist/pool/p_object_collection.js +65 -77
- package/dist/pool/p_object_collection.js.map +1 -1
- package/dist/pool/result_pool.cjs +217 -262
- package/dist/pool/result_pool.cjs.map +1 -1
- package/dist/pool/result_pool.d.ts +4 -27
- package/dist/pool/result_pool.js +216 -260
- package/dist/pool/result_pool.js.map +1 -1
- package/dist/worker/WorkerManager.cjs +51 -49
- package/dist/worker/WorkerManager.cjs.map +1 -1
- package/dist/worker/WorkerManager.js +49 -47
- package/dist/worker/WorkerManager.js.map +1 -1
- package/dist/worker/worker.cjs +19 -15
- package/dist/worker/worker.cjs.map +1 -1
- package/dist/worker/worker.d.ts +1 -2
- package/dist/worker/worker.js +18 -13
- package/dist/worker/worker.js.map +1 -1
- package/dist/worker/workerApi.cjs +14 -18
- package/dist/worker/workerApi.cjs.map +1 -1
- package/dist/worker/workerApi.js +13 -16
- package/dist/worker/workerApi.js.map +1 -1
- package/package.json +24 -24
- package/src/mutator/template/template_render.test.ts +22 -18
- package/dist/__external/.pnpm/@rollup_plugin-typescript@12.3.0_rollup@4.52.4_tslib@2.8.1_typescript@5.6.3/__external/tslib/tslib.es6.cjs +0 -77
- package/dist/__external/.pnpm/@rollup_plugin-typescript@12.3.0_rollup@4.52.4_tslib@2.8.1_typescript@5.6.3/__external/tslib/tslib.es6.cjs.map +0 -1
- package/dist/__external/.pnpm/@rollup_plugin-typescript@12.3.0_rollup@4.52.4_tslib@2.8.1_typescript@5.6.3/__external/tslib/tslib.es6.js +0 -74
- package/dist/__external/.pnpm/@rollup_plugin-typescript@12.3.0_rollup@4.52.4_tslib@2.8.1_typescript@5.6.3/__external/tslib/tslib.es6.js.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/classes/comparator.cjs +0 -162
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/classes/comparator.cjs.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/classes/comparator.js +0 -160
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/classes/comparator.js.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/classes/range.cjs +0 -576
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/classes/range.cjs.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/classes/range.js +0 -574
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/classes/range.js.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/classes/semver.cjs +0 -337
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/classes/semver.cjs.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/classes/semver.js +0 -335
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/classes/semver.js.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/clean.cjs +0 -22
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/clean.cjs.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/clean.js +0 -20
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/clean.js.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/cmp.cjs +0 -73
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/cmp.cjs.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/cmp.js +0 -71
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/cmp.js.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/coerce.cjs +0 -78
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/coerce.cjs.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/coerce.js +0 -76
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/coerce.js.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/compare-build.cjs +0 -23
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/compare-build.cjs.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/compare-build.js +0 -21
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/compare-build.js.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/compare-loose.cjs +0 -19
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/compare-loose.cjs.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/compare-loose.js +0 -17
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/compare-loose.js.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/compare.cjs +0 -21
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/compare.cjs.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/compare.js +0 -19
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/compare.js.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/diff.cjs +0 -74
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/diff.cjs.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/diff.js +0 -72
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/diff.js.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/eq.cjs +0 -19
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/eq.cjs.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/eq.js +0 -17
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/eq.js.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/gt.cjs +0 -19
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/gt.cjs.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/gt.js +0 -17
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/gt.js.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/gte.cjs +0 -19
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/gte.cjs.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/gte.js +0 -17
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/gte.js.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/inc.cjs +0 -35
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/inc.cjs.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/inc.js +0 -33
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/inc.js.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/lt.cjs +0 -19
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/lt.cjs.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/lt.js +0 -17
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/lt.js.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/lte.cjs +0 -19
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/lte.cjs.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/lte.js +0 -17
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/lte.js.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/major.cjs +0 -19
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/major.cjs.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/major.js +0 -17
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/major.js.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/minor.cjs +0 -19
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/minor.cjs.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/minor.js +0 -17
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/minor.js.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/neq.cjs +0 -19
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/neq.cjs.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/neq.js +0 -17
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/neq.js.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/parse.cjs +0 -32
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/parse.cjs.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/parse.js +0 -30
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/parse.js.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/patch.cjs +0 -19
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/patch.cjs.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/patch.js +0 -17
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/patch.js.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/prerelease.cjs +0 -22
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/prerelease.cjs.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/prerelease.js +0 -20
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/prerelease.js.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/rcompare.cjs +0 -19
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/rcompare.cjs.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/rcompare.js +0 -17
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/rcompare.js.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/rsort.cjs +0 -19
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/rsort.cjs.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/rsort.js +0 -17
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/rsort.js.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/satisfies.cjs +0 -26
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/satisfies.cjs.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/satisfies.js +0 -24
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/satisfies.js.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/sort.cjs +0 -19
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/sort.cjs.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/sort.js +0 -17
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/sort.js.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/valid.cjs +0 -22
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/valid.cjs.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/valid.js +0 -20
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/valid.js.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/index.cjs +0 -145
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/index.cjs.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/index.js +0 -143
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/index.js.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/constants.cjs +0 -49
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/constants.cjs.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/constants.js +0 -47
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/constants.js.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/debug.cjs +0 -23
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/debug.cjs.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/debug.js +0 -21
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/debug.js.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/identifiers.cjs +0 -37
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/identifiers.cjs.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/identifiers.js +0 -35
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/identifiers.js.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/lrucache.cjs +0 -54
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/lrucache.cjs.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/lrucache.js +0 -52
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/lrucache.js.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/parse-options.cjs +0 -29
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/parse-options.cjs.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/parse-options.js +0 -27
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/parse-options.js.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/re.cjs +0 -240
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/re.cjs.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/re.js +0 -238
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/re.js.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/gtr.cjs +0 -20
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/gtr.cjs.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/gtr.js +0 -18
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/gtr.js.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/intersects.cjs +0 -23
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/intersects.cjs.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/intersects.js +0 -21
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/intersects.js.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/ltr.cjs +0 -20
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/ltr.cjs.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/ltr.js +0 -18
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/ltr.js.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/max-satisfying.cjs +0 -42
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/max-satisfying.cjs.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/max-satisfying.js +0 -40
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/max-satisfying.js.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/min-satisfying.cjs +0 -41
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/min-satisfying.cjs.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/min-satisfying.js +0 -39
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/min-satisfying.js.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/min-version.cjs +0 -79
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/min-version.cjs.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/min-version.js +0 -77
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/min-version.js.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/outside.cjs +0 -103
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/outside.cjs.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/outside.js +0 -101
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/outside.js.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/simplify.cjs +0 -64
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/simplify.cjs.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/simplify.js +0 -62
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/simplify.js.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/subset.cjs +0 -266
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/subset.cjs.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/subset.js +0 -264
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/subset.js.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/to-comparators.cjs +0 -24
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/to-comparators.cjs.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/to-comparators.js +0 -22
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/to-comparators.js.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/valid.cjs +0 -27
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/valid.cjs.map +0 -1
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/valid.js +0 -25
- package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/valid.js.map +0 -1
- package/dist/_virtual/index.cjs +0 -8
- package/dist/_virtual/index.cjs.map +0 -1
- package/dist/_virtual/index.js +0 -6
- package/dist/_virtual/index.js.map +0 -1
- package/dist/_virtual/re.cjs +0 -6
- package/dist/_virtual/re.cjs.map +0 -1
- package/dist/_virtual/re.js +0 -4
- package/dist/_virtual/re.js.map +0 -1
- package/dist/block_registry/index.d.ts.map +0 -1
- package/dist/block_registry/registry-v2-provider.d.ts.map +0 -1
- package/dist/block_registry/registry.d.ts.map +0 -1
- package/dist/block_registry/registry.test.d.ts +0 -2
- package/dist/block_registry/registry.test.d.ts.map +0 -1
- package/dist/block_registry/watcher.d.ts.map +0 -1
- package/dist/block_registry/well_known_registries.d.ts.map +0 -1
- package/dist/cfg_render/executor.d.ts +0 -9
- package/dist/cfg_render/executor.d.ts.map +0 -1
- package/dist/cfg_render/executor.test.d.ts +0 -2
- package/dist/cfg_render/executor.test.d.ts.map +0 -1
- package/dist/cfg_render/operation.d.ts +0 -29
- package/dist/cfg_render/operation.d.ts.map +0 -1
- package/dist/cfg_render/renderer.d.ts +0 -6
- package/dist/cfg_render/renderer.d.ts.map +0 -1
- package/dist/cfg_render/traverse.d.ts +0 -3
- package/dist/cfg_render/traverse.d.ts.map +0 -1
- package/dist/cfg_render/util.d.ts +0 -5
- package/dist/cfg_render/util.d.ts.map +0 -1
- package/dist/debug/index.d.ts +0 -9
- package/dist/debug/index.d.ts.map +0 -1
- package/dist/dev_env/index.d.ts +0 -21
- package/dist/dev_env/index.d.ts.map +0 -1
- package/dist/dev_env/util.d.ts +0 -3
- package/dist/dev_env/util.d.ts.map +0 -1
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/js_render/computable_context.d.ts +0 -74
- package/dist/js_render/computable_context.d.ts.map +0 -1
- package/dist/js_render/context.d.ts +0 -73
- package/dist/js_render/context.d.ts.map +0 -1
- package/dist/js_render/index.d.ts +0 -57
- package/dist/js_render/index.d.ts.map +0 -1
- package/dist/middle_layer/active_cfg.d.ts +0 -6
- package/dist/middle_layer/active_cfg.d.ts.map +0 -1
- package/dist/middle_layer/block.d.ts +0 -10
- package/dist/middle_layer/block.d.ts.map +0 -1
- package/dist/middle_layer/block_ctx.d.ts +0 -23
- package/dist/middle_layer/block_ctx.d.ts.map +0 -1
- package/dist/middle_layer/block_ctx_unsafe.d.ts +0 -16
- package/dist/middle_layer/block_ctx_unsafe.d.ts.map +0 -1
- package/dist/middle_layer/driver_kit.d.ts.map +0 -1
- package/dist/middle_layer/frontend_path.d.ts +0 -6
- package/dist/middle_layer/frontend_path.d.ts.map +0 -1
- package/dist/middle_layer/index.d.ts.map +0 -1
- package/dist/middle_layer/middle_layer.d.ts.map +0 -1
- package/dist/middle_layer/navigation_states.d.ts +0 -10
- package/dist/middle_layer/navigation_states.d.ts.map +0 -1
- package/dist/middle_layer/ops.d.ts.map +0 -1
- package/dist/middle_layer/project.d.ts.map +0 -1
- package/dist/middle_layer/project_list.d.ts +0 -11
- package/dist/middle_layer/project_list.d.ts.map +0 -1
- package/dist/middle_layer/project_overview.d.ts +0 -8
- package/dist/middle_layer/project_overview.d.ts.map +0 -1
- package/dist/middle_layer/project_overview_light.d.ts +0 -8
- package/dist/middle_layer/project_overview_light.d.ts.map +0 -1
- package/dist/middle_layer/render.d.ts +0 -7
- package/dist/middle_layer/render.d.ts.map +0 -1
- package/dist/middle_layer/render.test.d.ts +0 -5
- package/dist/middle_layer/render.test.d.ts.map +0 -1
- package/dist/middle_layer/types.d.ts.map +0 -1
- package/dist/middle_layer/util.d.ts +0 -16
- package/dist/middle_layer/util.d.ts.map +0 -1
- package/dist/model/args.d.ts +0 -14
- package/dist/model/args.d.ts.map +0 -1
- package/dist/model/block_pack.d.ts +0 -8
- package/dist/model/block_pack.d.ts.map +0 -1
- package/dist/model/block_pack_spec.d.ts.map +0 -1
- package/dist/model/frontend.d.ts.map +0 -1
- package/dist/model/index.d.ts.map +0 -1
- package/dist/model/project_helper.d.ts.map +0 -1
- package/dist/model/project_model.d.ts.map +0 -1
- package/dist/model/project_model.test.d.ts +0 -2
- package/dist/model/project_model.test.d.ts.map +0 -1
- package/dist/model/project_model_util.d.ts +0 -43
- package/dist/model/project_model_util.d.ts.map +0 -1
- package/dist/model/project_model_util.test.d.ts +0 -2
- package/dist/model/project_model_util.test.d.ts.map +0 -1
- package/dist/model/project_model_v1.d.ts +0 -8
- package/dist/model/project_model_v1.d.ts.map +0 -1
- package/dist/model/template_spec.d.ts.map +0 -1
- package/dist/mutator/block-pack/block_pack.d.ts.map +0 -1
- package/dist/mutator/block-pack/block_pack.test.d.ts +0 -2
- package/dist/mutator/block-pack/block_pack.test.d.ts.map +0 -1
- package/dist/mutator/block-pack/frontend.d.ts +0 -4
- package/dist/mutator/block-pack/frontend.d.ts.map +0 -1
- package/dist/mutator/context_export.d.ts +0 -9
- package/dist/mutator/context_export.d.ts.map +0 -1
- package/dist/mutator/migration.d.ts +0 -9
- package/dist/mutator/migration.d.ts.map +0 -1
- package/dist/mutator/project-v3.test.d.ts +0 -2
- package/dist/mutator/project-v3.test.d.ts.map +0 -1
- package/dist/mutator/project.d.ts +0 -211
- package/dist/mutator/project.d.ts.map +0 -1
- package/dist/mutator/project.test.d.ts +0 -2
- package/dist/mutator/project.test.d.ts.map +0 -1
- package/dist/mutator/template/direct_template_loader.d.ts +0 -5
- package/dist/mutator/template/direct_template_loader.d.ts.map +0 -1
- package/dist/mutator/template/direct_template_loader_v3.d.ts +0 -15
- package/dist/mutator/template/direct_template_loader_v3.d.ts.map +0 -1
- package/dist/mutator/template/render_block.d.ts +0 -32
- package/dist/mutator/template/render_block.d.ts.map +0 -1
- package/dist/mutator/template/render_template.d.ts.map +0 -1
- package/dist/mutator/template/template_loading.d.ts.map +0 -1
- package/dist/mutator/template/template_render.test.d.ts +0 -2
- package/dist/mutator/template/template_render.test.d.ts.map +0 -1
- package/dist/network_check/network_check.d.ts.map +0 -1
- package/dist/network_check/network_check.test.d.ts +0 -2
- package/dist/network_check/network_check.test.d.ts.map +0 -1
- package/dist/network_check/pings.d.ts +0 -32
- package/dist/network_check/pings.d.ts.map +0 -1
- package/dist/network_check/template.d.ts +0 -57
- package/dist/network_check/template.d.ts.map +0 -1
- package/dist/network_check/template.test.d.ts +0 -2
- package/dist/network_check/template.test.d.ts.map +0 -1
- package/dist/network_check/test_utils.d.ts +0 -6
- package/dist/network_check/test_utils.d.ts.map +0 -1
- package/dist/pool/data.d.ts.map +0 -1
- package/dist/pool/driver.d.ts.map +0 -1
- package/dist/pool/index.d.ts.map +0 -1
- package/dist/pool/p_object_collection.d.ts.map +0 -1
- package/dist/pool/result_pool.d.ts.map +0 -1
- package/dist/test/block_packs.d.ts +0 -6
- package/dist/test/block_packs.d.ts.map +0 -1
- package/dist/test/explicit_templates.d.ts +0 -3
- package/dist/test/explicit_templates.d.ts.map +0 -1
- package/dist/test/known_templates.d.ts +0 -6
- package/dist/test/known_templates.d.ts.map +0 -1
- package/dist/test_env.d.ts +0 -6
- package/dist/test_env.d.ts.map +0 -1
- package/dist/worker/WorkerManager.d.ts +0 -12
- package/dist/worker/WorkerManager.d.ts.map +0 -1
- package/dist/worker/worker.d.ts.map +0 -1
- package/dist/worker/workerApi.d.ts +0 -15
- package/dist/worker/workerApi.d.ts.map +0 -1
|
@@ -1,240 +1,189 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
1
|
+
import { ComputableContextHelper } from "./computable_context.js";
|
|
2
|
+
import { JsRenderInternal } from "@platforma-sdk/model";
|
|
3
|
+
import { notEmpty } from "@milaboratories/ts-helpers";
|
|
4
|
+
import { stringifyWithResourceId } from "@milaboratories/pl-client";
|
|
5
|
+
import { randomUUID } from "node:crypto";
|
|
6
|
+
import { Scope, errors } from "quickjs-emscripten";
|
|
7
|
+
import { PlQuickJSError } from "@milaboratories/pl-errors";
|
|
8
8
|
|
|
9
|
+
//#region src/js_render/context.ts
|
|
9
10
|
function isArrayBufferOrView(obj) {
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
class JsExecutionContext {
|
|
13
|
-
scope;
|
|
14
|
-
vm;
|
|
15
|
-
deadlineSetter;
|
|
16
|
-
callbackRegistry;
|
|
17
|
-
fnJSONStringify;
|
|
18
|
-
fnJSONParse;
|
|
19
|
-
errorRepo = new ErrorRepository();
|
|
20
|
-
computableHelper;
|
|
21
|
-
/**
|
|
22
|
-
* Creates a new JS execution context.
|
|
23
|
-
*
|
|
24
|
-
* @param scope - QuickJS scope for memory management
|
|
25
|
-
* @param vm - QuickJS VM context
|
|
26
|
-
* @param deadlineSetter - Function to set execution deadline
|
|
27
|
-
* @param featureFlags - Block feature flags
|
|
28
|
-
* @param computableEnv - Optional reactive computable environment (for outputs, inputsValid, etc.)
|
|
29
|
-
*/
|
|
30
|
-
constructor(scope, vm, deadlineSetter, featureFlags, computableEnv) {
|
|
31
|
-
this.scope = scope;
|
|
32
|
-
this.vm = vm;
|
|
33
|
-
this.deadlineSetter = deadlineSetter;
|
|
34
|
-
this.callbackRegistry = this.scope.manage(this.vm.newObject());
|
|
35
|
-
this.fnJSONStringify = scope.manage(vm.getProp(vm.global, "JSON").consume((json) => vm.getProp(json, "stringify")));
|
|
36
|
-
if (vm.typeof(this.fnJSONStringify) !== "function")
|
|
37
|
-
throw new Error(`JSON.stringify() not found.`);
|
|
38
|
-
this.fnJSONParse = scope.manage(vm.getProp(vm.global, "JSON").consume((json) => vm.getProp(json, "parse")));
|
|
39
|
-
if (vm.typeof(this.fnJSONParse) !== "function")
|
|
40
|
-
throw new Error(`JSON.parse() not found.`);
|
|
41
|
-
if (computableEnv !== undefined)
|
|
42
|
-
this.computableHelper = new ComputableContextHelper(this, computableEnv.blockCtx, computableEnv.mlEnv, featureFlags, computableEnv.computableCtx);
|
|
43
|
-
this.injectCtx();
|
|
44
|
-
}
|
|
45
|
-
resetComputableCtx() {
|
|
46
|
-
notEmpty(this.computableHelper, "Computable context helper is not initialized").resetComputableCtx();
|
|
47
|
-
}
|
|
48
|
-
static cleanErrorContext(error) {
|
|
49
|
-
if (typeof error === "object" && error !== null && "context" in error)
|
|
50
|
-
delete error["context"];
|
|
51
|
-
}
|
|
52
|
-
// private static cleanError(error: unknown): unknown {
|
|
53
|
-
// if (error instanceof errors.QuickJSUnwrapError) {
|
|
54
|
-
// const { cause, context: _, name, message, stack, ...rest } = error;
|
|
55
|
-
// const clean = new errors.QuickJSUnwrapError(cause);
|
|
56
|
-
// Object.assign(clean, { ...rest, name, message, stack });
|
|
57
|
-
// return clean;
|
|
58
|
-
// }
|
|
59
|
-
// return error;
|
|
60
|
-
// }
|
|
61
|
-
evaluateBundle(code) {
|
|
62
|
-
try {
|
|
63
|
-
this.deadlineSetter({
|
|
64
|
-
currentExecutionTarget: "evaluateBundle",
|
|
65
|
-
deadline: Date.now() + 10000,
|
|
66
|
-
});
|
|
67
|
-
this.vm.unwrapResult(this.vm.evalCode(code, "bundle.js", { type: "global" })).dispose();
|
|
68
|
-
}
|
|
69
|
-
catch (err) {
|
|
70
|
-
JsExecutionContext.cleanErrorContext(err);
|
|
71
|
-
throw err;
|
|
72
|
-
}
|
|
73
|
-
finally {
|
|
74
|
-
this.deadlineSetter(undefined);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
runCallback(cbName, ...args) {
|
|
78
|
-
try {
|
|
79
|
-
this.deadlineSetter({ currentExecutionTarget: cbName, deadline: Date.now() + 10000 });
|
|
80
|
-
return Scope.withScope((localScope) => {
|
|
81
|
-
const targetCallback = localScope.manage(this.vm.getProp(this.callbackRegistry, cbName));
|
|
82
|
-
if (this.vm.typeof(targetCallback) !== "function")
|
|
83
|
-
throw new Error(`No such callback: ${cbName}`);
|
|
84
|
-
return this.scope.manage(this.vm.unwrapResult(this.vm.callFunction(targetCallback, this.vm.undefined, ...args.map((arg) => this.exportObjectUniversal(arg, localScope)))));
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
catch (err) {
|
|
88
|
-
JsExecutionContext.cleanErrorContext(err);
|
|
89
|
-
const original = this.errorRepo.getOriginal(err);
|
|
90
|
-
throw original;
|
|
91
|
-
}
|
|
92
|
-
finally {
|
|
93
|
-
this.deadlineSetter(undefined);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
//
|
|
97
|
-
// QuickJS Helpers
|
|
98
|
-
//
|
|
99
|
-
exportSingleValue(obj, scope) {
|
|
100
|
-
const result = this.tryExportSingleValue(obj, scope);
|
|
101
|
-
if (result === undefined) {
|
|
102
|
-
throw new Error(`Can't export value: ${obj === undefined ? "undefined" : JSON.stringify(obj)}`);
|
|
103
|
-
}
|
|
104
|
-
return result;
|
|
105
|
-
}
|
|
106
|
-
tryExportSingleValue(obj, scope) {
|
|
107
|
-
let handle;
|
|
108
|
-
let manage = false;
|
|
109
|
-
switch (typeof obj) {
|
|
110
|
-
case "string":
|
|
111
|
-
handle = this.vm.newString(obj);
|
|
112
|
-
manage = true;
|
|
113
|
-
break;
|
|
114
|
-
case "number":
|
|
115
|
-
handle = this.vm.newNumber(obj);
|
|
116
|
-
manage = true;
|
|
117
|
-
break;
|
|
118
|
-
case "undefined":
|
|
119
|
-
handle = this.vm.undefined;
|
|
120
|
-
break;
|
|
121
|
-
case "boolean":
|
|
122
|
-
handle = obj ? this.vm.true : this.vm.false;
|
|
123
|
-
break;
|
|
124
|
-
default:
|
|
125
|
-
if (obj === null) {
|
|
126
|
-
handle = this.vm.null;
|
|
127
|
-
break;
|
|
128
|
-
}
|
|
129
|
-
if (isArrayBufferOrView(obj)) {
|
|
130
|
-
handle = this.vm.newArrayBuffer(obj);
|
|
131
|
-
manage = true;
|
|
132
|
-
break;
|
|
133
|
-
}
|
|
134
|
-
return undefined;
|
|
135
|
-
}
|
|
136
|
-
return manage && scope != undefined ? scope.manage(handle) : handle;
|
|
137
|
-
}
|
|
138
|
-
exportObjectUniversal(obj, scope) {
|
|
139
|
-
const simpleHandle = this.tryExportSingleValue(obj, scope);
|
|
140
|
-
if (simpleHandle !== undefined)
|
|
141
|
-
return simpleHandle;
|
|
142
|
-
return this.exportObjectViaJson(obj, scope);
|
|
143
|
-
}
|
|
144
|
-
exportObjectViaJson(obj, scope) {
|
|
145
|
-
const result = this.vm
|
|
146
|
-
.newString(JSON.stringify(obj))
|
|
147
|
-
.consume((json) => this.vm.unwrapResult(this.vm.callFunction(this.fnJSONParse, this.vm.undefined, json)));
|
|
148
|
-
return scope !== undefined ? scope.manage(result) : result;
|
|
149
|
-
}
|
|
150
|
-
importObjectUniversal(handle) {
|
|
151
|
-
if (handle === undefined)
|
|
152
|
-
return undefined;
|
|
153
|
-
switch (this.vm.typeof(handle)) {
|
|
154
|
-
case "undefined":
|
|
155
|
-
return undefined;
|
|
156
|
-
case "boolean":
|
|
157
|
-
case "number":
|
|
158
|
-
case "string":
|
|
159
|
-
return this.vm.dump(handle);
|
|
160
|
-
default:
|
|
161
|
-
return this.importObjectViaJson(handle);
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
importObjectViaJson(handle) {
|
|
165
|
-
const text = this.vm
|
|
166
|
-
.unwrapResult(this.vm.callFunction(this.fnJSONStringify, this.vm.undefined, handle))
|
|
167
|
-
.consume((strHandle) => this.vm.getString(strHandle));
|
|
168
|
-
if (text === "undefined")
|
|
169
|
-
// special case with futures
|
|
170
|
-
return undefined;
|
|
171
|
-
return JSON.parse(text);
|
|
172
|
-
}
|
|
173
|
-
injectCtx() {
|
|
174
|
-
Scope.withScope((localScope) => {
|
|
175
|
-
const configCtx = localScope.manage(this.vm.newObject());
|
|
176
|
-
//
|
|
177
|
-
// Core props
|
|
178
|
-
//
|
|
179
|
-
this.vm.setProp(configCtx, "callbackRegistry", this.callbackRegistry);
|
|
180
|
-
this.vm.setProp(configCtx, "featureFlags", this.exportObjectUniversal(JsRenderInternal.GlobalCfgRenderCtxFeatureFlags, localScope));
|
|
181
|
-
// Inject context values from computableHelper (reactive context for outputs, inputsValid, etc.)
|
|
182
|
-
if (this.computableHelper !== undefined) {
|
|
183
|
-
this.computableHelper.injectCtx(configCtx);
|
|
184
|
-
}
|
|
185
|
-
//
|
|
186
|
-
// Creating global variable inside the vm
|
|
187
|
-
//
|
|
188
|
-
this.vm.setProp(this.vm.global, "cfgRenderCtx", configCtx);
|
|
189
|
-
});
|
|
190
|
-
}
|
|
11
|
+
return obj instanceof ArrayBuffer || ArrayBuffer.isView(obj);
|
|
191
12
|
}
|
|
13
|
+
var JsExecutionContext = class JsExecutionContext {
|
|
14
|
+
callbackRegistry;
|
|
15
|
+
fnJSONStringify;
|
|
16
|
+
fnJSONParse;
|
|
17
|
+
errorRepo = new ErrorRepository();
|
|
18
|
+
computableHelper;
|
|
19
|
+
/**
|
|
20
|
+
* Creates a new JS execution context.
|
|
21
|
+
*
|
|
22
|
+
* @param scope - QuickJS scope for memory management
|
|
23
|
+
* @param vm - QuickJS VM context
|
|
24
|
+
* @param deadlineSetter - Function to set execution deadline
|
|
25
|
+
* @param featureFlags - Block feature flags
|
|
26
|
+
* @param computableEnv - Optional reactive computable environment (for outputs, inputsValid, etc.)
|
|
27
|
+
*/
|
|
28
|
+
constructor(scope, vm, deadlineSetter, featureFlags, computableEnv) {
|
|
29
|
+
this.scope = scope;
|
|
30
|
+
this.vm = vm;
|
|
31
|
+
this.deadlineSetter = deadlineSetter;
|
|
32
|
+
this.callbackRegistry = this.scope.manage(this.vm.newObject());
|
|
33
|
+
this.fnJSONStringify = scope.manage(vm.getProp(vm.global, "JSON").consume((json) => vm.getProp(json, "stringify")));
|
|
34
|
+
if (vm.typeof(this.fnJSONStringify) !== "function") throw new Error(`JSON.stringify() not found.`);
|
|
35
|
+
this.fnJSONParse = scope.manage(vm.getProp(vm.global, "JSON").consume((json) => vm.getProp(json, "parse")));
|
|
36
|
+
if (vm.typeof(this.fnJSONParse) !== "function") throw new Error(`JSON.parse() not found.`);
|
|
37
|
+
if (computableEnv !== void 0) this.computableHelper = new ComputableContextHelper(this, computableEnv.blockCtx, computableEnv.mlEnv, featureFlags, computableEnv.computableCtx);
|
|
38
|
+
this.injectCtx();
|
|
39
|
+
}
|
|
40
|
+
resetComputableCtx() {
|
|
41
|
+
notEmpty(this.computableHelper, "Computable context helper is not initialized").resetComputableCtx();
|
|
42
|
+
}
|
|
43
|
+
static cleanErrorContext(error) {
|
|
44
|
+
if (typeof error === "object" && error !== null && "context" in error) delete error["context"];
|
|
45
|
+
}
|
|
46
|
+
evaluateBundle(code) {
|
|
47
|
+
try {
|
|
48
|
+
this.deadlineSetter({
|
|
49
|
+
currentExecutionTarget: "evaluateBundle",
|
|
50
|
+
deadline: Date.now() + 1e4
|
|
51
|
+
});
|
|
52
|
+
this.vm.unwrapResult(this.vm.evalCode(code, "bundle.js", { type: "global" })).dispose();
|
|
53
|
+
} catch (err) {
|
|
54
|
+
JsExecutionContext.cleanErrorContext(err);
|
|
55
|
+
throw err;
|
|
56
|
+
} finally {
|
|
57
|
+
this.deadlineSetter(void 0);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
runCallback(cbName, ...args) {
|
|
61
|
+
try {
|
|
62
|
+
this.deadlineSetter({
|
|
63
|
+
currentExecutionTarget: cbName,
|
|
64
|
+
deadline: Date.now() + 1e4
|
|
65
|
+
});
|
|
66
|
+
return Scope.withScope((localScope) => {
|
|
67
|
+
const targetCallback = localScope.manage(this.vm.getProp(this.callbackRegistry, cbName));
|
|
68
|
+
if (this.vm.typeof(targetCallback) !== "function") throw new Error(`No such callback: ${cbName}`);
|
|
69
|
+
return this.scope.manage(this.vm.unwrapResult(this.vm.callFunction(targetCallback, this.vm.undefined, ...args.map((arg) => this.exportObjectUniversal(arg, localScope)))));
|
|
70
|
+
});
|
|
71
|
+
} catch (err) {
|
|
72
|
+
JsExecutionContext.cleanErrorContext(err);
|
|
73
|
+
throw this.errorRepo.getOriginal(err);
|
|
74
|
+
} finally {
|
|
75
|
+
this.deadlineSetter(void 0);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
exportSingleValue(obj, scope) {
|
|
79
|
+
const result = this.tryExportSingleValue(obj, scope);
|
|
80
|
+
if (result === void 0) throw new Error(`Can't export value: ${obj === void 0 ? "undefined" : JSON.stringify(obj)}`);
|
|
81
|
+
return result;
|
|
82
|
+
}
|
|
83
|
+
tryExportSingleValue(obj, scope) {
|
|
84
|
+
let handle;
|
|
85
|
+
let manage = false;
|
|
86
|
+
switch (typeof obj) {
|
|
87
|
+
case "string":
|
|
88
|
+
handle = this.vm.newString(obj);
|
|
89
|
+
manage = true;
|
|
90
|
+
break;
|
|
91
|
+
case "number":
|
|
92
|
+
handle = this.vm.newNumber(obj);
|
|
93
|
+
manage = true;
|
|
94
|
+
break;
|
|
95
|
+
case "undefined":
|
|
96
|
+
handle = this.vm.undefined;
|
|
97
|
+
break;
|
|
98
|
+
case "boolean":
|
|
99
|
+
handle = obj ? this.vm.true : this.vm.false;
|
|
100
|
+
break;
|
|
101
|
+
default:
|
|
102
|
+
if (obj === null) {
|
|
103
|
+
handle = this.vm.null;
|
|
104
|
+
break;
|
|
105
|
+
}
|
|
106
|
+
if (isArrayBufferOrView(obj)) {
|
|
107
|
+
handle = this.vm.newArrayBuffer(obj);
|
|
108
|
+
manage = true;
|
|
109
|
+
break;
|
|
110
|
+
}
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
return manage && scope != void 0 ? scope.manage(handle) : handle;
|
|
114
|
+
}
|
|
115
|
+
exportObjectUniversal(obj, scope) {
|
|
116
|
+
const simpleHandle = this.tryExportSingleValue(obj, scope);
|
|
117
|
+
if (simpleHandle !== void 0) return simpleHandle;
|
|
118
|
+
return this.exportObjectViaJson(obj, scope);
|
|
119
|
+
}
|
|
120
|
+
exportObjectViaJson(obj, scope) {
|
|
121
|
+
const result = this.vm.newString(JSON.stringify(obj)).consume((json) => this.vm.unwrapResult(this.vm.callFunction(this.fnJSONParse, this.vm.undefined, json)));
|
|
122
|
+
return scope !== void 0 ? scope.manage(result) : result;
|
|
123
|
+
}
|
|
124
|
+
importObjectUniversal(handle) {
|
|
125
|
+
if (handle === void 0) return void 0;
|
|
126
|
+
switch (this.vm.typeof(handle)) {
|
|
127
|
+
case "undefined": return;
|
|
128
|
+
case "boolean":
|
|
129
|
+
case "number":
|
|
130
|
+
case "string": return this.vm.dump(handle);
|
|
131
|
+
default: return this.importObjectViaJson(handle);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
importObjectViaJson(handle) {
|
|
135
|
+
const text = this.vm.unwrapResult(this.vm.callFunction(this.fnJSONStringify, this.vm.undefined, handle)).consume((strHandle) => this.vm.getString(strHandle));
|
|
136
|
+
if (text === "undefined") return void 0;
|
|
137
|
+
return JSON.parse(text);
|
|
138
|
+
}
|
|
139
|
+
injectCtx() {
|
|
140
|
+
Scope.withScope((localScope) => {
|
|
141
|
+
const configCtx = localScope.manage(this.vm.newObject());
|
|
142
|
+
this.vm.setProp(configCtx, "callbackRegistry", this.callbackRegistry);
|
|
143
|
+
this.vm.setProp(configCtx, "featureFlags", this.exportObjectUniversal(JsRenderInternal.GlobalCfgRenderCtxFeatureFlags, localScope));
|
|
144
|
+
if (this.computableHelper !== void 0) this.computableHelper.injectCtx(configCtx);
|
|
145
|
+
this.vm.setProp(this.vm.global, "cfgRenderCtx", configCtx);
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
};
|
|
192
149
|
/** Holds errors that happened in the host code (like in middle-layer's drivers)
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
throw new Error(`ErrorRepo: quickJSError.cause.name does not contain errorId: ${causeName}, ${stringifyWithResourceId(quickJSError)}`);
|
|
230
|
-
}
|
|
231
|
-
const error = this.errorIdToError.get(errorId);
|
|
232
|
-
if (error === undefined) {
|
|
233
|
-
throw new Error(`ErrorRepo: errorId not found: ${errorId}, ${stringifyWithResourceId(quickJSError)}`);
|
|
234
|
-
}
|
|
235
|
-
return new PlQuickJSError(quickJSError, error);
|
|
236
|
-
}
|
|
237
|
-
}
|
|
150
|
+
* and then throws it where the error from quick JS is needed.
|
|
151
|
+
* QuickJS couldn't throw custom errors, so we store them here, and rethrow them when we exit QuickJS side. */
|
|
152
|
+
var ErrorRepository = class {
|
|
153
|
+
errorIdToError = /* @__PURE__ */ new Map();
|
|
154
|
+
/** Sets the error to the repository and returns a mimicrated error that also has uuid key of the original error. */
|
|
155
|
+
setAndRecreateForQuickJS(error) {
|
|
156
|
+
const errorId = randomUUID();
|
|
157
|
+
this.errorIdToError.set(errorId, error);
|
|
158
|
+
if (error instanceof Error) return {
|
|
159
|
+
name: `${error.name}/uuid:${errorId}`,
|
|
160
|
+
message: error.message
|
|
161
|
+
};
|
|
162
|
+
return {
|
|
163
|
+
name: `UnknownErrorQuickJS/uuid:${errorId}`,
|
|
164
|
+
message: `${error}`
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
/** Returns the original error that was stored by parsing uuid of mimicrated error. */
|
|
168
|
+
getOriginal(quickJSError) {
|
|
169
|
+
if (!(quickJSError instanceof errors.QuickJSUnwrapError)) {
|
|
170
|
+
console.warn("ErrorRepo: quickJSError is not a QuickJSUnwrapError", stringifyWithResourceId(quickJSError));
|
|
171
|
+
return quickJSError;
|
|
172
|
+
}
|
|
173
|
+
const cause = quickJSError.cause;
|
|
174
|
+
if (!(typeof cause === "object" && cause !== null && "name" in cause && typeof cause.name === "string")) {
|
|
175
|
+
console.warn("ErrorRepo: quickJSError.cause is not an Error (can be stack limit exceeded)", stringifyWithResourceId(quickJSError));
|
|
176
|
+
return quickJSError;
|
|
177
|
+
}
|
|
178
|
+
const causeName = cause.name;
|
|
179
|
+
const errorId = causeName.slice(causeName.indexOf("/uuid:") + 6);
|
|
180
|
+
if (!errorId) throw new Error(`ErrorRepo: quickJSError.cause.name does not contain errorId: ${causeName}, ${stringifyWithResourceId(quickJSError)}`);
|
|
181
|
+
const error = this.errorIdToError.get(errorId);
|
|
182
|
+
if (error === void 0) throw new Error(`ErrorRepo: errorId not found: ${errorId}, ${stringifyWithResourceId(quickJSError)}`);
|
|
183
|
+
return new PlQuickJSError(quickJSError, error);
|
|
184
|
+
}
|
|
185
|
+
};
|
|
238
186
|
|
|
239
|
-
|
|
240
|
-
|
|
187
|
+
//#endregion
|
|
188
|
+
export { JsExecutionContext };
|
|
189
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sources":["../../src/js_render/context.ts"],"sourcesContent":["import type { ComputableCtx } from \"@milaboratories/computable\";\nimport type { BlockCodeKnownFeatureFlags } from \"@platforma-sdk/model\";\nimport { JsRenderInternal } from \"@platforma-sdk/model\";\nimport { notEmpty } from \"@milaboratories/ts-helpers\";\nimport { randomUUID } from \"node:crypto\";\nimport type { QuickJSContext, QuickJSHandle } from \"quickjs-emscripten\";\nimport { Scope, errors } from \"quickjs-emscripten\";\nimport type { BlockContextAny } from \"../middle_layer/block_ctx\";\nimport type { MiddleLayerEnvironment } from \"../middle_layer/middle_layer\";\nimport { stringifyWithResourceId } from \"@milaboratories/pl-client\";\nimport { PlQuickJSError } from \"@milaboratories/pl-errors\";\nimport { ComputableContextHelper } from \"./computable_context\";\n\nexport type DeadlineSettings = {\n currentExecutionTarget: string;\n deadline: number;\n};\n\n/**\n * Communicates a deadline to the quickjs runtime, that if passed, will interrupt the execution.\n * Undefined can be used to reset the deadline.\n * */\nexport type DeadlineSetter = (settings: DeadlineSettings | undefined) => void;\n\nfunction isArrayBufferOrView(obj: unknown): obj is ArrayBufferLike {\n return obj instanceof ArrayBuffer || ArrayBuffer.isView(obj);\n}\n\n/**\n * Contains references to objects needed to execute lambda within computable,\n * providing access to:\n * - block context\n * - computable context\n * - middle layer environment\n * */\nexport type ComputableEnv = {\n readonly blockCtx: BlockContextAny;\n readonly mlEnv: MiddleLayerEnvironment;\n computableCtx: ComputableCtx;\n};\n\nexport class JsExecutionContext {\n private readonly callbackRegistry: QuickJSHandle;\n private readonly fnJSONStringify: QuickJSHandle;\n private readonly fnJSONParse: QuickJSHandle;\n\n public readonly errorRepo = new ErrorRepository();\n\n public readonly computableHelper: ComputableContextHelper | undefined;\n\n /**\n * Creates a new JS execution context.\n *\n * @param scope - QuickJS scope for memory management\n * @param vm - QuickJS VM context\n * @param deadlineSetter - Function to set execution deadline\n * @param featureFlags - Block feature flags\n * @param computableEnv - Optional reactive computable environment (for outputs, inputsValid, etc.)\n */\n constructor(\n public readonly scope: Scope,\n public readonly vm: QuickJSContext,\n private readonly deadlineSetter: DeadlineSetter,\n featureFlags: BlockCodeKnownFeatureFlags | undefined,\n computableEnv?: ComputableEnv,\n ) {\n this.callbackRegistry = this.scope.manage(this.vm.newObject());\n\n this.fnJSONStringify = scope.manage(\n vm.getProp(vm.global, \"JSON\").consume((json) => vm.getProp(json, \"stringify\")),\n );\n if (vm.typeof(this.fnJSONStringify) !== \"function\")\n throw new Error(`JSON.stringify() not found.`);\n\n this.fnJSONParse = scope.manage(\n vm.getProp(vm.global, \"JSON\").consume((json) => vm.getProp(json, \"parse\")),\n );\n if (vm.typeof(this.fnJSONParse) !== \"function\") throw new Error(`JSON.parse() not found.`);\n\n if (computableEnv !== undefined)\n this.computableHelper = new ComputableContextHelper(\n this,\n computableEnv.blockCtx,\n computableEnv.mlEnv,\n featureFlags,\n computableEnv.computableCtx,\n );\n\n this.injectCtx();\n }\n\n public resetComputableCtx() {\n notEmpty(\n this.computableHelper,\n \"Computable context helper is not initialized\",\n ).resetComputableCtx();\n }\n\n private static cleanErrorContext(error: unknown): void {\n if (typeof error === \"object\" && error !== null && \"context\" in error) delete error[\"context\"];\n }\n\n // private static cleanError(error: unknown): unknown {\n // if (error instanceof errors.QuickJSUnwrapError) {\n // const { cause, context: _, name, message, stack, ...rest } = error;\n // const clean = new errors.QuickJSUnwrapError(cause);\n // Object.assign(clean, { ...rest, name, message, stack });\n // return clean;\n // }\n // return error;\n // }\n\n public evaluateBundle(code: string) {\n try {\n this.deadlineSetter({\n currentExecutionTarget: \"evaluateBundle\",\n deadline: Date.now() + 10000,\n });\n this.vm.unwrapResult(this.vm.evalCode(code, \"bundle.js\", { type: \"global\" })).dispose();\n } catch (err: unknown) {\n JsExecutionContext.cleanErrorContext(err);\n throw err;\n } finally {\n this.deadlineSetter(undefined);\n }\n }\n\n public runCallback(cbName: string, ...args: unknown[]): QuickJSHandle {\n try {\n this.deadlineSetter({ currentExecutionTarget: cbName, deadline: Date.now() + 10000 });\n return Scope.withScope((localScope) => {\n const targetCallback = localScope.manage(this.vm.getProp(this.callbackRegistry, cbName));\n\n if (this.vm.typeof(targetCallback) !== \"function\")\n throw new Error(`No such callback: ${cbName}`);\n\n return this.scope.manage(\n this.vm.unwrapResult(\n this.vm.callFunction(\n targetCallback,\n this.vm.undefined,\n ...args.map((arg) => this.exportObjectUniversal(arg, localScope)),\n ),\n ),\n );\n });\n } catch (err: unknown) {\n JsExecutionContext.cleanErrorContext(err);\n const original = this.errorRepo.getOriginal(err);\n throw original;\n } finally {\n this.deadlineSetter(undefined);\n }\n }\n\n //\n // QuickJS Helpers\n //\n\n public exportSingleValue(\n obj: boolean | number | string | null | ArrayBuffer | undefined,\n scope: Scope | undefined,\n ): QuickJSHandle {\n const result = this.tryExportSingleValue(obj, scope);\n if (result === undefined) {\n throw new Error(\n `Can't export value: ${obj === undefined ? \"undefined\" : JSON.stringify(obj)}`,\n );\n }\n return result;\n }\n\n public tryExportSingleValue(obj: unknown, scope: Scope | undefined): QuickJSHandle | undefined {\n let handle: QuickJSHandle;\n let manage = false;\n switch (typeof obj) {\n case \"string\":\n handle = this.vm.newString(obj);\n manage = true;\n break;\n case \"number\":\n handle = this.vm.newNumber(obj);\n manage = true;\n break;\n case \"undefined\":\n handle = this.vm.undefined;\n break;\n case \"boolean\":\n handle = obj ? this.vm.true : this.vm.false;\n break;\n default:\n if (obj === null) {\n handle = this.vm.null;\n break;\n }\n if (isArrayBufferOrView(obj)) {\n handle = this.vm.newArrayBuffer(obj);\n manage = true;\n break;\n }\n return undefined;\n }\n return manage && scope != undefined ? scope.manage(handle) : handle;\n }\n\n public exportObjectUniversal(obj: unknown, scope: Scope | undefined): QuickJSHandle {\n const simpleHandle = this.tryExportSingleValue(obj, scope);\n if (simpleHandle !== undefined) return simpleHandle;\n return this.exportObjectViaJson(obj, scope);\n }\n\n public exportObjectViaJson(obj: unknown, scope: Scope | undefined): QuickJSHandle {\n const result = this.vm\n .newString(JSON.stringify(obj))\n .consume((json) =>\n this.vm.unwrapResult(this.vm.callFunction(this.fnJSONParse, this.vm.undefined, json)),\n );\n return scope !== undefined ? scope.manage(result) : result;\n }\n\n public importObjectUniversal(handle: QuickJSHandle | undefined): unknown {\n if (handle === undefined) return undefined;\n switch (this.vm.typeof(handle)) {\n case \"undefined\":\n return undefined;\n case \"boolean\":\n case \"number\":\n case \"string\":\n return this.vm.dump(handle);\n default:\n return this.importObjectViaJson(handle);\n }\n }\n\n public importObjectViaJson(handle: QuickJSHandle): unknown {\n const text = this.vm\n .unwrapResult(this.vm.callFunction(this.fnJSONStringify, this.vm.undefined, handle))\n .consume((strHandle) => this.vm.getString(strHandle));\n if (text === \"undefined\")\n // special case with futures\n return undefined;\n return JSON.parse(text);\n }\n\n private injectCtx() {\n Scope.withScope((localScope) => {\n const configCtx = localScope.manage(this.vm.newObject());\n\n //\n // Core props\n //\n\n this.vm.setProp(configCtx, \"callbackRegistry\", this.callbackRegistry);\n this.vm.setProp(\n configCtx,\n \"featureFlags\",\n this.exportObjectUniversal(JsRenderInternal.GlobalCfgRenderCtxFeatureFlags, localScope),\n );\n\n // Inject context values from computableHelper (reactive context for outputs, inputsValid, etc.)\n if (this.computableHelper !== undefined) {\n this.computableHelper.injectCtx(configCtx);\n }\n\n //\n // Creating global variable inside the vm\n //\n\n this.vm.setProp(this.vm.global, \"cfgRenderCtx\", configCtx);\n });\n }\n}\n\n/** Holds errors that happened in the host code (like in middle-layer's drivers)\n * and then throws it where the error from quick JS is needed.\n * QuickJS couldn't throw custom errors, so we store them here, and rethrow them when we exit QuickJS side. */\nexport class ErrorRepository {\n private readonly errorIdToError = new Map<string, unknown>();\n\n /** Sets the error to the repository and returns a mimicrated error that also has uuid key of the original error. */\n public setAndRecreateForQuickJS(error: unknown): {\n name: string;\n message: string;\n } {\n const errorId = randomUUID();\n this.errorIdToError.set(errorId, error);\n\n if (error instanceof Error) {\n return {\n name: `${error.name}/uuid:${errorId}`,\n message: error.message,\n };\n }\n\n return {\n name: `UnknownErrorQuickJS/uuid:${errorId}`,\n message: `${error as any}`,\n };\n }\n\n /** Returns the original error that was stored by parsing uuid of mimicrated error. */\n public getOriginal(quickJSError: unknown): unknown {\n if (!(quickJSError instanceof errors.QuickJSUnwrapError)) {\n console.warn(\n \"ErrorRepo: quickJSError is not a QuickJSUnwrapError\",\n stringifyWithResourceId(quickJSError),\n );\n return quickJSError;\n }\n\n const cause = quickJSError.cause;\n if (\n !(\n typeof cause === \"object\" &&\n cause !== null &&\n \"name\" in cause &&\n typeof cause.name === \"string\"\n )\n ) {\n console.warn(\n \"ErrorRepo: quickJSError.cause is not an Error (can be stack limit exceeded)\",\n stringifyWithResourceId(quickJSError),\n );\n return quickJSError;\n }\n\n const causeName = cause.name;\n const errorId = causeName.slice(causeName.indexOf(\"/uuid:\") + \"/uuid:\".length);\n if (!errorId) {\n throw new Error(\n `ErrorRepo: quickJSError.cause.name does not contain errorId: ${causeName}, ${stringifyWithResourceId(quickJSError)}`,\n );\n }\n\n const error = this.errorIdToError.get(errorId);\n if (error === undefined) {\n throw new Error(\n `ErrorRepo: errorId not found: ${errorId}, ${stringifyWithResourceId(quickJSError)}`,\n );\n }\n\n return new PlQuickJSError(quickJSError, error as Error);\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"context.js","names":[],"sources":["../../src/js_render/context.ts"],"sourcesContent":["import type { ComputableCtx } from \"@milaboratories/computable\";\nimport type { BlockCodeKnownFeatureFlags } from \"@platforma-sdk/model\";\nimport { JsRenderInternal } from \"@platforma-sdk/model\";\nimport { notEmpty } from \"@milaboratories/ts-helpers\";\nimport { randomUUID } from \"node:crypto\";\nimport type { QuickJSContext, QuickJSHandle } from \"quickjs-emscripten\";\nimport { Scope, errors } from \"quickjs-emscripten\";\nimport type { BlockContextAny } from \"../middle_layer/block_ctx\";\nimport type { MiddleLayerEnvironment } from \"../middle_layer/middle_layer\";\nimport { stringifyWithResourceId } from \"@milaboratories/pl-client\";\nimport { PlQuickJSError } from \"@milaboratories/pl-errors\";\nimport { ComputableContextHelper } from \"./computable_context\";\n\nexport type DeadlineSettings = {\n currentExecutionTarget: string;\n deadline: number;\n};\n\n/**\n * Communicates a deadline to the quickjs runtime, that if passed, will interrupt the execution.\n * Undefined can be used to reset the deadline.\n * */\nexport type DeadlineSetter = (settings: DeadlineSettings | undefined) => void;\n\nfunction isArrayBufferOrView(obj: unknown): obj is ArrayBufferLike {\n return obj instanceof ArrayBuffer || ArrayBuffer.isView(obj);\n}\n\n/**\n * Contains references to objects needed to execute lambda within computable,\n * providing access to:\n * - block context\n * - computable context\n * - middle layer environment\n * */\nexport type ComputableEnv = {\n readonly blockCtx: BlockContextAny;\n readonly mlEnv: MiddleLayerEnvironment;\n computableCtx: ComputableCtx;\n};\n\nexport class JsExecutionContext {\n private readonly callbackRegistry: QuickJSHandle;\n private readonly fnJSONStringify: QuickJSHandle;\n private readonly fnJSONParse: QuickJSHandle;\n\n public readonly errorRepo = new ErrorRepository();\n\n public readonly computableHelper: ComputableContextHelper | undefined;\n\n /**\n * Creates a new JS execution context.\n *\n * @param scope - QuickJS scope for memory management\n * @param vm - QuickJS VM context\n * @param deadlineSetter - Function to set execution deadline\n * @param featureFlags - Block feature flags\n * @param computableEnv - Optional reactive computable environment (for outputs, inputsValid, etc.)\n */\n constructor(\n public readonly scope: Scope,\n public readonly vm: QuickJSContext,\n private readonly deadlineSetter: DeadlineSetter,\n featureFlags: BlockCodeKnownFeatureFlags | undefined,\n computableEnv?: ComputableEnv,\n ) {\n this.callbackRegistry = this.scope.manage(this.vm.newObject());\n\n this.fnJSONStringify = scope.manage(\n vm.getProp(vm.global, \"JSON\").consume((json) => vm.getProp(json, \"stringify\")),\n );\n if (vm.typeof(this.fnJSONStringify) !== \"function\")\n throw new Error(`JSON.stringify() not found.`);\n\n this.fnJSONParse = scope.manage(\n vm.getProp(vm.global, \"JSON\").consume((json) => vm.getProp(json, \"parse\")),\n );\n if (vm.typeof(this.fnJSONParse) !== \"function\") throw new Error(`JSON.parse() not found.`);\n\n if (computableEnv !== undefined)\n this.computableHelper = new ComputableContextHelper(\n this,\n computableEnv.blockCtx,\n computableEnv.mlEnv,\n featureFlags,\n computableEnv.computableCtx,\n );\n\n this.injectCtx();\n }\n\n public resetComputableCtx() {\n notEmpty(\n this.computableHelper,\n \"Computable context helper is not initialized\",\n ).resetComputableCtx();\n }\n\n private static cleanErrorContext(error: unknown): void {\n if (typeof error === \"object\" && error !== null && \"context\" in error) delete error[\"context\"];\n }\n\n // private static cleanError(error: unknown): unknown {\n // if (error instanceof errors.QuickJSUnwrapError) {\n // const { cause, context: _, name, message, stack, ...rest } = error;\n // const clean = new errors.QuickJSUnwrapError(cause);\n // Object.assign(clean, { ...rest, name, message, stack });\n // return clean;\n // }\n // return error;\n // }\n\n public evaluateBundle(code: string) {\n try {\n this.deadlineSetter({\n currentExecutionTarget: \"evaluateBundle\",\n deadline: Date.now() + 10000,\n });\n this.vm.unwrapResult(this.vm.evalCode(code, \"bundle.js\", { type: \"global\" })).dispose();\n } catch (err: unknown) {\n JsExecutionContext.cleanErrorContext(err);\n throw err;\n } finally {\n this.deadlineSetter(undefined);\n }\n }\n\n public runCallback(cbName: string, ...args: unknown[]): QuickJSHandle {\n try {\n this.deadlineSetter({ currentExecutionTarget: cbName, deadline: Date.now() + 10000 });\n return Scope.withScope((localScope) => {\n const targetCallback = localScope.manage(this.vm.getProp(this.callbackRegistry, cbName));\n\n if (this.vm.typeof(targetCallback) !== \"function\")\n throw new Error(`No such callback: ${cbName}`);\n\n return this.scope.manage(\n this.vm.unwrapResult(\n this.vm.callFunction(\n targetCallback,\n this.vm.undefined,\n ...args.map((arg) => this.exportObjectUniversal(arg, localScope)),\n ),\n ),\n );\n });\n } catch (err: unknown) {\n JsExecutionContext.cleanErrorContext(err);\n const original = this.errorRepo.getOriginal(err);\n throw original;\n } finally {\n this.deadlineSetter(undefined);\n }\n }\n\n //\n // QuickJS Helpers\n //\n\n public exportSingleValue(\n obj: boolean | number | string | null | ArrayBuffer | undefined,\n scope: Scope | undefined,\n ): QuickJSHandle {\n const result = this.tryExportSingleValue(obj, scope);\n if (result === undefined) {\n throw new Error(\n `Can't export value: ${obj === undefined ? \"undefined\" : JSON.stringify(obj)}`,\n );\n }\n return result;\n }\n\n public tryExportSingleValue(obj: unknown, scope: Scope | undefined): QuickJSHandle | undefined {\n let handle: QuickJSHandle;\n let manage = false;\n switch (typeof obj) {\n case \"string\":\n handle = this.vm.newString(obj);\n manage = true;\n break;\n case \"number\":\n handle = this.vm.newNumber(obj);\n manage = true;\n break;\n case \"undefined\":\n handle = this.vm.undefined;\n break;\n case \"boolean\":\n handle = obj ? this.vm.true : this.vm.false;\n break;\n default:\n if (obj === null) {\n handle = this.vm.null;\n break;\n }\n if (isArrayBufferOrView(obj)) {\n handle = this.vm.newArrayBuffer(obj);\n manage = true;\n break;\n }\n return undefined;\n }\n return manage && scope != undefined ? scope.manage(handle) : handle;\n }\n\n public exportObjectUniversal(obj: unknown, scope: Scope | undefined): QuickJSHandle {\n const simpleHandle = this.tryExportSingleValue(obj, scope);\n if (simpleHandle !== undefined) return simpleHandle;\n return this.exportObjectViaJson(obj, scope);\n }\n\n public exportObjectViaJson(obj: unknown, scope: Scope | undefined): QuickJSHandle {\n const result = this.vm\n .newString(JSON.stringify(obj))\n .consume((json) =>\n this.vm.unwrapResult(this.vm.callFunction(this.fnJSONParse, this.vm.undefined, json)),\n );\n return scope !== undefined ? scope.manage(result) : result;\n }\n\n public importObjectUniversal(handle: QuickJSHandle | undefined): unknown {\n if (handle === undefined) return undefined;\n switch (this.vm.typeof(handle)) {\n case \"undefined\":\n return undefined;\n case \"boolean\":\n case \"number\":\n case \"string\":\n return this.vm.dump(handle);\n default:\n return this.importObjectViaJson(handle);\n }\n }\n\n public importObjectViaJson(handle: QuickJSHandle): unknown {\n const text = this.vm\n .unwrapResult(this.vm.callFunction(this.fnJSONStringify, this.vm.undefined, handle))\n .consume((strHandle) => this.vm.getString(strHandle));\n if (text === \"undefined\")\n // special case with futures\n return undefined;\n return JSON.parse(text);\n }\n\n private injectCtx() {\n Scope.withScope((localScope) => {\n const configCtx = localScope.manage(this.vm.newObject());\n\n //\n // Core props\n //\n\n this.vm.setProp(configCtx, \"callbackRegistry\", this.callbackRegistry);\n this.vm.setProp(\n configCtx,\n \"featureFlags\",\n this.exportObjectUniversal(JsRenderInternal.GlobalCfgRenderCtxFeatureFlags, localScope),\n );\n\n // Inject context values from computableHelper (reactive context for outputs, inputsValid, etc.)\n if (this.computableHelper !== undefined) {\n this.computableHelper.injectCtx(configCtx);\n }\n\n //\n // Creating global variable inside the vm\n //\n\n this.vm.setProp(this.vm.global, \"cfgRenderCtx\", configCtx);\n });\n }\n}\n\n/** Holds errors that happened in the host code (like in middle-layer's drivers)\n * and then throws it where the error from quick JS is needed.\n * QuickJS couldn't throw custom errors, so we store them here, and rethrow them when we exit QuickJS side. */\nexport class ErrorRepository {\n private readonly errorIdToError = new Map<string, unknown>();\n\n /** Sets the error to the repository and returns a mimicrated error that also has uuid key of the original error. */\n public setAndRecreateForQuickJS(error: unknown): {\n name: string;\n message: string;\n } {\n const errorId = randomUUID();\n this.errorIdToError.set(errorId, error);\n\n if (error instanceof Error) {\n return {\n name: `${error.name}/uuid:${errorId}`,\n message: error.message,\n };\n }\n\n return {\n name: `UnknownErrorQuickJS/uuid:${errorId}`,\n message: `${error as any}`,\n };\n }\n\n /** Returns the original error that was stored by parsing uuid of mimicrated error. */\n public getOriginal(quickJSError: unknown): unknown {\n if (!(quickJSError instanceof errors.QuickJSUnwrapError)) {\n console.warn(\n \"ErrorRepo: quickJSError is not a QuickJSUnwrapError\",\n stringifyWithResourceId(quickJSError),\n );\n return quickJSError;\n }\n\n const cause = quickJSError.cause;\n if (\n !(\n typeof cause === \"object\" &&\n cause !== null &&\n \"name\" in cause &&\n typeof cause.name === \"string\"\n )\n ) {\n console.warn(\n \"ErrorRepo: quickJSError.cause is not an Error (can be stack limit exceeded)\",\n stringifyWithResourceId(quickJSError),\n );\n return quickJSError;\n }\n\n const causeName = cause.name;\n const errorId = causeName.slice(causeName.indexOf(\"/uuid:\") + \"/uuid:\".length);\n if (!errorId) {\n throw new Error(\n `ErrorRepo: quickJSError.cause.name does not contain errorId: ${causeName}, ${stringifyWithResourceId(quickJSError)}`,\n );\n }\n\n const error = this.errorIdToError.get(errorId);\n if (error === undefined) {\n throw new Error(\n `ErrorRepo: errorId not found: ${errorId}, ${stringifyWithResourceId(quickJSError)}`,\n );\n }\n\n return new PlQuickJSError(quickJSError, error as Error);\n }\n}\n"],"mappings":"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"}
|