@milaboratories/pl-middle-layer 1.42.2 → 1.42.3
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 +0 -1
- package/dist/block_registry/registry-v2-provider.cjs +22 -0
- package/dist/block_registry/registry-v2-provider.cjs.map +1 -0
- package/dist/block_registry/registry-v2-provider.d.ts +0 -1
- package/dist/block_registry/registry-v2-provider.js +20 -0
- package/dist/block_registry/registry-v2-provider.js.map +1 -0
- package/dist/block_registry/registry.cjs +231 -0
- package/dist/block_registry/registry.cjs.map +1 -0
- package/dist/block_registry/registry.d.ts +0 -1
- package/dist/block_registry/registry.js +227 -0
- package/dist/block_registry/registry.js.map +1 -0
- package/dist/block_registry/registry.test.d.ts +0 -1
- package/dist/block_registry/watcher.cjs +174 -0
- package/dist/block_registry/watcher.cjs.map +1 -0
- package/dist/block_registry/watcher.d.ts +0 -1
- package/dist/block_registry/watcher.js +171 -0
- package/dist/block_registry/watcher.js.map +1 -0
- package/dist/block_registry/well_known_registries.cjs +19 -0
- package/dist/block_registry/well_known_registries.cjs.map +1 -0
- package/dist/block_registry/well_known_registries.d.ts +0 -1
- package/dist/block_registry/well_known_registries.js +15 -0
- package/dist/block_registry/well_known_registries.js.map +1 -0
- package/dist/cfg_render/executor.cjs +159 -0
- package/dist/cfg_render/executor.cjs.map +1 -0
- package/dist/cfg_render/executor.d.ts +0 -1
- package/dist/cfg_render/executor.js +156 -0
- package/dist/cfg_render/executor.js.map +1 -0
- package/dist/cfg_render/executor.test.d.ts +0 -1
- package/dist/cfg_render/operation.d.ts +0 -1
- package/dist/cfg_render/renderer.cjs +528 -0
- package/dist/cfg_render/renderer.cjs.map +1 -0
- package/dist/cfg_render/renderer.d.ts +0 -1
- package/dist/cfg_render/renderer.js +525 -0
- package/dist/cfg_render/renderer.js.map +1 -0
- package/dist/cfg_render/traverse.cjs +65 -0
- package/dist/cfg_render/traverse.cjs.map +1 -0
- package/dist/cfg_render/traverse.d.ts +0 -1
- package/dist/cfg_render/traverse.js +63 -0
- package/dist/cfg_render/traverse.js.map +1 -0
- package/dist/cfg_render/util.cjs +32 -0
- package/dist/cfg_render/util.cjs.map +1 -0
- package/dist/cfg_render/util.d.ts +0 -1
- package/dist/cfg_render/util.js +28 -0
- package/dist/cfg_render/util.js.map +1 -0
- package/dist/debug/index.cjs +21 -0
- package/dist/debug/index.cjs.map +1 -0
- package/dist/debug/index.d.ts +0 -1
- package/dist/debug/index.js +19 -0
- package/dist/debug/index.js.map +1 -0
- package/dist/dev_env/index.cjs +59 -0
- package/dist/dev_env/index.cjs.map +1 -0
- package/dist/dev_env/index.d.ts +0 -1
- package/dist/dev_env/index.js +48 -0
- package/dist/dev_env/index.js.map +1 -0
- package/dist/dev_env/util.cjs +37 -0
- package/dist/dev_env/util.cjs.map +1 -0
- package/dist/dev_env/util.d.ts +0 -1
- package/dist/dev_env/util.js +16 -0
- package/dist/dev_env/util.js.map +1 -0
- package/dist/index.cjs +74 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +0 -1
- package/dist/index.js +15 -75
- package/dist/index.js.map +1 -1
- package/dist/js_render/computable_context.cjs +525 -0
- package/dist/js_render/computable_context.cjs.map +1 -0
- package/dist/js_render/computable_context.d.ts +0 -1
- package/dist/js_render/computable_context.js +523 -0
- package/dist/js_render/computable_context.js.map +1 -0
- package/dist/js_render/context.cjs +229 -0
- package/dist/js_render/context.cjs.map +1 -0
- package/dist/js_render/context.d.ts +0 -1
- package/dist/js_render/context.js +226 -0
- package/dist/js_render/context.js.map +1 -0
- package/dist/js_render/index.cjs +163 -0
- package/dist/js_render/index.cjs.map +1 -0
- package/dist/js_render/index.d.ts +0 -1
- package/dist/js_render/index.js +160 -0
- package/dist/js_render/index.js.map +1 -0
- package/dist/middle_layer/active_cfg.cjs +37 -0
- package/dist/middle_layer/active_cfg.cjs.map +1 -0
- package/dist/middle_layer/active_cfg.d.ts +0 -1
- package/dist/middle_layer/active_cfg.js +35 -0
- package/dist/middle_layer/active_cfg.js.map +1 -0
- package/dist/middle_layer/block.cjs +51 -0
- package/dist/middle_layer/block.cjs.map +1 -0
- package/dist/middle_layer/block.d.ts +0 -1
- package/dist/middle_layer/block.js +48 -0
- package/dist/middle_layer/block.js.map +1 -0
- package/dist/middle_layer/block_ctx.cjs +87 -0
- package/dist/middle_layer/block_ctx.cjs.map +1 -0
- package/dist/middle_layer/block_ctx.d.ts +0 -1
- package/dist/middle_layer/block_ctx.js +84 -0
- package/dist/middle_layer/block_ctx.js.map +1 -0
- package/dist/middle_layer/block_ctx_unsafe.cjs +19 -0
- package/dist/middle_layer/block_ctx_unsafe.cjs.map +1 -0
- package/dist/middle_layer/block_ctx_unsafe.d.ts +0 -1
- package/dist/middle_layer/block_ctx_unsafe.js +16 -0
- package/dist/middle_layer/block_ctx_unsafe.js.map +1 -0
- package/dist/middle_layer/driver_kit.cjs +42 -0
- package/dist/middle_layer/driver_kit.cjs.map +1 -0
- package/dist/middle_layer/driver_kit.d.ts +0 -1
- package/dist/middle_layer/driver_kit.js +40 -0
- package/dist/middle_layer/driver_kit.js.map +1 -0
- package/dist/middle_layer/frontend_path.cjs +64 -0
- package/dist/middle_layer/frontend_path.cjs.map +1 -0
- package/dist/middle_layer/frontend_path.d.ts +0 -1
- package/dist/middle_layer/frontend_path.js +62 -0
- package/dist/middle_layer/frontend_path.js.map +1 -0
- package/dist/middle_layer/index.d.ts +0 -1
- package/dist/middle_layer/middle_layer.cjs +226 -0
- package/dist/middle_layer/middle_layer.cjs.map +1 -0
- package/dist/middle_layer/middle_layer.d.ts +0 -1
- package/dist/middle_layer/middle_layer.js +224 -0
- package/dist/middle_layer/middle_layer.js.map +1 -0
- package/dist/middle_layer/navigation_states.cjs +41 -0
- package/dist/middle_layer/navigation_states.cjs.map +1 -0
- package/dist/middle_layer/navigation_states.d.ts +0 -1
- package/dist/middle_layer/navigation_states.js +39 -0
- package/dist/middle_layer/navigation_states.js.map +1 -0
- package/dist/middle_layer/ops.cjs +75 -0
- package/dist/middle_layer/ops.cjs.map +1 -0
- package/dist/middle_layer/ops.d.ts +0 -1
- package/dist/middle_layer/ops.js +70 -0
- package/dist/middle_layer/ops.js.map +1 -0
- package/dist/middle_layer/project.cjs +446 -0
- package/dist/middle_layer/project.cjs.map +1 -0
- package/dist/middle_layer/project.d.ts +0 -1
- package/dist/middle_layer/project.js +444 -0
- package/dist/middle_layer/project.js.map +1 -0
- package/dist/middle_layer/project_list.cjs +53 -0
- package/dist/middle_layer/project_list.cjs.map +1 -0
- package/dist/middle_layer/project_list.d.ts +0 -1
- package/dist/middle_layer/project_list.js +48 -0
- package/dist/middle_layer/project_list.js.map +1 -0
- package/dist/middle_layer/project_overview.cjs +225 -0
- package/dist/middle_layer/project_overview.cjs.map +1 -0
- package/dist/middle_layer/project_overview.d.ts +0 -1
- package/dist/middle_layer/project_overview.js +204 -0
- package/dist/middle_layer/project_overview.js.map +1 -0
- package/dist/middle_layer/project_overview_light.cjs +20 -0
- package/dist/middle_layer/project_overview_light.cjs.map +1 -0
- package/dist/middle_layer/project_overview_light.d.ts +0 -1
- package/dist/middle_layer/project_overview_light.js +18 -0
- package/dist/middle_layer/project_overview_light.js.map +1 -0
- package/dist/middle_layer/render.cjs +26 -0
- package/dist/middle_layer/render.cjs.map +1 -0
- package/dist/middle_layer/render.d.ts +0 -1
- package/dist/middle_layer/render.js +23 -0
- package/dist/middle_layer/render.js.map +1 -0
- package/dist/middle_layer/render.test.d.ts +0 -1
- package/dist/middle_layer/types.d.ts +0 -1
- package/dist/middle_layer/util.cjs +22 -0
- package/dist/middle_layer/util.cjs.map +1 -0
- package/dist/middle_layer/util.d.ts +0 -1
- package/dist/middle_layer/util.js +20 -0
- package/dist/middle_layer/util.js.map +1 -0
- package/dist/model/args.cjs +62 -0
- package/dist/model/args.cjs.map +1 -0
- package/dist/model/args.d.ts +0 -1
- package/dist/model/args.js +58 -0
- package/dist/model/args.js.map +1 -0
- package/dist/model/block_pack.d.ts +0 -1
- package/dist/model/block_pack_spec.cjs +11 -0
- package/dist/model/block_pack_spec.cjs.map +1 -0
- package/dist/model/block_pack_spec.d.ts +0 -1
- package/dist/model/block_pack_spec.js +8 -0
- package/dist/model/block_pack_spec.js.map +1 -0
- package/dist/model/frontend.d.ts +0 -1
- package/dist/model/index.d.ts +0 -1
- package/dist/model/project_helper.cjs +36 -0
- package/dist/model/project_helper.cjs.map +1 -0
- package/dist/model/project_helper.d.ts +0 -1
- package/dist/model/project_helper.js +34 -0
- package/dist/model/project_helper.js.map +1 -0
- package/dist/model/project_model.cjs +74 -0
- package/dist/model/project_model.cjs.map +1 -0
- package/dist/model/project_model.d.ts +0 -1
- package/dist/model/project_model.js +54 -0
- package/dist/model/project_model.js.map +1 -0
- package/dist/model/project_model.test.d.ts +0 -1
- package/dist/model/project_model_util.cjs +176 -0
- package/dist/model/project_model_util.cjs.map +1 -0
- package/dist/model/project_model_util.d.ts +0 -1
- package/dist/model/project_model_util.js +170 -0
- package/dist/model/project_model_util.js.map +1 -0
- package/dist/model/project_model_util.test.d.ts +0 -1
- package/dist/model/project_model_v1.cjs +9 -0
- package/dist/model/project_model_v1.cjs.map +1 -0
- package/dist/model/project_model_v1.d.ts +0 -1
- package/dist/model/project_model_v1.js +6 -0
- package/dist/model/project_model_v1.js.map +1 -0
- package/dist/model/template_spec.d.ts +0 -1
- package/dist/mutator/block-pack/block_pack.cjs +233 -0
- package/dist/mutator/block-pack/block_pack.cjs.map +1 -0
- package/dist/mutator/block-pack/block_pack.d.ts +0 -1
- package/dist/mutator/block-pack/block_pack.js +227 -0
- package/dist/mutator/block-pack/block_pack.js.map +1 -0
- package/dist/mutator/block-pack/block_pack.test.d.ts +0 -1
- package/dist/mutator/block-pack/frontend.cjs +21 -0
- package/dist/mutator/block-pack/frontend.cjs.map +1 -0
- package/dist/mutator/block-pack/frontend.d.ts +0 -1
- package/dist/mutator/block-pack/frontend.js +19 -0
- package/dist/mutator/block-pack/frontend.js.map +1 -0
- package/dist/mutator/context_export.cjs +26 -0
- package/dist/mutator/context_export.cjs.map +1 -0
- package/dist/mutator/context_export.d.ts +2 -3
- package/dist/mutator/context_export.js +23 -0
- package/dist/mutator/context_export.js.map +1 -0
- package/dist/mutator/migration.cjs +57 -0
- package/dist/mutator/migration.cjs.map +1 -0
- package/dist/mutator/migration.d.ts +0 -1
- package/dist/mutator/migration.js +55 -0
- package/dist/mutator/migration.js.map +1 -0
- package/dist/mutator/project.cjs +997 -0
- package/dist/mutator/project.cjs.map +1 -0
- package/dist/mutator/project.d.ts +0 -1
- package/dist/mutator/project.js +992 -0
- package/dist/mutator/project.js.map +1 -0
- package/dist/mutator/project.test.d.ts +0 -1
- package/dist/mutator/template/direct_template_loader.cjs +146 -0
- package/dist/mutator/template/direct_template_loader.cjs.map +1 -0
- package/dist/mutator/template/direct_template_loader.d.ts +0 -1
- package/dist/mutator/template/direct_template_loader.js +143 -0
- package/dist/mutator/template/direct_template_loader.js.map +1 -0
- package/dist/mutator/template/direct_template_loader_v3.cjs +139 -0
- package/dist/mutator/template/direct_template_loader_v3.cjs.map +1 -0
- package/dist/mutator/template/direct_template_loader_v3.d.ts +0 -1
- package/dist/mutator/template/direct_template_loader_v3.js +137 -0
- package/dist/mutator/template/direct_template_loader_v3.js.map +1 -0
- package/dist/mutator/template/render_block.cjs +43 -0
- package/dist/mutator/template/render_block.cjs.map +1 -0
- package/dist/mutator/template/render_block.d.ts +0 -1
- package/dist/mutator/template/render_block.js +34 -0
- package/dist/mutator/template/render_block.js.map +1 -0
- package/dist/mutator/template/render_template.cjs +35 -0
- package/dist/mutator/template/render_template.cjs.map +1 -0
- package/dist/mutator/template/render_template.d.ts +0 -1
- package/dist/mutator/template/render_template.js +33 -0
- package/dist/mutator/template/render_template.js.map +1 -0
- package/dist/mutator/template/template_loading.cjs +71 -0
- package/dist/mutator/template/template_loading.cjs.map +1 -0
- package/dist/mutator/template/template_loading.d.ts +0 -1
- package/dist/mutator/template/template_loading.js +60 -0
- package/dist/mutator/template/template_loading.js.map +1 -0
- package/dist/mutator/template/template_render.test.d.ts +0 -1
- package/dist/network_check/network_check.cjs +267 -0
- package/dist/network_check/network_check.cjs.map +1 -0
- package/dist/network_check/network_check.d.ts +0 -1
- package/dist/network_check/network_check.js +264 -0
- package/dist/network_check/network_check.js.map +1 -0
- package/dist/network_check/network_check.test.d.ts +0 -1
- package/dist/network_check/pings.cjs +107 -0
- package/dist/network_check/pings.cjs.map +1 -0
- package/dist/network_check/pings.d.ts +0 -1
- package/dist/network_check/pings.js +96 -0
- package/dist/network_check/pings.js.map +1 -0
- package/dist/network_check/template.cjs +318 -0
- package/dist/network_check/template.cjs.map +1 -0
- package/dist/network_check/template.d.ts +0 -1
- package/dist/network_check/template.js +302 -0
- package/dist/network_check/template.js.map +1 -0
- package/dist/network_check/template.test.d.ts +0 -1
- package/dist/network_check/test_utils.d.ts +0 -1
- package/dist/node_modules/.pnpm/@rollup_plugin-typescript@12.1.4_rollup@4.45.1_tslib@2.7.0_typescript@5.6.3/node_modules/tslib/tslib.es6.cjs +77 -0
- package/dist/node_modules/.pnpm/@rollup_plugin-typescript@12.1.4_rollup@4.45.1_tslib@2.7.0_typescript@5.6.3/node_modules/tslib/tslib.es6.cjs.map +1 -0
- package/dist/node_modules/.pnpm/@rollup_plugin-typescript@12.1.4_rollup@4.45.1_tslib@2.7.0_typescript@5.6.3/node_modules/tslib/tslib.es6.js +74 -0
- package/dist/node_modules/.pnpm/@rollup_plugin-typescript@12.1.4_rollup@4.45.1_tslib@2.7.0_typescript@5.6.3/node_modules/tslib/tslib.es6.js.map +1 -0
- package/dist/pool/data.cjs +298 -0
- package/dist/pool/data.cjs.map +1 -0
- package/dist/pool/data.d.ts +7 -9
- package/dist/pool/data.js +282 -0
- package/dist/pool/data.js.map +1 -0
- package/dist/pool/driver.cjs +620 -0
- package/dist/pool/driver.cjs.map +1 -0
- package/dist/pool/driver.d.ts +0 -1
- package/dist/pool/driver.js +598 -0
- package/dist/pool/driver.js.map +1 -0
- package/dist/pool/index.d.ts +0 -1
- package/dist/pool/p_object_collection.cjs +87 -0
- package/dist/pool/p_object_collection.cjs.map +1 -0
- package/dist/pool/p_object_collection.d.ts +0 -1
- package/dist/pool/p_object_collection.js +84 -0
- package/dist/pool/p_object_collection.js.map +1 -0
- package/dist/pool/ref_count_pool.cjs +58 -0
- package/dist/pool/ref_count_pool.cjs.map +1 -0
- package/dist/pool/ref_count_pool.d.ts +0 -1
- package/dist/pool/ref_count_pool.js +56 -0
- package/dist/pool/ref_count_pool.js.map +1 -0
- package/dist/pool/result_pool.cjs +265 -0
- package/dist/pool/result_pool.cjs.map +1 -0
- package/dist/pool/result_pool.d.ts +0 -1
- package/dist/pool/result_pool.js +263 -0
- package/dist/pool/result_pool.js.map +1 -0
- package/dist/test/block_packs.d.ts +0 -1
- package/dist/test/explicit_templates.d.ts +0 -1
- package/dist/test/known_templates.d.ts +0 -1
- package/dist/test_env.d.ts +0 -1
- package/dist/worker/WorkerManager.cjs +53 -0
- package/dist/worker/WorkerManager.cjs.map +1 -0
- package/dist/worker/WorkerManager.d.ts +0 -1
- package/dist/worker/WorkerManager.js +51 -0
- package/dist/worker/WorkerManager.js.map +1 -0
- package/dist/worker/worker.cjs +16 -0
- package/dist/worker/worker.cjs.map +1 -0
- package/dist/worker/worker.d.ts +0 -1
- package/dist/worker/worker.js +14 -0
- package/dist/worker/worker.js.map +1 -0
- package/dist/worker/workerApi.cjs +20 -0
- package/dist/worker/workerApi.cjs.map +1 -0
- package/dist/worker/workerApi.d.ts +1 -3
- package/dist/worker/workerApi.js +18 -0
- package/dist/worker/workerApi.js.map +1 -0
- package/package.json +26 -34
- package/src/cfg_render/executor.test.ts +5 -4
- package/src/model/project_model.test.ts +3 -3
- package/src/model/project_model_util.test.ts +3 -2
- package/src/mutator/block-pack/block_pack.test.ts +5 -4
- package/src/mutator/project.test.ts +4 -4
- package/src/mutator/template/template_render.test.ts +7 -6
- package/src/network_check/network_check.test.ts +1 -0
- package/src/network_check/test_utils.ts +2 -0
- package/src/worker/WorkerManager.ts +6 -8
- 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.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.map +0 -1
- package/dist/cfg_render/executor.test.d.ts.map +0 -1
- package/dist/cfg_render/operation.d.ts.map +0 -1
- package/dist/cfg_render/renderer.d.ts.map +0 -1
- package/dist/cfg_render/traverse.d.ts.map +0 -1
- package/dist/cfg_render/util.d.ts.map +0 -1
- package/dist/debug/index.d.ts.map +0 -1
- package/dist/dev_env/index.d.ts.map +0 -1
- package/dist/dev_env/util.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.mjs +0 -6742
- package/dist/index.mjs.map +0 -1
- package/dist/js_render/computable_context.d.ts.map +0 -1
- package/dist/js_render/context.d.ts.map +0 -1
- package/dist/js_render/index.d.ts.map +0 -1
- package/dist/middle_layer/active_cfg.d.ts.map +0 -1
- package/dist/middle_layer/block.d.ts.map +0 -1
- package/dist/middle_layer/block_ctx.d.ts.map +0 -1
- 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.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.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.map +0 -1
- package/dist/middle_layer/project_overview.d.ts.map +0 -1
- package/dist/middle_layer/project_overview_light.d.ts.map +0 -1
- package/dist/middle_layer/render.d.ts.map +0 -1
- 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.map +0 -1
- package/dist/model/args.d.ts.map +0 -1
- 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.map +0 -1
- package/dist/model/project_model_util.d.ts.map +0 -1
- package/dist/model/project_model_util.test.d.ts.map +0 -1
- 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.map +0 -1
- package/dist/mutator/block-pack/frontend.d.ts.map +0 -1
- package/dist/mutator/context_export.d.ts.map +0 -1
- package/dist/mutator/migration.d.ts.map +0 -1
- package/dist/mutator/project.d.ts.map +0 -1
- package/dist/mutator/project.test.d.ts.map +0 -1
- package/dist/mutator/template/direct_template_loader.d.ts.map +0 -1
- package/dist/mutator/template/direct_template_loader_v3.d.ts.map +0 -1
- 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.map +0 -1
- package/dist/network_check/network_check.d.ts.map +0 -1
- package/dist/network_check/network_check.test.d.ts.map +0 -1
- package/dist/network_check/pings.d.ts.map +0 -1
- package/dist/network_check/template.d.ts.map +0 -1
- package/dist/network_check/template.test.d.ts.map +0 -1
- 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/ref_count_pool.d.ts.map +0 -1
- package/dist/pool/result_pool.d.ts.map +0 -1
- package/dist/test/block_packs.d.ts.map +0 -1
- package/dist/test/explicit_templates.d.ts.map +0 -1
- package/dist/test/known_templates.d.ts.map +0 -1
- package/dist/test_env.d.ts.map +0 -1
- package/dist/worker/WorkerManager.d.ts.map +0 -1
- package/dist/worker/worker.d.ts.map +0 -1
- package/dist/worker/workerApi.d.ts.map +0 -1
- package/dist/worker.js +0 -2
- package/dist/worker.js.map +0 -1
- package/dist/worker.mjs +0 -20
- package/dist/worker.mjs.map +0 -1
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var node_crypto = require('node:crypto');
|
|
4
|
+
var plModelBackend = require('@milaboratories/pl-model-backend');
|
|
5
|
+
var tsHelpers = require('@milaboratories/ts-helpers');
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Renders the tree of templates by caching all resource ids
|
|
9
|
+
* by their cache keys.
|
|
10
|
+
* It's different from v2 version because we provide
|
|
11
|
+
* the hash map of the code of all sources everywhere.
|
|
12
|
+
* It does a double-dispatch on the node type (template, library etc),
|
|
13
|
+
* and creates resources.
|
|
14
|
+
*
|
|
15
|
+
* IMO, it'd be clearer to rewrite it with Visitor pattern, and separate
|
|
16
|
+
* tree traversing and operations on it, but I don't have time to do it now.
|
|
17
|
+
*/
|
|
18
|
+
function createTemplateV3Tree(tx, tplData) {
|
|
19
|
+
const resourceCache = new Map();
|
|
20
|
+
const createResourceCached = (resource, renderer, hashToSource) => {
|
|
21
|
+
const key = node_crypto.createHash('sha256');
|
|
22
|
+
renderer.updateCacheKey(resource, key, hashToSource);
|
|
23
|
+
const rKey = key.digest('hex');
|
|
24
|
+
if (!resourceCache.has(rKey)) {
|
|
25
|
+
const rId = renderer.render(resource, tx, createResourceCached, hashToSource);
|
|
26
|
+
resourceCache.set(rKey, rId);
|
|
27
|
+
}
|
|
28
|
+
return resourceCache.get(rKey);
|
|
29
|
+
};
|
|
30
|
+
return createResourceCached(tplData.template, TemplateRenderer, tplData.hashToSource);
|
|
31
|
+
}
|
|
32
|
+
const LibRenderer = {
|
|
33
|
+
updateCacheKey(resource, hash, sources) {
|
|
34
|
+
hash
|
|
35
|
+
.update(plModelBackend.PlTemplateLibV1.type.name)
|
|
36
|
+
.update(plModelBackend.PlTemplateLibV1.type.version)
|
|
37
|
+
.update(resource.name)
|
|
38
|
+
.update(resource.version)
|
|
39
|
+
.update(getSourceCode(resource.name, sources, resource.sourceHash));
|
|
40
|
+
},
|
|
41
|
+
render(resource, tx, _creator, sources) {
|
|
42
|
+
return tx.createValue(plModelBackend.PlTemplateLibV1.type, JSON.stringify(plModelBackend.PlTemplateLibV1.fromV3Data(resource, getSourceCode(resource.name, sources, resource.sourceHash)).data));
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
const SoftwareInfoRenderer = {
|
|
46
|
+
updateCacheKey(resource, hash, sources) {
|
|
47
|
+
hash
|
|
48
|
+
.update(plModelBackend.PlTemplateSoftwareV1.type.name)
|
|
49
|
+
.update(plModelBackend.PlTemplateSoftwareV1.type.version)
|
|
50
|
+
.update(resource.name)
|
|
51
|
+
.update(resource.version)
|
|
52
|
+
.update(getSourceCode(resource.name, sources, resource.sourceHash));
|
|
53
|
+
},
|
|
54
|
+
render(resource, tx, _creator, sources) {
|
|
55
|
+
const sw = plModelBackend.PlTemplateSoftwareV1.fromV3Data(resource, getSourceCode(resource.name, sources, resource.sourceHash));
|
|
56
|
+
const ref = tx.createStruct(plModelBackend.PlTemplateSoftwareV1.type, sw.data);
|
|
57
|
+
tx.setKValue(ref, plModelBackend.PlTemplateSoftwareV1.metaNameKey, JSON.stringify(sw.name));
|
|
58
|
+
tx.lock(ref);
|
|
59
|
+
return ref;
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
const TemplateRenderer = {
|
|
63
|
+
updateCacheKey(resource, hash, sources) {
|
|
64
|
+
hash
|
|
65
|
+
.update(plModelBackend.PlTemplateV1.type.name)
|
|
66
|
+
.update(plModelBackend.PlTemplateV1.type.version)
|
|
67
|
+
.update(resource.hashOverride ?? 'no-override')
|
|
68
|
+
.update(resource.name)
|
|
69
|
+
.update(resource.version)
|
|
70
|
+
.update(getSourceCode(resource.name, sources, resource.sourceHash));
|
|
71
|
+
const srt = (entries) => {
|
|
72
|
+
entries.sort((a, b) => (a[0] === b[0] ? 0 : a[0] < b[0] ? -1 : 1));
|
|
73
|
+
return entries;
|
|
74
|
+
};
|
|
75
|
+
for (const [libId, lib] of srt(Object.entries(resource.libs ?? {}))) {
|
|
76
|
+
hash.update('lib:' + libId);
|
|
77
|
+
LibRenderer.updateCacheKey(lib, hash, sources);
|
|
78
|
+
}
|
|
79
|
+
for (const [swId, sw] of srt(Object.entries(resource.software ?? {}))) {
|
|
80
|
+
hash.update('soft:' + swId);
|
|
81
|
+
SoftwareInfoRenderer.updateCacheKey(sw, hash, sources);
|
|
82
|
+
}
|
|
83
|
+
for (const [swId, sw] of srt(Object.entries(resource.assets ?? {}))) {
|
|
84
|
+
hash.update('asset:' + swId);
|
|
85
|
+
SoftwareInfoRenderer.updateCacheKey(sw, hash, sources);
|
|
86
|
+
}
|
|
87
|
+
for (const [tplId, tpl] of srt(Object.entries(resource.templates ?? {}))) {
|
|
88
|
+
hash.update('tpl:' + tplId);
|
|
89
|
+
this.updateCacheKey(tpl, hash, sources);
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
render(resource, tx, _creator, sources) {
|
|
93
|
+
const tplRef = tx.createStruct(plModelBackend.PlTemplateV1.type, JSON.stringify(plModelBackend.PlTemplateV1.fromV3Data(resource, getSourceCode(resource.name, sources, resource.sourceHash)).data));
|
|
94
|
+
// Render libraries
|
|
95
|
+
for (const [libId, lib] of Object.entries(resource.libs ?? {})) {
|
|
96
|
+
const fld = plModelBackend.PlTemplateV1.libField(tplRef, libId);
|
|
97
|
+
tx.createField(fld, 'Input');
|
|
98
|
+
tx.setField(fld, _creator(lib, LibRenderer, sources));
|
|
99
|
+
}
|
|
100
|
+
// Render software and assets
|
|
101
|
+
for (const [swId, sw] of Object.entries(resource.software ?? {})) {
|
|
102
|
+
const fld = plModelBackend.PlTemplateV1.swField(tplRef, swId);
|
|
103
|
+
tx.createField(fld, 'Input');
|
|
104
|
+
tx.setField(fld, _creator(sw, SoftwareInfoRenderer, sources));
|
|
105
|
+
}
|
|
106
|
+
for (const [swId, sw] of Object.entries(resource.assets ?? {})) {
|
|
107
|
+
const fld = plModelBackend.PlTemplateV1.swField(tplRef, swId);
|
|
108
|
+
tx.createField(fld, 'Input');
|
|
109
|
+
tx.setField(fld, _creator(sw, SoftwareInfoRenderer, sources));
|
|
110
|
+
}
|
|
111
|
+
// Render dependency templates
|
|
112
|
+
for (const [depTplId, depTpl] of Object.entries(resource.templates ?? {})) {
|
|
113
|
+
const fld = plModelBackend.PlTemplateV1.tplField(tplRef, depTplId);
|
|
114
|
+
tx.createField(fld, 'Input');
|
|
115
|
+
tx.setField(fld, _creator(depTpl, TemplateRenderer, sources));
|
|
116
|
+
}
|
|
117
|
+
tx.lock(tplRef);
|
|
118
|
+
if (!resource.hashOverride)
|
|
119
|
+
return tplRef;
|
|
120
|
+
// Override template hash with proxy resource, when hash override is configured for template
|
|
121
|
+
const overrideRef = tx.createStruct(plModelBackend.PlTemplateOverrideV1.type, JSON.stringify(plModelBackend.PlTemplateOverrideV1.fromV3Data(resource)));
|
|
122
|
+
const fld = plModelBackend.PlTemplateOverrideV1.tplField(overrideRef);
|
|
123
|
+
tx.createField(fld, 'Service');
|
|
124
|
+
tx.setField(fld, tplRef);
|
|
125
|
+
tx.lock(overrideRef);
|
|
126
|
+
return overrideRef;
|
|
127
|
+
},
|
|
128
|
+
};
|
|
129
|
+
/**
|
|
130
|
+
* Gets a source code of the artifact by its source hash.
|
|
131
|
+
* the source hash was calculated and stored by tengo compiler
|
|
132
|
+
* and is different from the hash we're using for caching here.
|
|
133
|
+
*/
|
|
134
|
+
function getSourceCode(name, sources, sourceHash) {
|
|
135
|
+
return tsHelpers.notEmpty(sources[sourceHash], `trying to get "${name}" source: sources map doesn't contain source hash ${sourceHash}`);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
exports.createTemplateV3Tree = createTemplateV3Tree;
|
|
139
|
+
//# sourceMappingURL=direct_template_loader_v3.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"direct_template_loader_v3.cjs","sources":["../../../src/mutator/template/direct_template_loader_v3.ts"],"sourcesContent":["import type { AnyRef, AnyResourceRef, PlTransaction } from '@milaboratories/pl-client';\nimport type { Hash } from 'node:crypto';\nimport { createHash } from 'node:crypto';\nimport type {\n CompiledTemplateV3,\n TemplateDataV3,\n TemplateLibDataV3,\n TemplateSoftwareDataV3,\n} from '@milaboratories/pl-model-backend';\nimport {\n PlTemplateLibV1,\n PlTemplateSoftwareV1,\n PlTemplateV1,\n PlTemplateOverrideV1,\n} from '@milaboratories/pl-model-backend';\nimport { notEmpty } from '@milaboratories/ts-helpers';\n\n/**\n * Renders the tree of templates by caching all resource ids\n * by their cache keys.\n * It's different from v2 version because we provide\n * the hash map of the code of all sources everywhere.\n * It does a double-dispatch on the node type (template, library etc),\n * and creates resources.\n *\n * IMO, it'd be clearer to rewrite it with Visitor pattern, and separate\n * tree traversing and operations on it, but I don't have time to do it now.\n*/\nexport function createTemplateV3Tree(tx: PlTransaction, tplData: CompiledTemplateV3): AnyRef {\n const resourceCache = new Map<string, AnyResourceRef>();\n\n const createResourceCached = <T>(resource: T, renderer: Renderer<T>, hashToSource: Record<string, string>): AnyResourceRef => {\n const key: Hash = createHash('sha256');\n renderer.updateCacheKey(resource, key, hashToSource);\n\n const rKey = key.digest('hex');\n\n if (!resourceCache.has(rKey)) {\n const rId = renderer.render(resource, tx, createResourceCached, hashToSource);\n resourceCache.set(rKey, rId);\n }\n\n return resourceCache.get(rKey)!;\n };\n\n return createResourceCached(tplData.template, TemplateRenderer, tplData.hashToSource);\n}\n\ntype Renderer<T> = {\n /** Updates the cache key by adding all info of the artifact. */\n updateCacheKey: CacheKey<T>;\n /** Create resources for all dependencies recursively and then for this artifact. */\n render: (resource: T, tx: PlTransaction, creator: Creator, sources: Record<string, string>) => AnyResourceRef;\n};\ntype CacheKey<T> = (resource: T, key: Hash, sources: Record<string, string>) => void;\ntype Creator = <T>(resource: T, renderer: Renderer<T>, sources: Record<string, string>) => AnyResourceRef;\n\nconst LibRenderer: Renderer<TemplateLibDataV3> = {\n updateCacheKey(resource, hash, sources) {\n hash\n .update(PlTemplateLibV1.type.name)\n .update(PlTemplateLibV1.type.version)\n .update(resource.name)\n .update(resource.version)\n .update(getSourceCode(resource.name, sources, resource.sourceHash));\n },\n render(resource, tx, _creator, sources) {\n return tx.createValue(\n PlTemplateLibV1.type,\n JSON.stringify(PlTemplateLibV1.fromV3Data(resource, getSourceCode(resource.name, sources, resource.sourceHash)).data),\n );\n },\n};\n\nconst SoftwareInfoRenderer: Renderer<TemplateSoftwareDataV3> = {\n updateCacheKey(resource, hash, sources) {\n hash\n .update(PlTemplateSoftwareV1.type.name)\n .update(PlTemplateSoftwareV1.type.version)\n .update(resource.name)\n .update(resource.version)\n .update(getSourceCode(resource.name, sources, resource.sourceHash));\n },\n render(resource, tx, _creator, sources) {\n const sw = PlTemplateSoftwareV1.fromV3Data(resource, getSourceCode(resource.name, sources, resource.sourceHash));\n const ref = tx.createStruct(PlTemplateSoftwareV1.type, sw.data);\n tx.setKValue(ref, PlTemplateSoftwareV1.metaNameKey, JSON.stringify(sw.name));\n tx.lock(ref);\n return ref;\n },\n};\n\nconst TemplateRenderer: Renderer<TemplateDataV3> = {\n updateCacheKey(resource, hash, sources) {\n hash\n .update(PlTemplateV1.type.name)\n .update(PlTemplateV1.type.version)\n .update(resource.hashOverride ?? 'no-override')\n .update(resource.name)\n .update(resource.version)\n .update(getSourceCode(resource.name, sources, resource.sourceHash));\n\n const srt = <T>(entries: [string, T][]): [string, T][] => {\n entries.sort((a, b) => (a[0] === b[0] ? 0 : a[0] < b[0] ? -1 : 1));\n return entries;\n };\n\n for (const [libId, lib] of srt(Object.entries(resource.libs ?? {}))) {\n hash.update('lib:' + libId);\n LibRenderer.updateCacheKey(lib, hash, sources);\n }\n for (const [swId, sw] of srt(Object.entries(resource.software ?? {}))) {\n hash.update('soft:' + swId);\n SoftwareInfoRenderer.updateCacheKey(sw, hash, sources);\n }\n for (const [swId, sw] of srt(Object.entries(resource.assets ?? {}))) {\n hash.update('asset:' + swId);\n SoftwareInfoRenderer.updateCacheKey(sw, hash, sources);\n }\n for (const [tplId, tpl] of srt(Object.entries(resource.templates ?? {}))) {\n hash.update('tpl:' + tplId);\n this.updateCacheKey(tpl, hash, sources);\n }\n },\n render(resource, tx, _creator, sources) {\n const tplRef = tx.createStruct(\n PlTemplateV1.type,\n JSON.stringify(PlTemplateV1.fromV3Data(resource, getSourceCode(resource.name, sources, resource.sourceHash)).data),\n );\n // Render libraries\n for (const [libId, lib] of Object.entries(resource.libs ?? {})) {\n const fld = PlTemplateV1.libField(tplRef, libId);\n tx.createField(fld, 'Input');\n tx.setField(fld, _creator(lib, LibRenderer, sources));\n }\n\n // Render software and assets\n for (const [swId, sw] of Object.entries(resource.software ?? {})) {\n const fld = PlTemplateV1.swField(tplRef, swId);\n tx.createField(fld, 'Input');\n tx.setField(fld, _creator(sw, SoftwareInfoRenderer, sources));\n }\n for (const [swId, sw] of Object.entries(resource.assets ?? {})) {\n const fld = PlTemplateV1.swField(tplRef, swId);\n tx.createField(fld, 'Input');\n tx.setField(fld, _creator(sw, SoftwareInfoRenderer, sources));\n }\n\n // Render dependency templates\n for (const [depTplId, depTpl] of Object.entries(resource.templates ?? {})) {\n const fld = PlTemplateV1.tplField(tplRef, depTplId);\n tx.createField(fld, 'Input');\n tx.setField(fld, _creator(depTpl, TemplateRenderer, sources));\n }\n\n tx.lock(tplRef);\n\n if (!resource.hashOverride) return tplRef;\n\n // Override template hash with proxy resource, when hash override is configured for template\n const overrideRef = tx.createStruct(\n PlTemplateOverrideV1.type,\n JSON.stringify(PlTemplateOverrideV1.fromV3Data(resource)),\n );\n const fld = PlTemplateOverrideV1.tplField(overrideRef);\n tx.createField(fld, 'Service');\n tx.setField(fld, tplRef);\n tx.lock(overrideRef);\n return overrideRef;\n },\n};\n\n/**\n * Gets a source code of the artifact by its source hash.\n * the source hash was calculated and stored by tengo compiler\n * and is different from the hash we're using for caching here.\n */\nfunction getSourceCode(name: string, sources: Record<string, string>, sourceHash: string): string {\n return notEmpty(\n sources[sourceHash],\n `trying to get \"${name}\" source: sources map doesn't contain source hash ${sourceHash}`,\n );\n}\n"],"names":["createHash","PlTemplateLibV1","PlTemplateSoftwareV1","PlTemplateV1","PlTemplateOverrideV1","notEmpty"],"mappings":"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"}
|
|
@@ -12,4 +12,3 @@ import { CompiledTemplateV3 } from '@milaboratories/pl-model-backend';
|
|
|
12
12
|
* tree traversing and operations on it, but I don't have time to do it now.
|
|
13
13
|
*/
|
|
14
14
|
export declare function createTemplateV3Tree(tx: PlTransaction, tplData: CompiledTemplateV3): AnyRef;
|
|
15
|
-
//# sourceMappingURL=direct_template_loader_v3.d.ts.map
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { PlTemplateV1, PlTemplateOverrideV1, PlTemplateLibV1, PlTemplateSoftwareV1 } from '@milaboratories/pl-model-backend';
|
|
3
|
+
import { notEmpty } from '@milaboratories/ts-helpers';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Renders the tree of templates by caching all resource ids
|
|
7
|
+
* by their cache keys.
|
|
8
|
+
* It's different from v2 version because we provide
|
|
9
|
+
* the hash map of the code of all sources everywhere.
|
|
10
|
+
* It does a double-dispatch on the node type (template, library etc),
|
|
11
|
+
* and creates resources.
|
|
12
|
+
*
|
|
13
|
+
* IMO, it'd be clearer to rewrite it with Visitor pattern, and separate
|
|
14
|
+
* tree traversing and operations on it, but I don't have time to do it now.
|
|
15
|
+
*/
|
|
16
|
+
function createTemplateV3Tree(tx, tplData) {
|
|
17
|
+
const resourceCache = new Map();
|
|
18
|
+
const createResourceCached = (resource, renderer, hashToSource) => {
|
|
19
|
+
const key = createHash('sha256');
|
|
20
|
+
renderer.updateCacheKey(resource, key, hashToSource);
|
|
21
|
+
const rKey = key.digest('hex');
|
|
22
|
+
if (!resourceCache.has(rKey)) {
|
|
23
|
+
const rId = renderer.render(resource, tx, createResourceCached, hashToSource);
|
|
24
|
+
resourceCache.set(rKey, rId);
|
|
25
|
+
}
|
|
26
|
+
return resourceCache.get(rKey);
|
|
27
|
+
};
|
|
28
|
+
return createResourceCached(tplData.template, TemplateRenderer, tplData.hashToSource);
|
|
29
|
+
}
|
|
30
|
+
const LibRenderer = {
|
|
31
|
+
updateCacheKey(resource, hash, sources) {
|
|
32
|
+
hash
|
|
33
|
+
.update(PlTemplateLibV1.type.name)
|
|
34
|
+
.update(PlTemplateLibV1.type.version)
|
|
35
|
+
.update(resource.name)
|
|
36
|
+
.update(resource.version)
|
|
37
|
+
.update(getSourceCode(resource.name, sources, resource.sourceHash));
|
|
38
|
+
},
|
|
39
|
+
render(resource, tx, _creator, sources) {
|
|
40
|
+
return tx.createValue(PlTemplateLibV1.type, JSON.stringify(PlTemplateLibV1.fromV3Data(resource, getSourceCode(resource.name, sources, resource.sourceHash)).data));
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
const SoftwareInfoRenderer = {
|
|
44
|
+
updateCacheKey(resource, hash, sources) {
|
|
45
|
+
hash
|
|
46
|
+
.update(PlTemplateSoftwareV1.type.name)
|
|
47
|
+
.update(PlTemplateSoftwareV1.type.version)
|
|
48
|
+
.update(resource.name)
|
|
49
|
+
.update(resource.version)
|
|
50
|
+
.update(getSourceCode(resource.name, sources, resource.sourceHash));
|
|
51
|
+
},
|
|
52
|
+
render(resource, tx, _creator, sources) {
|
|
53
|
+
const sw = PlTemplateSoftwareV1.fromV3Data(resource, getSourceCode(resource.name, sources, resource.sourceHash));
|
|
54
|
+
const ref = tx.createStruct(PlTemplateSoftwareV1.type, sw.data);
|
|
55
|
+
tx.setKValue(ref, PlTemplateSoftwareV1.metaNameKey, JSON.stringify(sw.name));
|
|
56
|
+
tx.lock(ref);
|
|
57
|
+
return ref;
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
const TemplateRenderer = {
|
|
61
|
+
updateCacheKey(resource, hash, sources) {
|
|
62
|
+
hash
|
|
63
|
+
.update(PlTemplateV1.type.name)
|
|
64
|
+
.update(PlTemplateV1.type.version)
|
|
65
|
+
.update(resource.hashOverride ?? 'no-override')
|
|
66
|
+
.update(resource.name)
|
|
67
|
+
.update(resource.version)
|
|
68
|
+
.update(getSourceCode(resource.name, sources, resource.sourceHash));
|
|
69
|
+
const srt = (entries) => {
|
|
70
|
+
entries.sort((a, b) => (a[0] === b[0] ? 0 : a[0] < b[0] ? -1 : 1));
|
|
71
|
+
return entries;
|
|
72
|
+
};
|
|
73
|
+
for (const [libId, lib] of srt(Object.entries(resource.libs ?? {}))) {
|
|
74
|
+
hash.update('lib:' + libId);
|
|
75
|
+
LibRenderer.updateCacheKey(lib, hash, sources);
|
|
76
|
+
}
|
|
77
|
+
for (const [swId, sw] of srt(Object.entries(resource.software ?? {}))) {
|
|
78
|
+
hash.update('soft:' + swId);
|
|
79
|
+
SoftwareInfoRenderer.updateCacheKey(sw, hash, sources);
|
|
80
|
+
}
|
|
81
|
+
for (const [swId, sw] of srt(Object.entries(resource.assets ?? {}))) {
|
|
82
|
+
hash.update('asset:' + swId);
|
|
83
|
+
SoftwareInfoRenderer.updateCacheKey(sw, hash, sources);
|
|
84
|
+
}
|
|
85
|
+
for (const [tplId, tpl] of srt(Object.entries(resource.templates ?? {}))) {
|
|
86
|
+
hash.update('tpl:' + tplId);
|
|
87
|
+
this.updateCacheKey(tpl, hash, sources);
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
render(resource, tx, _creator, sources) {
|
|
91
|
+
const tplRef = tx.createStruct(PlTemplateV1.type, JSON.stringify(PlTemplateV1.fromV3Data(resource, getSourceCode(resource.name, sources, resource.sourceHash)).data));
|
|
92
|
+
// Render libraries
|
|
93
|
+
for (const [libId, lib] of Object.entries(resource.libs ?? {})) {
|
|
94
|
+
const fld = PlTemplateV1.libField(tplRef, libId);
|
|
95
|
+
tx.createField(fld, 'Input');
|
|
96
|
+
tx.setField(fld, _creator(lib, LibRenderer, sources));
|
|
97
|
+
}
|
|
98
|
+
// Render software and assets
|
|
99
|
+
for (const [swId, sw] of Object.entries(resource.software ?? {})) {
|
|
100
|
+
const fld = PlTemplateV1.swField(tplRef, swId);
|
|
101
|
+
tx.createField(fld, 'Input');
|
|
102
|
+
tx.setField(fld, _creator(sw, SoftwareInfoRenderer, sources));
|
|
103
|
+
}
|
|
104
|
+
for (const [swId, sw] of Object.entries(resource.assets ?? {})) {
|
|
105
|
+
const fld = PlTemplateV1.swField(tplRef, swId);
|
|
106
|
+
tx.createField(fld, 'Input');
|
|
107
|
+
tx.setField(fld, _creator(sw, SoftwareInfoRenderer, sources));
|
|
108
|
+
}
|
|
109
|
+
// Render dependency templates
|
|
110
|
+
for (const [depTplId, depTpl] of Object.entries(resource.templates ?? {})) {
|
|
111
|
+
const fld = PlTemplateV1.tplField(tplRef, depTplId);
|
|
112
|
+
tx.createField(fld, 'Input');
|
|
113
|
+
tx.setField(fld, _creator(depTpl, TemplateRenderer, sources));
|
|
114
|
+
}
|
|
115
|
+
tx.lock(tplRef);
|
|
116
|
+
if (!resource.hashOverride)
|
|
117
|
+
return tplRef;
|
|
118
|
+
// Override template hash with proxy resource, when hash override is configured for template
|
|
119
|
+
const overrideRef = tx.createStruct(PlTemplateOverrideV1.type, JSON.stringify(PlTemplateOverrideV1.fromV3Data(resource)));
|
|
120
|
+
const fld = PlTemplateOverrideV1.tplField(overrideRef);
|
|
121
|
+
tx.createField(fld, 'Service');
|
|
122
|
+
tx.setField(fld, tplRef);
|
|
123
|
+
tx.lock(overrideRef);
|
|
124
|
+
return overrideRef;
|
|
125
|
+
},
|
|
126
|
+
};
|
|
127
|
+
/**
|
|
128
|
+
* Gets a source code of the artifact by its source hash.
|
|
129
|
+
* the source hash was calculated and stored by tengo compiler
|
|
130
|
+
* and is different from the hash we're using for caching here.
|
|
131
|
+
*/
|
|
132
|
+
function getSourceCode(name, sources, sourceHash) {
|
|
133
|
+
return notEmpty(sources[sourceHash], `trying to get "${name}" source: sources map doesn't contain source hash ${sourceHash}`);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
export { createTemplateV3Tree };
|
|
137
|
+
//# sourceMappingURL=direct_template_loader_v3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"direct_template_loader_v3.js","sources":["../../../src/mutator/template/direct_template_loader_v3.ts"],"sourcesContent":["import type { AnyRef, AnyResourceRef, PlTransaction } from '@milaboratories/pl-client';\nimport type { Hash } from 'node:crypto';\nimport { createHash } from 'node:crypto';\nimport type {\n CompiledTemplateV3,\n TemplateDataV3,\n TemplateLibDataV3,\n TemplateSoftwareDataV3,\n} from '@milaboratories/pl-model-backend';\nimport {\n PlTemplateLibV1,\n PlTemplateSoftwareV1,\n PlTemplateV1,\n PlTemplateOverrideV1,\n} from '@milaboratories/pl-model-backend';\nimport { notEmpty } from '@milaboratories/ts-helpers';\n\n/**\n * Renders the tree of templates by caching all resource ids\n * by their cache keys.\n * It's different from v2 version because we provide\n * the hash map of the code of all sources everywhere.\n * It does a double-dispatch on the node type (template, library etc),\n * and creates resources.\n *\n * IMO, it'd be clearer to rewrite it with Visitor pattern, and separate\n * tree traversing and operations on it, but I don't have time to do it now.\n*/\nexport function createTemplateV3Tree(tx: PlTransaction, tplData: CompiledTemplateV3): AnyRef {\n const resourceCache = new Map<string, AnyResourceRef>();\n\n const createResourceCached = <T>(resource: T, renderer: Renderer<T>, hashToSource: Record<string, string>): AnyResourceRef => {\n const key: Hash = createHash('sha256');\n renderer.updateCacheKey(resource, key, hashToSource);\n\n const rKey = key.digest('hex');\n\n if (!resourceCache.has(rKey)) {\n const rId = renderer.render(resource, tx, createResourceCached, hashToSource);\n resourceCache.set(rKey, rId);\n }\n\n return resourceCache.get(rKey)!;\n };\n\n return createResourceCached(tplData.template, TemplateRenderer, tplData.hashToSource);\n}\n\ntype Renderer<T> = {\n /** Updates the cache key by adding all info of the artifact. */\n updateCacheKey: CacheKey<T>;\n /** Create resources for all dependencies recursively and then for this artifact. */\n render: (resource: T, tx: PlTransaction, creator: Creator, sources: Record<string, string>) => AnyResourceRef;\n};\ntype CacheKey<T> = (resource: T, key: Hash, sources: Record<string, string>) => void;\ntype Creator = <T>(resource: T, renderer: Renderer<T>, sources: Record<string, string>) => AnyResourceRef;\n\nconst LibRenderer: Renderer<TemplateLibDataV3> = {\n updateCacheKey(resource, hash, sources) {\n hash\n .update(PlTemplateLibV1.type.name)\n .update(PlTemplateLibV1.type.version)\n .update(resource.name)\n .update(resource.version)\n .update(getSourceCode(resource.name, sources, resource.sourceHash));\n },\n render(resource, tx, _creator, sources) {\n return tx.createValue(\n PlTemplateLibV1.type,\n JSON.stringify(PlTemplateLibV1.fromV3Data(resource, getSourceCode(resource.name, sources, resource.sourceHash)).data),\n );\n },\n};\n\nconst SoftwareInfoRenderer: Renderer<TemplateSoftwareDataV3> = {\n updateCacheKey(resource, hash, sources) {\n hash\n .update(PlTemplateSoftwareV1.type.name)\n .update(PlTemplateSoftwareV1.type.version)\n .update(resource.name)\n .update(resource.version)\n .update(getSourceCode(resource.name, sources, resource.sourceHash));\n },\n render(resource, tx, _creator, sources) {\n const sw = PlTemplateSoftwareV1.fromV3Data(resource, getSourceCode(resource.name, sources, resource.sourceHash));\n const ref = tx.createStruct(PlTemplateSoftwareV1.type, sw.data);\n tx.setKValue(ref, PlTemplateSoftwareV1.metaNameKey, JSON.stringify(sw.name));\n tx.lock(ref);\n return ref;\n },\n};\n\nconst TemplateRenderer: Renderer<TemplateDataV3> = {\n updateCacheKey(resource, hash, sources) {\n hash\n .update(PlTemplateV1.type.name)\n .update(PlTemplateV1.type.version)\n .update(resource.hashOverride ?? 'no-override')\n .update(resource.name)\n .update(resource.version)\n .update(getSourceCode(resource.name, sources, resource.sourceHash));\n\n const srt = <T>(entries: [string, T][]): [string, T][] => {\n entries.sort((a, b) => (a[0] === b[0] ? 0 : a[0] < b[0] ? -1 : 1));\n return entries;\n };\n\n for (const [libId, lib] of srt(Object.entries(resource.libs ?? {}))) {\n hash.update('lib:' + libId);\n LibRenderer.updateCacheKey(lib, hash, sources);\n }\n for (const [swId, sw] of srt(Object.entries(resource.software ?? {}))) {\n hash.update('soft:' + swId);\n SoftwareInfoRenderer.updateCacheKey(sw, hash, sources);\n }\n for (const [swId, sw] of srt(Object.entries(resource.assets ?? {}))) {\n hash.update('asset:' + swId);\n SoftwareInfoRenderer.updateCacheKey(sw, hash, sources);\n }\n for (const [tplId, tpl] of srt(Object.entries(resource.templates ?? {}))) {\n hash.update('tpl:' + tplId);\n this.updateCacheKey(tpl, hash, sources);\n }\n },\n render(resource, tx, _creator, sources) {\n const tplRef = tx.createStruct(\n PlTemplateV1.type,\n JSON.stringify(PlTemplateV1.fromV3Data(resource, getSourceCode(resource.name, sources, resource.sourceHash)).data),\n );\n // Render libraries\n for (const [libId, lib] of Object.entries(resource.libs ?? {})) {\n const fld = PlTemplateV1.libField(tplRef, libId);\n tx.createField(fld, 'Input');\n tx.setField(fld, _creator(lib, LibRenderer, sources));\n }\n\n // Render software and assets\n for (const [swId, sw] of Object.entries(resource.software ?? {})) {\n const fld = PlTemplateV1.swField(tplRef, swId);\n tx.createField(fld, 'Input');\n tx.setField(fld, _creator(sw, SoftwareInfoRenderer, sources));\n }\n for (const [swId, sw] of Object.entries(resource.assets ?? {})) {\n const fld = PlTemplateV1.swField(tplRef, swId);\n tx.createField(fld, 'Input');\n tx.setField(fld, _creator(sw, SoftwareInfoRenderer, sources));\n }\n\n // Render dependency templates\n for (const [depTplId, depTpl] of Object.entries(resource.templates ?? {})) {\n const fld = PlTemplateV1.tplField(tplRef, depTplId);\n tx.createField(fld, 'Input');\n tx.setField(fld, _creator(depTpl, TemplateRenderer, sources));\n }\n\n tx.lock(tplRef);\n\n if (!resource.hashOverride) return tplRef;\n\n // Override template hash with proxy resource, when hash override is configured for template\n const overrideRef = tx.createStruct(\n PlTemplateOverrideV1.type,\n JSON.stringify(PlTemplateOverrideV1.fromV3Data(resource)),\n );\n const fld = PlTemplateOverrideV1.tplField(overrideRef);\n tx.createField(fld, 'Service');\n tx.setField(fld, tplRef);\n tx.lock(overrideRef);\n return overrideRef;\n },\n};\n\n/**\n * Gets a source code of the artifact by its source hash.\n * the source hash was calculated and stored by tengo compiler\n * and is different from the hash we're using for caching here.\n */\nfunction getSourceCode(name: string, sources: Record<string, string>, sourceHash: string): string {\n return notEmpty(\n sources[sourceHash],\n `trying to get \"${name}\" source: sources map doesn't contain source hash ${sourceHash}`,\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var plClient = require('@milaboratories/pl-client');
|
|
4
|
+
var node_crypto = require('node:crypto');
|
|
5
|
+
var render_template = require('./render_template.cjs');
|
|
6
|
+
|
|
7
|
+
const BContextEnd = { name: 'BContextEnd', version: '1' };
|
|
8
|
+
const BContext = { name: 'BContext', version: '1' };
|
|
9
|
+
const BContextId = 'id';
|
|
10
|
+
const BContextMultiParentPrefix = 'parent/';
|
|
11
|
+
const HeavyBlockOutputNames = ['context', 'result'];
|
|
12
|
+
function createRenderHeavyBlock(tx, tpl, inputs) {
|
|
13
|
+
return render_template.createRenderTemplate(tx, tpl, true, inputs, HeavyBlockOutputNames);
|
|
14
|
+
}
|
|
15
|
+
function createBContextEnd(tx) {
|
|
16
|
+
const ctx = tx.createEphemeral(BContextEnd);
|
|
17
|
+
tx.lock(ctx);
|
|
18
|
+
return ctx;
|
|
19
|
+
}
|
|
20
|
+
function createBContextFromUpstreams(tx, upstreamCtxs) {
|
|
21
|
+
if (upstreamCtxs.length === 0)
|
|
22
|
+
return createBContextEnd(tx);
|
|
23
|
+
if (upstreamCtxs.length === 1)
|
|
24
|
+
return upstreamCtxs[0];
|
|
25
|
+
const ctx = tx.createEphemeral(BContext);
|
|
26
|
+
// setting id
|
|
27
|
+
tx.createField(plClient.field(ctx, BContextId), 'Input', plClient.Pl.createPlString(tx, node_crypto.randomUUID()));
|
|
28
|
+
// setting parents
|
|
29
|
+
for (let i = 0; i < upstreamCtxs.length; i++)
|
|
30
|
+
tx.createField(plClient.field(ctx, `${BContextMultiParentPrefix}${i}`), 'Input', upstreamCtxs[i]);
|
|
31
|
+
tx.lock(ctx);
|
|
32
|
+
return ctx;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
exports.BContext = BContext;
|
|
36
|
+
exports.BContextEnd = BContextEnd;
|
|
37
|
+
exports.BContextId = BContextId;
|
|
38
|
+
exports.BContextMultiParentPrefix = BContextMultiParentPrefix;
|
|
39
|
+
exports.HeavyBlockOutputNames = HeavyBlockOutputNames;
|
|
40
|
+
exports.createBContextEnd = createBContextEnd;
|
|
41
|
+
exports.createBContextFromUpstreams = createBContextFromUpstreams;
|
|
42
|
+
exports.createRenderHeavyBlock = createRenderHeavyBlock;
|
|
43
|
+
//# sourceMappingURL=render_block.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render_block.cjs","sources":["../../../src/mutator/template/render_block.ts"],"sourcesContent":["import type {\n AnyRef,\n PlTransaction,\n ResourceRef,\n ResourceType } from '@milaboratories/pl-client';\nimport {\n field,\n Pl,\n} from '@milaboratories/pl-client';\nimport { randomUUID } from 'node:crypto';\nimport { createRenderTemplate } from './render_template';\n\nexport const BContextEnd: ResourceType = { name: 'BContextEnd', version: '1' };\nexport const BContext: ResourceType = { name: 'BContext', version: '1' };\nexport const BContextId = 'id';\nexport const BContextParent = 'parent';\nexport const BContextMultiParentPrefix = 'parent/';\n\n// TODO: add implementation for dual context heavy block.\n// export type BlockType =\n// | 'LightBlock'\n// | 'HeavyBlock'\n// | 'DualContextHeavyBlock';\n// moved to project model ==>>>\n\nexport type HeavyBlockInputs = {\n args: AnyRef;\n blockId: AnyRef;\n isProduction: AnyRef;\n context: AnyRef;\n};\n\nexport type HeavyBlockOutputs = {\n context: AnyRef;\n result: AnyRef;\n};\n\nexport const HeavyBlockOutputNames: (keyof HeavyBlockOutputs)[] = ['context', 'result'];\n\nexport function createRenderHeavyBlock(\n tx: PlTransaction,\n tpl: AnyRef,\n inputs: HeavyBlockInputs,\n): HeavyBlockOutputs {\n return createRenderTemplate(tx, tpl, true, inputs, HeavyBlockOutputNames);\n}\n\nexport type LightBlockInputs = {\n args: AnyRef;\n blockId: AnyRef;\n stagingContext: AnyRef;\n productionContext: AnyRef;\n};\n\nexport type LightBlockOutput = {\n result: AnyRef;\n};\n\nexport const LightBlockOutputNames: (keyof LightBlockOutput)[] = ['result'];\n\nexport function createRenderLightBlock(\n tx: PlTransaction,\n tpl: ResourceRef,\n inputs: LightBlockInputs,\n): LightBlockOutput {\n return createRenderTemplate(tx, tpl, true, inputs, LightBlockOutputNames);\n}\n\nexport function createBContextEnd(tx: PlTransaction): ResourceRef {\n const ctx = tx.createEphemeral(BContextEnd);\n tx.lock(ctx);\n return ctx;\n}\n\nexport function createBContextFromUpstreams(tx: PlTransaction, upstreamCtxs: AnyRef[]): AnyRef {\n if (upstreamCtxs.length === 0) return createBContextEnd(tx);\n\n if (upstreamCtxs.length === 1) return upstreamCtxs[0];\n\n const ctx = tx.createEphemeral(BContext);\n\n // setting id\n tx.createField(field(ctx, BContextId), 'Input', Pl.createPlString(tx, randomUUID()));\n\n // setting parents\n for (let i = 0; i < upstreamCtxs.length; i++)\n tx.createField(field(ctx, `${BContextMultiParentPrefix}${i}`), 'Input', upstreamCtxs[i]);\n\n tx.lock(ctx);\n\n return ctx;\n}\n"],"names":["createRenderTemplate","field","Pl","randomUUID"],"mappings":";;;;;;AAYO,MAAM,WAAW,GAAiB,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG;AACrE,MAAM,QAAQ,GAAiB,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG;AAC/D,MAAM,UAAU,GAAG;AAEnB,MAAM,yBAAyB,GAAG;MAqB5B,qBAAqB,GAAgC,CAAC,SAAS,EAAE,QAAQ;SAEtE,sBAAsB,CACpC,EAAiB,EACjB,GAAW,EACX,MAAwB,EAAA;AAExB,IAAA,OAAOA,oCAAoB,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,qBAAqB,CAAC;AAC3E;AAuBM,SAAU,iBAAiB,CAAC,EAAiB,EAAA;IACjD,MAAM,GAAG,GAAG,EAAE,CAAC,eAAe,CAAC,WAAW,CAAC;AAC3C,IAAA,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;AACZ,IAAA,OAAO,GAAG;AACZ;AAEM,SAAU,2BAA2B,CAAC,EAAiB,EAAE,YAAsB,EAAA;AACnF,IAAA,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,iBAAiB,CAAC,EAAE,CAAC;AAE3D,IAAA,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,YAAY,CAAC,CAAC,CAAC;IAErD,MAAM,GAAG,GAAG,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC;;IAGxC,EAAE,CAAC,WAAW,CAACC,cAAK,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,OAAO,EAAEC,WAAE,CAAC,cAAc,CAAC,EAAE,EAAEC,sBAAU,EAAE,CAAC,CAAC;;AAGpF,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE;QAC1C,EAAE,CAAC,WAAW,CAACF,cAAK,CAAC,GAAG,EAAE,GAAG,yBAAyB,CAAA,EAAG,CAAC,CAAA,CAAE,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;AAE1F,IAAA,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;AAEZ,IAAA,OAAO,GAAG;AACZ;;;;;;;;;;;"}
|
|
@@ -29,4 +29,3 @@ export declare const LightBlockOutputNames: (keyof LightBlockOutput)[];
|
|
|
29
29
|
export declare function createRenderLightBlock(tx: PlTransaction, tpl: ResourceRef, inputs: LightBlockInputs): LightBlockOutput;
|
|
30
30
|
export declare function createBContextEnd(tx: PlTransaction): ResourceRef;
|
|
31
31
|
export declare function createBContextFromUpstreams(tx: PlTransaction, upstreamCtxs: AnyRef[]): AnyRef;
|
|
32
|
-
//# sourceMappingURL=render_block.d.ts.map
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { field, Pl } from '@milaboratories/pl-client';
|
|
2
|
+
import { randomUUID } from 'node:crypto';
|
|
3
|
+
import { createRenderTemplate } from './render_template.js';
|
|
4
|
+
|
|
5
|
+
const BContextEnd = { name: 'BContextEnd', version: '1' };
|
|
6
|
+
const BContext = { name: 'BContext', version: '1' };
|
|
7
|
+
const BContextId = 'id';
|
|
8
|
+
const BContextMultiParentPrefix = 'parent/';
|
|
9
|
+
const HeavyBlockOutputNames = ['context', 'result'];
|
|
10
|
+
function createRenderHeavyBlock(tx, tpl, inputs) {
|
|
11
|
+
return createRenderTemplate(tx, tpl, true, inputs, HeavyBlockOutputNames);
|
|
12
|
+
}
|
|
13
|
+
function createBContextEnd(tx) {
|
|
14
|
+
const ctx = tx.createEphemeral(BContextEnd);
|
|
15
|
+
tx.lock(ctx);
|
|
16
|
+
return ctx;
|
|
17
|
+
}
|
|
18
|
+
function createBContextFromUpstreams(tx, upstreamCtxs) {
|
|
19
|
+
if (upstreamCtxs.length === 0)
|
|
20
|
+
return createBContextEnd(tx);
|
|
21
|
+
if (upstreamCtxs.length === 1)
|
|
22
|
+
return upstreamCtxs[0];
|
|
23
|
+
const ctx = tx.createEphemeral(BContext);
|
|
24
|
+
// setting id
|
|
25
|
+
tx.createField(field(ctx, BContextId), 'Input', Pl.createPlString(tx, randomUUID()));
|
|
26
|
+
// setting parents
|
|
27
|
+
for (let i = 0; i < upstreamCtxs.length; i++)
|
|
28
|
+
tx.createField(field(ctx, `${BContextMultiParentPrefix}${i}`), 'Input', upstreamCtxs[i]);
|
|
29
|
+
tx.lock(ctx);
|
|
30
|
+
return ctx;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export { BContext, BContextEnd, BContextId, BContextMultiParentPrefix, HeavyBlockOutputNames, createBContextEnd, createBContextFromUpstreams, createRenderHeavyBlock };
|
|
34
|
+
//# sourceMappingURL=render_block.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render_block.js","sources":["../../../src/mutator/template/render_block.ts"],"sourcesContent":["import type {\n AnyRef,\n PlTransaction,\n ResourceRef,\n ResourceType } from '@milaboratories/pl-client';\nimport {\n field,\n Pl,\n} from '@milaboratories/pl-client';\nimport { randomUUID } from 'node:crypto';\nimport { createRenderTemplate } from './render_template';\n\nexport const BContextEnd: ResourceType = { name: 'BContextEnd', version: '1' };\nexport const BContext: ResourceType = { name: 'BContext', version: '1' };\nexport const BContextId = 'id';\nexport const BContextParent = 'parent';\nexport const BContextMultiParentPrefix = 'parent/';\n\n// TODO: add implementation for dual context heavy block.\n// export type BlockType =\n// | 'LightBlock'\n// | 'HeavyBlock'\n// | 'DualContextHeavyBlock';\n// moved to project model ==>>>\n\nexport type HeavyBlockInputs = {\n args: AnyRef;\n blockId: AnyRef;\n isProduction: AnyRef;\n context: AnyRef;\n};\n\nexport type HeavyBlockOutputs = {\n context: AnyRef;\n result: AnyRef;\n};\n\nexport const HeavyBlockOutputNames: (keyof HeavyBlockOutputs)[] = ['context', 'result'];\n\nexport function createRenderHeavyBlock(\n tx: PlTransaction,\n tpl: AnyRef,\n inputs: HeavyBlockInputs,\n): HeavyBlockOutputs {\n return createRenderTemplate(tx, tpl, true, inputs, HeavyBlockOutputNames);\n}\n\nexport type LightBlockInputs = {\n args: AnyRef;\n blockId: AnyRef;\n stagingContext: AnyRef;\n productionContext: AnyRef;\n};\n\nexport type LightBlockOutput = {\n result: AnyRef;\n};\n\nexport const LightBlockOutputNames: (keyof LightBlockOutput)[] = ['result'];\n\nexport function createRenderLightBlock(\n tx: PlTransaction,\n tpl: ResourceRef,\n inputs: LightBlockInputs,\n): LightBlockOutput {\n return createRenderTemplate(tx, tpl, true, inputs, LightBlockOutputNames);\n}\n\nexport function createBContextEnd(tx: PlTransaction): ResourceRef {\n const ctx = tx.createEphemeral(BContextEnd);\n tx.lock(ctx);\n return ctx;\n}\n\nexport function createBContextFromUpstreams(tx: PlTransaction, upstreamCtxs: AnyRef[]): AnyRef {\n if (upstreamCtxs.length === 0) return createBContextEnd(tx);\n\n if (upstreamCtxs.length === 1) return upstreamCtxs[0];\n\n const ctx = tx.createEphemeral(BContext);\n\n // setting id\n tx.createField(field(ctx, BContextId), 'Input', Pl.createPlString(tx, randomUUID()));\n\n // setting parents\n for (let i = 0; i < upstreamCtxs.length; i++)\n tx.createField(field(ctx, `${BContextMultiParentPrefix}${i}`), 'Input', upstreamCtxs[i]);\n\n tx.lock(ctx);\n\n return ctx;\n}\n"],"names":[],"mappings":";;;;AAYO,MAAM,WAAW,GAAiB,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG;AACrE,MAAM,QAAQ,GAAiB,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG;AAC/D,MAAM,UAAU,GAAG;AAEnB,MAAM,yBAAyB,GAAG;MAqB5B,qBAAqB,GAAgC,CAAC,SAAS,EAAE,QAAQ;SAEtE,sBAAsB,CACpC,EAAiB,EACjB,GAAW,EACX,MAAwB,EAAA;AAExB,IAAA,OAAO,oBAAoB,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,qBAAqB,CAAC;AAC3E;AAuBM,SAAU,iBAAiB,CAAC,EAAiB,EAAA;IACjD,MAAM,GAAG,GAAG,EAAE,CAAC,eAAe,CAAC,WAAW,CAAC;AAC3C,IAAA,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;AACZ,IAAA,OAAO,GAAG;AACZ;AAEM,SAAU,2BAA2B,CAAC,EAAiB,EAAE,YAAsB,EAAA;AACnF,IAAA,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,iBAAiB,CAAC,EAAE,CAAC;AAE3D,IAAA,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,YAAY,CAAC,CAAC,CAAC;IAErD,MAAM,GAAG,GAAG,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC;;IAGxC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;;AAGpF,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE;QAC1C,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,yBAAyB,CAAA,EAAG,CAAC,CAAA,CAAE,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;AAE1F,IAAA,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;AAEZ,IAAA,OAAO,GAAG;AACZ;;;;"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var plClient = require('@milaboratories/pl-client');
|
|
4
|
+
|
|
5
|
+
const EphRenderTemplate = {
|
|
6
|
+
name: 'EphRenderTemplate',
|
|
7
|
+
version: '1',
|
|
8
|
+
};
|
|
9
|
+
const RenderTemplate = {
|
|
10
|
+
name: 'RenderTemplate',
|
|
11
|
+
version: '1',
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Creates render template operation, for a given remplate and inputs.
|
|
15
|
+
*
|
|
16
|
+
* @param tx transaction to use during rendering creation
|
|
17
|
+
* @param tpl reference to the template resource (see {@link loadTemplate})
|
|
18
|
+
* @param ephemeral true for ephemeral templates, false for pure templates
|
|
19
|
+
* @param inputs map of inputs pointing to other resources or fields
|
|
20
|
+
* @param outputNames names of the outputs to collect and return from this method
|
|
21
|
+
*/
|
|
22
|
+
function createRenderTemplate(tx, tpl, ephemeral, inputs, outputNames) {
|
|
23
|
+
if (outputNames.length === 0)
|
|
24
|
+
throw new Error('Zero output names provided');
|
|
25
|
+
const rId = ephemeral ? tx.createEphemeral(EphRenderTemplate) : tx.createStruct(RenderTemplate);
|
|
26
|
+
const tplField = plClient.field(rId, 'template');
|
|
27
|
+
const inputsField = plClient.field(rId, 'inputs');
|
|
28
|
+
tx.createField(tplField, 'Input', tpl);
|
|
29
|
+
tx.createField(inputsField, 'Input', plClient.Pl.createPlMap(tx, inputs, ephemeral));
|
|
30
|
+
tx.lockInputs(rId);
|
|
31
|
+
return plClient.Pl.futureRecord(tx, rId, outputNames, 'Output', 'outputs/');
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
exports.createRenderTemplate = createRenderTemplate;
|
|
35
|
+
//# sourceMappingURL=render_template.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render_template.cjs","sources":["../../../src/mutator/template/render_template.ts"],"sourcesContent":["import type { AnyRef, FieldRef, PlTransaction } from '@milaboratories/pl-client';\nimport { field, Pl } from '@milaboratories/pl-client';\nimport type { ResourceType } from '@platforma-sdk/model';\n\nconst EphRenderTemplate: ResourceType = {\n name: 'EphRenderTemplate',\n version: '1',\n};\nconst RenderTemplate: ResourceType = {\n name: 'RenderTemplate',\n version: '1',\n};\n\n/**\n * Creates render template operation, for a given remplate and inputs.\n *\n * @param tx transaction to use during rendering creation\n * @param tpl reference to the template resource (see {@link loadTemplate})\n * @param ephemeral true for ephemeral templates, false for pure templates\n * @param inputs map of inputs pointing to other resources or fields\n * @param outputNames names of the outputs to collect and return from this method\n */\nexport function createRenderTemplate<O extends string>(\n tx: PlTransaction,\n tpl: AnyRef,\n ephemeral: boolean,\n inputs: Pl.PlRecord,\n outputNames: O[],\n): Record<O, FieldRef> {\n if (outputNames.length === 0) throw new Error('Zero output names provided');\n const rId = ephemeral ? tx.createEphemeral(EphRenderTemplate) : tx.createStruct(RenderTemplate);\n\n const tplField = field(rId, 'template');\n const inputsField = field(rId, 'inputs');\n\n tx.createField(tplField, 'Input', tpl);\n tx.createField(inputsField, 'Input', Pl.createPlMap(tx, inputs, ephemeral));\n tx.lockInputs(rId);\n\n return Pl.futureRecord(tx, rId, outputNames, 'Output', 'outputs/');\n}\n"],"names":["field","Pl"],"mappings":";;;;AAIA,MAAM,iBAAiB,GAAiB;AACtC,IAAA,IAAI,EAAE,mBAAmB;AACzB,IAAA,OAAO,EAAE,GAAG;CACb;AACD,MAAM,cAAc,GAAiB;AACnC,IAAA,IAAI,EAAE,gBAAgB;AACtB,IAAA,OAAO,EAAE,GAAG;CACb;AAED;;;;;;;;AAQG;AACG,SAAU,oBAAoB,CAClC,EAAiB,EACjB,GAAW,EACX,SAAkB,EAClB,MAAmB,EACnB,WAAgB,EAAA;AAEhB,IAAA,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC;IAC3E,MAAM,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,eAAe,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,cAAc,CAAC;IAE/F,MAAM,QAAQ,GAAGA,cAAK,CAAC,GAAG,EAAE,UAAU,CAAC;IACvC,MAAM,WAAW,GAAGA,cAAK,CAAC,GAAG,EAAE,QAAQ,CAAC;IAExC,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC;AACtC,IAAA,EAAE,CAAC,WAAW,CAAC,WAAW,EAAE,OAAO,EAAEC,WAAE,CAAC,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AAC3E,IAAA,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;AAElB,IAAA,OAAOA,WAAE,CAAC,YAAY,CAAC,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,CAAC;AACpE;;;;"}
|
|
@@ -9,4 +9,3 @@ import { AnyRef, FieldRef, PlTransaction, Pl } from '@milaboratories/pl-client';
|
|
|
9
9
|
* @param outputNames names of the outputs to collect and return from this method
|
|
10
10
|
*/
|
|
11
11
|
export declare function createRenderTemplate<O extends string>(tx: PlTransaction, tpl: AnyRef, ephemeral: boolean, inputs: Pl.PlRecord, outputNames: O[]): Record<O, FieldRef>;
|
|
12
|
-
//# sourceMappingURL=render_template.d.ts.map
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { field, Pl } from '@milaboratories/pl-client';
|
|
2
|
+
|
|
3
|
+
const EphRenderTemplate = {
|
|
4
|
+
name: 'EphRenderTemplate',
|
|
5
|
+
version: '1',
|
|
6
|
+
};
|
|
7
|
+
const RenderTemplate = {
|
|
8
|
+
name: 'RenderTemplate',
|
|
9
|
+
version: '1',
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Creates render template operation, for a given remplate and inputs.
|
|
13
|
+
*
|
|
14
|
+
* @param tx transaction to use during rendering creation
|
|
15
|
+
* @param tpl reference to the template resource (see {@link loadTemplate})
|
|
16
|
+
* @param ephemeral true for ephemeral templates, false for pure templates
|
|
17
|
+
* @param inputs map of inputs pointing to other resources or fields
|
|
18
|
+
* @param outputNames names of the outputs to collect and return from this method
|
|
19
|
+
*/
|
|
20
|
+
function createRenderTemplate(tx, tpl, ephemeral, inputs, outputNames) {
|
|
21
|
+
if (outputNames.length === 0)
|
|
22
|
+
throw new Error('Zero output names provided');
|
|
23
|
+
const rId = ephemeral ? tx.createEphemeral(EphRenderTemplate) : tx.createStruct(RenderTemplate);
|
|
24
|
+
const tplField = field(rId, 'template');
|
|
25
|
+
const inputsField = field(rId, 'inputs');
|
|
26
|
+
tx.createField(tplField, 'Input', tpl);
|
|
27
|
+
tx.createField(inputsField, 'Input', Pl.createPlMap(tx, inputs, ephemeral));
|
|
28
|
+
tx.lockInputs(rId);
|
|
29
|
+
return Pl.futureRecord(tx, rId, outputNames, 'Output', 'outputs/');
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export { createRenderTemplate };
|
|
33
|
+
//# sourceMappingURL=render_template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render_template.js","sources":["../../../src/mutator/template/render_template.ts"],"sourcesContent":["import type { AnyRef, FieldRef, PlTransaction } from '@milaboratories/pl-client';\nimport { field, Pl } from '@milaboratories/pl-client';\nimport type { ResourceType } from '@platforma-sdk/model';\n\nconst EphRenderTemplate: ResourceType = {\n name: 'EphRenderTemplate',\n version: '1',\n};\nconst RenderTemplate: ResourceType = {\n name: 'RenderTemplate',\n version: '1',\n};\n\n/**\n * Creates render template operation, for a given remplate and inputs.\n *\n * @param tx transaction to use during rendering creation\n * @param tpl reference to the template resource (see {@link loadTemplate})\n * @param ephemeral true for ephemeral templates, false for pure templates\n * @param inputs map of inputs pointing to other resources or fields\n * @param outputNames names of the outputs to collect and return from this method\n */\nexport function createRenderTemplate<O extends string>(\n tx: PlTransaction,\n tpl: AnyRef,\n ephemeral: boolean,\n inputs: Pl.PlRecord,\n outputNames: O[],\n): Record<O, FieldRef> {\n if (outputNames.length === 0) throw new Error('Zero output names provided');\n const rId = ephemeral ? tx.createEphemeral(EphRenderTemplate) : tx.createStruct(RenderTemplate);\n\n const tplField = field(rId, 'template');\n const inputsField = field(rId, 'inputs');\n\n tx.createField(tplField, 'Input', tpl);\n tx.createField(inputsField, 'Input', Pl.createPlMap(tx, inputs, ephemeral));\n tx.lockInputs(rId);\n\n return Pl.futureRecord(tx, rId, outputNames, 'Output', 'outputs/');\n}\n"],"names":[],"mappings":";;AAIA,MAAM,iBAAiB,GAAiB;AACtC,IAAA,IAAI,EAAE,mBAAmB;AACzB,IAAA,OAAO,EAAE,GAAG;CACb;AACD,MAAM,cAAc,GAAiB;AACnC,IAAA,IAAI,EAAE,gBAAgB;AACtB,IAAA,OAAO,EAAE,GAAG;CACb;AAED;;;;;;;;AAQG;AACG,SAAU,oBAAoB,CAClC,EAAiB,EACjB,GAAW,EACX,SAAkB,EAClB,MAAmB,EACnB,WAAgB,EAAA;AAEhB,IAAA,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC;IAC3E,MAAM,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,eAAe,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,cAAc,CAAC;IAE/F,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC;IACvC,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC;IAExC,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC;AACtC,IAAA,EAAE,CAAC,WAAW,CAAC,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AAC3E,IAAA,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;AAElB,IAAA,OAAO,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,CAAC;AACpE;;;;"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var plClient = require('@milaboratories/pl-client');
|
|
4
|
+
var fs = require('node:fs');
|
|
5
|
+
var tsHelpers = require('@milaboratories/ts-helpers');
|
|
6
|
+
var direct_template_loader = require('./direct_template_loader.cjs');
|
|
7
|
+
|
|
8
|
+
//
|
|
9
|
+
// Resource schema
|
|
10
|
+
//
|
|
11
|
+
const TengoTemplateGet = { name: 'TengoTemplateGet', version: '1' };
|
|
12
|
+
const TengoTemplateGetRegistry = 'registry';
|
|
13
|
+
const TengoTemplateGetTemplateURI = 'templateURI';
|
|
14
|
+
const TengoTemplateGetTemplate = 'template';
|
|
15
|
+
const TengoTemplatePack = { name: 'TengoTemplatePack', version: '1' };
|
|
16
|
+
const TengoTemplatePackConvert = {
|
|
17
|
+
name: 'TengoTemplatePackConvert',
|
|
18
|
+
version: '1',
|
|
19
|
+
};
|
|
20
|
+
const TengoTemplatePackConvertTemplatePack = 'templatePack';
|
|
21
|
+
const TengoTemplatePackConvertTemplate = 'template';
|
|
22
|
+
async function prepareTemplateSpec(tpl) {
|
|
23
|
+
switch (tpl.type) {
|
|
24
|
+
case 'from-file':
|
|
25
|
+
return {
|
|
26
|
+
type: 'explicit',
|
|
27
|
+
content: await fs.promises.readFile(tpl.path),
|
|
28
|
+
};
|
|
29
|
+
case 'from-registry':
|
|
30
|
+
case 'explicit':
|
|
31
|
+
return tpl;
|
|
32
|
+
case 'prepared':
|
|
33
|
+
return tpl;
|
|
34
|
+
default:
|
|
35
|
+
return tsHelpers.assertNever(tpl);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function loadTemplateFromRegistry(tx, spec) {
|
|
39
|
+
const getTemplate = tx.createStruct(TengoTemplateGet);
|
|
40
|
+
const registry = plClient.field(getTemplate, TengoTemplateGetRegistry);
|
|
41
|
+
const uri = plClient.field(getTemplate, TengoTemplateGetTemplateURI);
|
|
42
|
+
const templateFromRegistry = plClient.field(getTemplate, TengoTemplateGetTemplate);
|
|
43
|
+
// Note: it has a resource schema, so platforma creates fields by itself.
|
|
44
|
+
tx.setField(registry, tx.createValue(plClient.Pl.JsonString, Buffer.from(JSON.stringify(spec.registry))));
|
|
45
|
+
tx.setField(uri, tx.createValue(plClient.Pl.JsonString, Buffer.from(JSON.stringify(spec.path))));
|
|
46
|
+
return templateFromRegistry;
|
|
47
|
+
}
|
|
48
|
+
function loadTemplate(tx, spec) {
|
|
49
|
+
switch (spec.type) {
|
|
50
|
+
case 'from-registry':
|
|
51
|
+
return loadTemplateFromRegistry(tx, spec);
|
|
52
|
+
case 'explicit':
|
|
53
|
+
return direct_template_loader.loadTemplateFromExplicitDirect(tx, spec);
|
|
54
|
+
case 'prepared':
|
|
55
|
+
return direct_template_loader.loadTemplateFromPrepared(tx, spec);
|
|
56
|
+
default:
|
|
57
|
+
return tsHelpers.assertNever(spec);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
exports.TengoTemplateGet = TengoTemplateGet;
|
|
62
|
+
exports.TengoTemplateGetRegistry = TengoTemplateGetRegistry;
|
|
63
|
+
exports.TengoTemplateGetTemplate = TengoTemplateGetTemplate;
|
|
64
|
+
exports.TengoTemplateGetTemplateURI = TengoTemplateGetTemplateURI;
|
|
65
|
+
exports.TengoTemplatePack = TengoTemplatePack;
|
|
66
|
+
exports.TengoTemplatePackConvert = TengoTemplatePackConvert;
|
|
67
|
+
exports.TengoTemplatePackConvertTemplate = TengoTemplatePackConvertTemplate;
|
|
68
|
+
exports.TengoTemplatePackConvertTemplatePack = TengoTemplatePackConvertTemplatePack;
|
|
69
|
+
exports.loadTemplate = loadTemplate;
|
|
70
|
+
exports.prepareTemplateSpec = prepareTemplateSpec;
|
|
71
|
+
//# sourceMappingURL=template_loading.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template_loading.cjs","sources":["../../../src/mutator/template/template_loading.ts"],"sourcesContent":["import type { AnyRef, PlTransaction, ResourceType } from '@milaboratories/pl-client';\nimport { field, Pl } from '@milaboratories/pl-client';\nimport fs from 'node:fs';\nimport type {\n TemplateFromRegistry,\n TemplateSpecAny,\n TemplateSpecPrepared,\n} from '../../model/template_spec';\nimport { assertNever } from '@milaboratories/ts-helpers';\nimport { loadTemplateFromExplicitDirect, loadTemplateFromPrepared } from './direct_template_loader';\n\n//\n// Resource schema\n//\n\nexport const TengoTemplateGet: ResourceType = { name: 'TengoTemplateGet', version: '1' };\nexport const TengoTemplateGetRegistry = 'registry';\nexport const TengoTemplateGetTemplateURI = 'templateURI';\nexport const TengoTemplateGetTemplate = 'template';\n\nexport const TengoTemplatePack: ResourceType = { name: 'TengoTemplatePack', version: '1' };\nexport const TengoTemplatePackConvert: ResourceType = {\n name: 'TengoTemplatePackConvert',\n version: '1',\n};\nexport const TengoTemplatePackConvertTemplatePack = 'templatePack';\nexport const TengoTemplatePackConvertTemplate = 'template';\n\nexport async function prepareTemplateSpec(tpl: TemplateSpecAny): Promise<TemplateSpecPrepared> {\n switch (tpl.type) {\n case 'from-file':\n return {\n type: 'explicit',\n content: await fs.promises.readFile(tpl.path),\n };\n case 'from-registry':\n case 'explicit':\n return tpl;\n case 'prepared':\n return tpl;\n default:\n return assertNever(tpl);\n }\n}\n\nfunction loadTemplateFromRegistry(tx: PlTransaction, spec: TemplateFromRegistry): AnyRef {\n const getTemplate = tx.createStruct(TengoTemplateGet);\n const registry = field(getTemplate, TengoTemplateGetRegistry);\n const uri = field(getTemplate, TengoTemplateGetTemplateURI);\n const templateFromRegistry = field(getTemplate, TengoTemplateGetTemplate);\n\n // Note: it has a resource schema, so platforma creates fields by itself.\n\n tx.setField(registry, tx.createValue(Pl.JsonString, Buffer.from(JSON.stringify(spec.registry))));\n tx.setField(uri, tx.createValue(Pl.JsonString, Buffer.from(JSON.stringify(spec.path))));\n\n return templateFromRegistry;\n}\n\nexport function loadTemplate(tx: PlTransaction, spec: TemplateSpecPrepared): AnyRef {\n switch (spec.type) {\n case 'from-registry':\n return loadTemplateFromRegistry(tx, spec);\n case 'explicit':\n return loadTemplateFromExplicitDirect(tx, spec);\n case 'prepared':\n return loadTemplateFromPrepared(tx, spec);\n default:\n return assertNever(spec);\n }\n}\n"],"names":["assertNever","field","Pl","loadTemplateFromExplicitDirect","loadTemplateFromPrepared"],"mappings":";;;;;;;AAWA;AACA;AACA;AAEO,MAAM,gBAAgB,GAAiB,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,GAAG;AAC/E,MAAM,wBAAwB,GAAG;AACjC,MAAM,2BAA2B,GAAG;AACpC,MAAM,wBAAwB,GAAG;AAEjC,MAAM,iBAAiB,GAAiB,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,GAAG;AACjF,MAAM,wBAAwB,GAAiB;AACpD,IAAA,IAAI,EAAE,0BAA0B;AAChC,IAAA,OAAO,EAAE,GAAG;;AAEP,MAAM,oCAAoC,GAAG;AAC7C,MAAM,gCAAgC,GAAG;AAEzC,eAAe,mBAAmB,CAAC,GAAoB,EAAA;AAC5D,IAAA,QAAQ,GAAG,CAAC,IAAI;AACd,QAAA,KAAK,WAAW;YACd,OAAO;AACL,gBAAA,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;aAC9C;AACH,QAAA,KAAK,eAAe;AACpB,QAAA,KAAK,UAAU;AACb,YAAA,OAAO,GAAG;AACZ,QAAA,KAAK,UAAU;AACb,YAAA,OAAO,GAAG;AACZ,QAAA;AACE,YAAA,OAAOA,qBAAW,CAAC,GAAG,CAAC;;AAE7B;AAEA,SAAS,wBAAwB,CAAC,EAAiB,EAAE,IAA0B,EAAA;IAC7E,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,gBAAgB,CAAC;IACrD,MAAM,QAAQ,GAAGC,cAAK,CAAC,WAAW,EAAE,wBAAwB,CAAC;IAC7D,MAAM,GAAG,GAAGA,cAAK,CAAC,WAAW,EAAE,2BAA2B,CAAC;IAC3D,MAAM,oBAAoB,GAAGA,cAAK,CAAC,WAAW,EAAE,wBAAwB,CAAC;;AAIzE,IAAA,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,WAAW,CAACC,WAAE,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAChG,IAAA,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,WAAW,CAACA,WAAE,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEvF,IAAA,OAAO,oBAAoB;AAC7B;AAEM,SAAU,YAAY,CAAC,EAAiB,EAAE,IAA0B,EAAA;AACxE,IAAA,QAAQ,IAAI,CAAC,IAAI;AACf,QAAA,KAAK,eAAe;AAClB,YAAA,OAAO,wBAAwB,CAAC,EAAE,EAAE,IAAI,CAAC;AAC3C,QAAA,KAAK,UAAU;AACb,YAAA,OAAOC,qDAA8B,CAAC,EAAE,EAAE,IAAI,CAAC;AACjD,QAAA,KAAK,UAAU;AACb,YAAA,OAAOC,+CAAwB,CAAC,EAAE,EAAE,IAAI,CAAC;AAC3C,QAAA;AACE,YAAA,OAAOJ,qBAAW,CAAC,IAAI,CAAC;;AAE9B;;;;;;;;;;;;;"}
|
|
@@ -10,4 +10,3 @@ export declare const TengoTemplatePackConvertTemplatePack = "templatePack";
|
|
|
10
10
|
export declare const TengoTemplatePackConvertTemplate = "template";
|
|
11
11
|
export declare function prepareTemplateSpec(tpl: TemplateSpecAny): Promise<TemplateSpecPrepared>;
|
|
12
12
|
export declare function loadTemplate(tx: PlTransaction, spec: TemplateSpecPrepared): AnyRef;
|
|
13
|
-
//# sourceMappingURL=template_loading.d.ts.map
|