@milaboratories/pl-middle-layer 1.46.20 → 1.46.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/block_registry/index.d.ts +3 -3
- package/dist/block_registry/registry-v2-provider.cjs.map +1 -1
- package/dist/block_registry/registry-v2-provider.d.ts +2 -2
- package/dist/block_registry/registry-v2-provider.js.map +1 -1
- package/dist/block_registry/registry.cjs +54 -53
- package/dist/block_registry/registry.cjs.map +1 -1
- package/dist/block_registry/registry.d.ts +4 -4
- package/dist/block_registry/registry.d.ts.map +1 -1
- package/dist/block_registry/registry.js +54 -53
- package/dist/block_registry/registry.js.map +1 -1
- package/dist/block_registry/watcher.cjs +12 -12
- package/dist/block_registry/watcher.cjs.map +1 -1
- package/dist/block_registry/watcher.d.ts +6 -6
- package/dist/block_registry/watcher.d.ts.map +1 -1
- package/dist/block_registry/watcher.js +12 -12
- package/dist/block_registry/watcher.js.map +1 -1
- package/dist/block_registry/well_known_registries.cjs +6 -6
- package/dist/block_registry/well_known_registries.cjs.map +1 -1
- package/dist/block_registry/well_known_registries.d.ts +1 -1
- package/dist/block_registry/well_known_registries.js +6 -6
- package/dist/block_registry/well_known_registries.js.map +1 -1
- package/dist/cfg_render/executor.cjs +11 -11
- package/dist/cfg_render/executor.cjs.map +1 -1
- package/dist/cfg_render/executor.d.ts +5 -5
- package/dist/cfg_render/executor.js +11 -11
- package/dist/cfg_render/executor.js.map +1 -1
- package/dist/cfg_render/operation.d.ts +5 -5
- package/dist/cfg_render/renderer.cjs +74 -75
- package/dist/cfg_render/renderer.cjs.map +1 -1
- package/dist/cfg_render/renderer.d.ts +2 -2
- package/dist/cfg_render/renderer.d.ts.map +1 -1
- package/dist/cfg_render/renderer.js +74 -75
- package/dist/cfg_render/renderer.js.map +1 -1
- package/dist/cfg_render/traverse.cjs +27 -27
- package/dist/cfg_render/traverse.cjs.map +1 -1
- package/dist/cfg_render/traverse.d.ts +1 -1
- package/dist/cfg_render/traverse.js +27 -27
- package/dist/cfg_render/traverse.js.map +1 -1
- package/dist/cfg_render/util.cjs +1 -1
- package/dist/cfg_render/util.cjs.map +1 -1
- package/dist/cfg_render/util.d.ts +1 -1
- package/dist/cfg_render/util.js +1 -1
- package/dist/cfg_render/util.js.map +1 -1
- package/dist/debug/index.cjs +4 -2
- package/dist/debug/index.cjs.map +1 -1
- package/dist/debug/index.d.ts +2 -2
- package/dist/debug/index.d.ts.map +1 -1
- package/dist/debug/index.js +4 -2
- package/dist/debug/index.js.map +1 -1
- package/dist/dev_env/index.cjs +8 -8
- package/dist/dev_env/index.cjs.map +1 -1
- package/dist/dev_env/index.js +8 -8
- package/dist/dev_env/index.js.map +1 -1
- package/dist/dev_env/util.cjs +1 -1
- package/dist/dev_env/util.cjs.map +1 -1
- package/dist/dev_env/util.d.ts +1 -1
- package/dist/dev_env/util.js +1 -1
- package/dist/dev_env/util.js.map +1 -1
- package/dist/index.d.ts +16 -16
- package/dist/js_render/computable_context.cjs +78 -78
- package/dist/js_render/computable_context.cjs.map +1 -1
- package/dist/js_render/computable_context.d.ts +9 -9
- package/dist/js_render/computable_context.d.ts.map +1 -1
- package/dist/js_render/computable_context.js +78 -78
- package/dist/js_render/computable_context.js.map +1 -1
- package/dist/js_render/context.cjs +33 -27
- package/dist/js_render/context.cjs.map +1 -1
- package/dist/js_render/context.d.ts +7 -7
- package/dist/js_render/context.d.ts.map +1 -1
- package/dist/js_render/context.js +33 -27
- package/dist/js_render/context.js.map +1 -1
- package/dist/js_render/index.cjs +10 -6
- package/dist/js_render/index.cjs.map +1 -1
- package/dist/js_render/index.d.ts +6 -6
- package/dist/js_render/index.d.ts.map +1 -1
- package/dist/js_render/index.js +10 -6
- package/dist/js_render/index.js.map +1 -1
- package/dist/middle_layer/active_cfg.cjs.map +1 -1
- package/dist/middle_layer/active_cfg.d.ts +3 -3
- package/dist/middle_layer/active_cfg.d.ts.map +1 -1
- package/dist/middle_layer/active_cfg.js.map +1 -1
- package/dist/middle_layer/block.cjs +1 -1
- package/dist/middle_layer/block.cjs.map +1 -1
- package/dist/middle_layer/block.d.ts +6 -6
- package/dist/middle_layer/block.d.ts.map +1 -1
- package/dist/middle_layer/block.js +1 -1
- package/dist/middle_layer/block.js.map +1 -1
- package/dist/middle_layer/block_ctx.cjs +9 -9
- package/dist/middle_layer/block_ctx.cjs.map +1 -1
- package/dist/middle_layer/block_ctx.d.ts +6 -6
- package/dist/middle_layer/block_ctx.d.ts.map +1 -1
- package/dist/middle_layer/block_ctx.js +9 -9
- package/dist/middle_layer/block_ctx.js.map +1 -1
- package/dist/middle_layer/block_ctx_unsafe.cjs +1 -1
- package/dist/middle_layer/block_ctx_unsafe.cjs.map +1 -1
- package/dist/middle_layer/block_ctx_unsafe.d.ts +5 -5
- package/dist/middle_layer/block_ctx_unsafe.js +1 -1
- package/dist/middle_layer/block_ctx_unsafe.js.map +1 -1
- package/dist/middle_layer/driver_kit.cjs +1 -2
- package/dist/middle_layer/driver_kit.cjs.map +1 -1
- package/dist/middle_layer/driver_kit.d.ts +7 -7
- package/dist/middle_layer/driver_kit.d.ts.map +1 -1
- package/dist/middle_layer/driver_kit.js +1 -2
- package/dist/middle_layer/driver_kit.js.map +1 -1
- package/dist/middle_layer/frontend_path.cjs +5 -5
- package/dist/middle_layer/frontend_path.cjs.map +1 -1
- package/dist/middle_layer/frontend_path.d.ts +4 -4
- package/dist/middle_layer/frontend_path.d.ts.map +1 -1
- package/dist/middle_layer/frontend_path.js +5 -5
- package/dist/middle_layer/frontend_path.js.map +1 -1
- package/dist/middle_layer/index.d.ts +4 -4
- package/dist/middle_layer/middle_layer.cjs +11 -11
- package/dist/middle_layer/middle_layer.cjs.map +1 -1
- package/dist/middle_layer/middle_layer.d.ts +18 -18
- package/dist/middle_layer/middle_layer.d.ts.map +1 -1
- package/dist/middle_layer/middle_layer.js +11 -11
- package/dist/middle_layer/middle_layer.js.map +1 -1
- package/dist/middle_layer/navigation_states.cjs +2 -2
- package/dist/middle_layer/navigation_states.cjs.map +1 -1
- package/dist/middle_layer/navigation_states.d.ts +2 -2
- package/dist/middle_layer/navigation_states.js +2 -2
- package/dist/middle_layer/navigation_states.js.map +1 -1
- package/dist/middle_layer/ops.cjs +5 -5
- package/dist/middle_layer/ops.cjs.map +1 -1
- package/dist/middle_layer/ops.d.ts +11 -11
- package/dist/middle_layer/ops.d.ts.map +1 -1
- package/dist/middle_layer/ops.js +5 -5
- package/dist/middle_layer/ops.js.map +1 -1
- package/dist/middle_layer/project.cjs +71 -63
- package/dist/middle_layer/project.cjs.map +1 -1
- package/dist/middle_layer/project.d.ts +10 -10
- package/dist/middle_layer/project.d.ts.map +1 -1
- package/dist/middle_layer/project.js +71 -63
- package/dist/middle_layer/project.js.map +1 -1
- package/dist/middle_layer/project_list.cjs +2 -2
- package/dist/middle_layer/project_list.cjs.map +1 -1
- package/dist/middle_layer/project_list.d.ts +6 -6
- package/dist/middle_layer/project_list.d.ts.map +1 -1
- package/dist/middle_layer/project_list.js +2 -2
- package/dist/middle_layer/project_list.js.map +1 -1
- package/dist/middle_layer/project_overview.cjs +40 -40
- package/dist/middle_layer/project_overview.cjs.map +1 -1
- package/dist/middle_layer/project_overview.d.ts +5 -5
- package/dist/middle_layer/project_overview.d.ts.map +1 -1
- package/dist/middle_layer/project_overview.js +40 -40
- package/dist/middle_layer/project_overview.js.map +1 -1
- package/dist/middle_layer/project_overview_light.cjs.map +1 -1
- package/dist/middle_layer/project_overview_light.d.ts +2 -2
- package/dist/middle_layer/project_overview_light.d.ts.map +1 -1
- package/dist/middle_layer/project_overview_light.js.map +1 -1
- package/dist/middle_layer/render.cjs +1 -1
- package/dist/middle_layer/render.cjs.map +1 -1
- package/dist/middle_layer/render.d.ts +4 -4
- package/dist/middle_layer/render.js +1 -1
- package/dist/middle_layer/render.js.map +1 -1
- package/dist/middle_layer/render.test.d.ts +2 -2
- package/dist/middle_layer/types.d.ts +3 -3
- package/dist/middle_layer/util.cjs +9 -4
- package/dist/middle_layer/util.cjs.map +1 -1
- package/dist/middle_layer/util.d.ts +4 -4
- package/dist/middle_layer/util.d.ts.map +1 -1
- package/dist/middle_layer/util.js +9 -4
- package/dist/middle_layer/util.js.map +1 -1
- package/dist/model/args.cjs +19 -15
- package/dist/model/args.cjs.map +1 -1
- package/dist/model/args.d.ts +1 -1
- package/dist/model/args.d.ts.map +1 -1
- package/dist/model/args.js +19 -15
- package/dist/model/args.js.map +1 -1
- package/dist/model/block_pack.d.ts +2 -2
- package/dist/model/block_pack_spec.cjs +3 -3
- package/dist/model/block_pack_spec.cjs.map +1 -1
- package/dist/model/block_pack_spec.d.ts +8 -8
- package/dist/model/block_pack_spec.js +3 -3
- package/dist/model/block_pack_spec.js.map +1 -1
- package/dist/model/block_storage_helper.cjs +4 -4
- package/dist/model/block_storage_helper.cjs.map +1 -1
- package/dist/model/block_storage_helper.d.ts +2 -2
- package/dist/model/block_storage_helper.d.ts.map +1 -1
- package/dist/model/block_storage_helper.js +4 -4
- package/dist/model/block_storage_helper.js.map +1 -1
- package/dist/model/index.d.ts +3 -3
- package/dist/model/project_helper.cjs +30 -13
- package/dist/model/project_helper.cjs.map +1 -1
- package/dist/model/project_helper.d.ts +4 -4
- package/dist/model/project_helper.d.ts.map +1 -1
- package/dist/model/project_helper.js +30 -13
- package/dist/model/project_helper.js.map +1 -1
- package/dist/model/project_model.cjs +23 -23
- package/dist/model/project_model.cjs.map +1 -1
- package/dist/model/project_model.d.ts +6 -6
- package/dist/model/project_model.d.ts.map +1 -1
- package/dist/model/project_model.js +23 -23
- package/dist/model/project_model.js.map +1 -1
- package/dist/model/project_model_util.cjs +2 -2
- package/dist/model/project_model_util.cjs.map +1 -1
- package/dist/model/project_model_util.d.ts +3 -3
- package/dist/model/project_model_util.d.ts.map +1 -1
- package/dist/model/project_model_util.js +2 -2
- package/dist/model/project_model_util.js.map +1 -1
- package/dist/model/project_model_v1.cjs +2 -2
- package/dist/model/project_model_v1.cjs.map +1 -1
- package/dist/model/project_model_v1.js +2 -2
- package/dist/model/project_model_v1.js.map +1 -1
- package/dist/model/template_spec.d.ts +5 -5
- package/dist/mutator/block-pack/block_pack.cjs +43 -43
- package/dist/mutator/block-pack/block_pack.cjs.map +1 -1
- package/dist/mutator/block-pack/block_pack.d.ts +6 -6
- package/dist/mutator/block-pack/block_pack.d.ts.map +1 -1
- package/dist/mutator/block-pack/block_pack.js +43 -43
- package/dist/mutator/block-pack/block_pack.js.map +1 -1
- package/dist/mutator/block-pack/frontend.cjs +2 -2
- package/dist/mutator/block-pack/frontend.cjs.map +1 -1
- package/dist/mutator/block-pack/frontend.d.ts +2 -2
- package/dist/mutator/block-pack/frontend.d.ts.map +1 -1
- package/dist/mutator/block-pack/frontend.js +2 -2
- package/dist/mutator/block-pack/frontend.js.map +1 -1
- package/dist/mutator/context_export.cjs +5 -5
- package/dist/mutator/context_export.cjs.map +1 -1
- package/dist/mutator/context_export.d.ts +2 -2
- package/dist/mutator/context_export.d.ts.map +1 -1
- package/dist/mutator/context_export.js +5 -5
- package/dist/mutator/context_export.js.map +1 -1
- package/dist/mutator/migration.cjs +7 -7
- package/dist/mutator/migration.cjs.map +1 -1
- package/dist/mutator/migration.d.ts +1 -1
- package/dist/mutator/migration.d.ts.map +1 -1
- package/dist/mutator/migration.js +7 -7
- package/dist/mutator/migration.js.map +1 -1
- package/dist/mutator/project.cjs +147 -148
- package/dist/mutator/project.cjs.map +1 -1
- package/dist/mutator/project.d.ts +13 -13
- package/dist/mutator/project.d.ts.map +1 -1
- package/dist/mutator/project.js +147 -148
- package/dist/mutator/project.js.map +1 -1
- package/dist/mutator/template/direct_template_loader.cjs +16 -16
- package/dist/mutator/template/direct_template_loader.cjs.map +1 -1
- package/dist/mutator/template/direct_template_loader.d.ts +2 -2
- package/dist/mutator/template/direct_template_loader.d.ts.map +1 -1
- package/dist/mutator/template/direct_template_loader.js +16 -16
- package/dist/mutator/template/direct_template_loader.js.map +1 -1
- package/dist/mutator/template/direct_template_loader_v3.cjs +13 -13
- package/dist/mutator/template/direct_template_loader_v3.cjs.map +1 -1
- package/dist/mutator/template/direct_template_loader_v3.d.ts +3 -3
- package/dist/mutator/template/direct_template_loader_v3.d.ts.map +1 -1
- package/dist/mutator/template/direct_template_loader_v3.js +13 -13
- package/dist/mutator/template/direct_template_loader_v3.js.map +1 -1
- package/dist/mutator/template/render_block.cjs +7 -7
- package/dist/mutator/template/render_block.cjs.map +1 -1
- package/dist/mutator/template/render_block.d.ts +1 -1
- package/dist/mutator/template/render_block.d.ts.map +1 -1
- package/dist/mutator/template/render_block.js +7 -7
- package/dist/mutator/template/render_block.js.map +1 -1
- package/dist/mutator/template/render_template.cjs +10 -10
- package/dist/mutator/template/render_template.cjs.map +1 -1
- package/dist/mutator/template/render_template.d.ts +2 -2
- package/dist/mutator/template/render_template.js +10 -10
- package/dist/mutator/template/render_template.js.map +1 -1
- package/dist/mutator/template/template_loading.cjs +17 -17
- package/dist/mutator/template/template_loading.cjs.map +1 -1
- package/dist/mutator/template/template_loading.d.ts +2 -2
- package/dist/mutator/template/template_loading.js +17 -17
- package/dist/mutator/template/template_loading.js.map +1 -1
- package/dist/network_check/network_check.cjs +33 -32
- package/dist/network_check/network_check.cjs.map +1 -1
- package/dist/network_check/network_check.d.ts +6 -6
- package/dist/network_check/network_check.d.ts.map +1 -1
- package/dist/network_check/network_check.js +33 -32
- package/dist/network_check/network_check.js.map +1 -1
- package/dist/network_check/pings.cjs +3 -3
- package/dist/network_check/pings.cjs.map +1 -1
- package/dist/network_check/pings.d.ts +4 -4
- package/dist/network_check/pings.d.ts.map +1 -1
- package/dist/network_check/pings.js +3 -3
- package/dist/network_check/pings.js.map +1 -1
- package/dist/network_check/template.cjs +57 -44
- package/dist/network_check/template.cjs.map +1 -1
- package/dist/network_check/template.d.ts +8 -8
- package/dist/network_check/template.d.ts.map +1 -1
- package/dist/network_check/template.js +57 -44
- package/dist/network_check/template.js.map +1 -1
- package/dist/pool/data.cjs +45 -33
- package/dist/pool/data.cjs.map +1 -1
- package/dist/pool/data.d.ts +3 -3
- package/dist/pool/data.d.ts.map +1 -1
- package/dist/pool/data.js +45 -33
- package/dist/pool/data.js.map +1 -1
- package/dist/pool/driver.cjs +18 -16
- package/dist/pool/driver.cjs.map +1 -1
- package/dist/pool/driver.d.ts +5 -5
- package/dist/pool/driver.d.ts.map +1 -1
- package/dist/pool/driver.js +18 -16
- package/dist/pool/driver.js.map +1 -1
- package/dist/pool/index.d.ts +2 -2
- package/dist/pool/p_object_collection.cjs +5 -5
- package/dist/pool/p_object_collection.cjs.map +1 -1
- package/dist/pool/p_object_collection.d.ts +2 -2
- package/dist/pool/p_object_collection.d.ts.map +1 -1
- package/dist/pool/p_object_collection.js +5 -5
- package/dist/pool/p_object_collection.js.map +1 -1
- package/dist/pool/result_pool.cjs +6 -6
- package/dist/pool/result_pool.cjs.map +1 -1
- package/dist/pool/result_pool.d.ts +6 -6
- package/dist/pool/result_pool.d.ts.map +1 -1
- package/dist/pool/result_pool.js +6 -6
- package/dist/pool/result_pool.js.map +1 -1
- package/dist/test/block_packs.d.ts +2 -2
- package/dist/test/known_templates.d.ts +1 -1
- package/dist/worker/WorkerManager.cjs +7 -8
- package/dist/worker/WorkerManager.cjs.map +1 -1
- package/dist/worker/WorkerManager.d.ts +2 -2
- package/dist/worker/WorkerManager.d.ts.map +1 -1
- package/dist/worker/WorkerManager.js +7 -8
- package/dist/worker/WorkerManager.js.map +1 -1
- package/dist/worker/worker.cjs +6 -4
- package/dist/worker/worker.cjs.map +1 -1
- package/dist/worker/worker.js +6 -4
- package/dist/worker/worker.js.map +1 -1
- package/dist/worker/workerApi.cjs.map +1 -1
- package/dist/worker/workerApi.js.map +1 -1
- package/package.json +41 -41
- package/src/block_registry/index.ts +3 -3
- package/src/block_registry/registry-v2-provider.ts +2 -2
- package/src/block_registry/registry.test.ts +17 -17
- package/src/block_registry/registry.ts +55 -60
- package/src/block_registry/watcher.ts +24 -23
- package/src/block_registry/well_known_registries.ts +7 -7
- package/src/cfg_render/executor.test.ts +36 -36
- package/src/cfg_render/executor.ts +24 -24
- package/src/cfg_render/operation.ts +5 -5
- package/src/cfg_render/renderer.ts +96 -93
- package/src/cfg_render/traverse.ts +50 -50
- package/src/cfg_render/util.ts +3 -3
- package/src/debug/index.ts +6 -4
- package/src/dev_env/index.ts +16 -16
- package/src/dev_env/util.ts +3 -3
- package/src/index.ts +16 -16
- package/src/js_render/computable_context.ts +143 -126
- package/src/js_render/context.ts +72 -44
- package/src/js_render/index.ts +51 -24
- package/src/middle_layer/active_cfg.ts +14 -12
- package/src/middle_layer/block.ts +30 -23
- package/src/middle_layer/block_ctx.ts +27 -31
- package/src/middle_layer/block_ctx_unsafe.ts +9 -9
- package/src/middle_layer/driver_kit.ts +13 -19
- package/src/middle_layer/frontend_path.ts +18 -23
- package/src/middle_layer/index.ts +4 -4
- package/src/middle_layer/middle_layer.ts +57 -55
- package/src/middle_layer/navigation_states.ts +6 -6
- package/src/middle_layer/ops.ts +43 -42
- package/src/middle_layer/project.ts +274 -173
- package/src/middle_layer/project_list.ts +14 -15
- package/src/middle_layer/project_overview.ts +104 -113
- package/src/middle_layer/project_overview_light.ts +7 -9
- package/src/middle_layer/render.test.ts +49 -48
- package/src/middle_layer/render.ts +9 -9
- package/src/middle_layer/types.ts +3 -3
- package/src/middle_layer/util.ts +17 -12
- package/src/model/args.ts +22 -19
- package/src/model/block_pack.ts +2 -2
- package/src/model/block_pack_spec.ts +11 -11
- package/src/model/block_storage_helper.ts +11 -11
- package/src/model/index.ts +3 -3
- package/src/model/project_helper.ts +78 -32
- package/src/model/project_model.test.ts +5 -9
- package/src/model/project_model.ts +48 -49
- package/src/model/project_model_util.test.ts +86 -53
- package/src/model/project_model_util.ts +18 -14
- package/src/model/project_model_v1.ts +3 -3
- package/src/model/template_spec.ts +5 -5
- package/src/mutator/block-pack/block_pack.test.ts +25 -25
- package/src/mutator/block-pack/block_pack.ts +70 -68
- package/src/mutator/block-pack/frontend.ts +6 -13
- package/src/mutator/context_export.ts +12 -10
- package/src/mutator/migration.ts +20 -14
- package/src/mutator/project-v3.test.ts +123 -118
- package/src/mutator/project.test.ts +105 -94
- package/src/mutator/project.ts +357 -274
- package/src/mutator/template/direct_template_loader.ts +26 -32
- package/src/mutator/template/direct_template_loader_v3.ts +51 -25
- package/src/mutator/template/render_block.ts +14 -21
- package/src/mutator/template/render_template.ts +13 -13
- package/src/mutator/template/template_loading.ts +23 -23
- package/src/mutator/template/template_render.test.ts +87 -86
- package/src/network_check/network_check.test.ts +4 -4
- package/src/network_check/network_check.ts +102 -79
- package/src/network_check/pings.ts +35 -16
- package/src/network_check/template.test.ts +47 -44
- package/src/network_check/template.ts +151 -95
- package/src/network_check/test_utils.ts +1 -1
- package/src/pool/data.ts +81 -69
- package/src/pool/driver.ts +56 -51
- package/src/pool/index.ts +2 -2
- package/src/pool/p_object_collection.ts +16 -15
- package/src/pool/result_pool.ts +23 -34
- package/src/test/block_packs.ts +15 -15
- package/src/test/explicit_templates.ts +4 -4
- package/src/test/known_templates.ts +10 -10
- package/src/test_env.ts +1 -1
- package/src/worker/WorkerManager.ts +22 -18
- package/src/worker/worker.ts +11 -9
- package/src/worker/workerApi.ts +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
3
|
-
export * from
|
|
1
|
+
export * from "./registry";
|
|
2
|
+
export * from "./registry-v2-provider";
|
|
3
|
+
export * from "./well_known_registries";
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry-v2-provider.cjs","sources":["../../src/block_registry/registry-v2-provider.ts"],"sourcesContent":["import { folderReaderByUrl, RegistryV2Reader } from
|
|
1
|
+
{"version":3,"file":"registry-v2-provider.cjs","sources":["../../src/block_registry/registry-v2-provider.ts"],"sourcesContent":["import { folderReaderByUrl, RegistryV2Reader } from \"@platforma-sdk/block-tools\";\nimport type { Dispatcher } from \"undici\";\n\nexport class V2RegistryProvider {\n private readonly registries = new Map<string, RegistryV2Reader>();\n\n constructor(private readonly http: Dispatcher) {}\n\n public getRegistry(url: string): RegistryV2Reader {\n const fromCache = this.registries.get(url);\n if (fromCache) return fromCache;\n const newRegistry = new RegistryV2Reader(folderReaderByUrl(url, this.http));\n this.registries.set(url, newRegistry);\n return newRegistry;\n }\n}\n"],"names":["RegistryV2Reader","folderReaderByUrl"],"mappings":";;;;MAGa,kBAAkB,CAAA;AAGA,IAAA,IAAA;AAFZ,IAAA,UAAU,GAAG,IAAI,GAAG,EAA4B;AAEjE,IAAA,WAAA,CAA6B,IAAgB,EAAA;QAAhB,IAAA,CAAA,IAAI,GAAJ,IAAI;IAAe;AAEzC,IAAA,WAAW,CAAC,GAAW,EAAA;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;AAC1C,QAAA,IAAI,SAAS;AAAE,YAAA,OAAO,SAAS;AAC/B,QAAA,MAAM,WAAW,GAAG,IAAIA,2BAAgB,CAACC,4BAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3E,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC;AACrC,QAAA,OAAO,WAAW;IACpB;AACD;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { RegistryV2Reader } from
|
|
2
|
-
import type { Dispatcher } from
|
|
1
|
+
import { RegistryV2Reader } from "@platforma-sdk/block-tools";
|
|
2
|
+
import type { Dispatcher } from "undici";
|
|
3
3
|
export declare class V2RegistryProvider {
|
|
4
4
|
private readonly http;
|
|
5
5
|
private readonly registries;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry-v2-provider.js","sources":["../../src/block_registry/registry-v2-provider.ts"],"sourcesContent":["import { folderReaderByUrl, RegistryV2Reader } from
|
|
1
|
+
{"version":3,"file":"registry-v2-provider.js","sources":["../../src/block_registry/registry-v2-provider.ts"],"sourcesContent":["import { folderReaderByUrl, RegistryV2Reader } from \"@platforma-sdk/block-tools\";\nimport type { Dispatcher } from \"undici\";\n\nexport class V2RegistryProvider {\n private readonly registries = new Map<string, RegistryV2Reader>();\n\n constructor(private readonly http: Dispatcher) {}\n\n public getRegistry(url: string): RegistryV2Reader {\n const fromCache = this.registries.get(url);\n if (fromCache) return fromCache;\n const newRegistry = new RegistryV2Reader(folderReaderByUrl(url, this.http));\n this.registries.set(url, newRegistry);\n return newRegistry;\n }\n}\n"],"names":[],"mappings":";;MAGa,kBAAkB,CAAA;AAGA,IAAA,IAAA;AAFZ,IAAA,UAAU,GAAG,IAAI,GAAG,EAA4B;AAEjE,IAAA,WAAA,CAA6B,IAAgB,EAAA;QAAhB,IAAA,CAAA,IAAI,GAAJ,IAAI;IAAe;AAEzC,IAAA,WAAW,CAAC,GAAW,EAAA;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;AAC1C,QAAA,IAAI,SAAS;AAAE,YAAA,OAAO,SAAS;AAC/B,QAAA,MAAM,WAAW,GAAG,IAAI,gBAAgB,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3E,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC;AACrC,QAAA,OAAO,WAAW;IACpB;AACD;;;;"}
|
|
@@ -11,10 +11,10 @@ var plModelMiddleLayer = require('@milaboratories/pl-model-middle-layer');
|
|
|
11
11
|
|
|
12
12
|
async function getFileContent(path) {
|
|
13
13
|
try {
|
|
14
|
-
return await fs.promises.readFile(path,
|
|
14
|
+
return await fs.promises.readFile(path, "utf8");
|
|
15
15
|
}
|
|
16
16
|
catch (error) {
|
|
17
|
-
if (error instanceof Error &&
|
|
17
|
+
if (error instanceof Error && "code" in error && error.code === "ENOENT") {
|
|
18
18
|
return undefined;
|
|
19
19
|
}
|
|
20
20
|
throw error;
|
|
@@ -25,7 +25,7 @@ async function getFileStat(path) {
|
|
|
25
25
|
return await fs.promises.stat(path, { bigint: true });
|
|
26
26
|
}
|
|
27
27
|
catch (error) {
|
|
28
|
-
if (error instanceof Error &&
|
|
28
|
+
if (error instanceof Error && "code" in error && error.code === "ENOENT") {
|
|
29
29
|
return undefined;
|
|
30
30
|
}
|
|
31
31
|
throw error;
|
|
@@ -63,49 +63,50 @@ class BlockPackRegistry {
|
|
|
63
63
|
const result = [];
|
|
64
64
|
const regSpec = regEntry.spec;
|
|
65
65
|
switch (regSpec.type) {
|
|
66
|
-
case
|
|
67
|
-
{
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
url: 'https://unknown.com',
|
|
86
|
-
},
|
|
66
|
+
case "remote-v1": {
|
|
67
|
+
const httpOptions = this.http !== undefined ? { dispatcher: this.http } : {};
|
|
68
|
+
const overviewResponse = await undici.request(`${regSpec.url}/${blockTools.RegistryV1.GlobalOverviewPath}`, httpOptions);
|
|
69
|
+
const overview = (await overviewResponse.body.json());
|
|
70
|
+
for (const overviewEntry of overview) {
|
|
71
|
+
const { organization, package: pkg, latestMeta, latestVersion } = overviewEntry;
|
|
72
|
+
const id = {
|
|
73
|
+
organization,
|
|
74
|
+
name: pkg,
|
|
75
|
+
version: latestVersion,
|
|
76
|
+
};
|
|
77
|
+
const latestOverview = {
|
|
78
|
+
id,
|
|
79
|
+
meta: {
|
|
80
|
+
title: latestMeta["title"] ?? "No title",
|
|
81
|
+
description: latestMeta["description"] ?? "No Description",
|
|
82
|
+
organization: {
|
|
83
|
+
name: organization,
|
|
84
|
+
url: "https://unknown.com",
|
|
87
85
|
},
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
registryUrl: regSpec.url,
|
|
92
|
-
},
|
|
93
|
-
};
|
|
94
|
-
result.push({
|
|
95
|
-
registryId: regEntry.id,
|
|
86
|
+
},
|
|
87
|
+
spec: {
|
|
88
|
+
type: "from-registry-v1",
|
|
96
89
|
id,
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
90
|
+
registryUrl: regSpec.url,
|
|
91
|
+
},
|
|
92
|
+
};
|
|
93
|
+
result.push({
|
|
94
|
+
registryId: regEntry.id,
|
|
95
|
+
id,
|
|
96
|
+
latestByChannel: {
|
|
97
|
+
[plModelMiddleLayer.AnyChannel]: latestOverview,
|
|
98
|
+
[plModelMiddleLayer.StableChannel]: latestOverview,
|
|
99
|
+
},
|
|
100
|
+
allVersions: overviewEntry.allVersions.map((v) => ({ version: v, channels: [] })),
|
|
101
|
+
});
|
|
105
102
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
103
|
+
return result;
|
|
104
|
+
}
|
|
105
|
+
case "remote-v2":
|
|
106
|
+
return (await this.v2Provider.getRegistry(regSpec.url).listBlockPacks()).map((e) => ({
|
|
107
|
+
...e,
|
|
108
|
+
registryId: regEntry.id,
|
|
109
|
+
}));
|
|
109
110
|
// e.latestByChannel[StableChannel]
|
|
110
111
|
// ? {
|
|
111
112
|
// ...e,
|
|
@@ -124,7 +125,7 @@ class BlockPackRegistry {
|
|
|
124
125
|
// },
|
|
125
126
|
// registryId: regEntry.id,
|
|
126
127
|
// },
|
|
127
|
-
case
|
|
128
|
+
case "local-dev":
|
|
128
129
|
for (const entry of await fs.promises.readdir(regSpec.path, { withFileTypes: true })) {
|
|
129
130
|
if (!entry.isDirectory())
|
|
130
131
|
continue;
|
|
@@ -136,20 +137,20 @@ class BlockPackRegistry {
|
|
|
136
137
|
const id = {
|
|
137
138
|
organization: config.organization,
|
|
138
139
|
name: config.package,
|
|
139
|
-
version:
|
|
140
|
+
version: "DEV",
|
|
140
141
|
};
|
|
141
142
|
const latestOverview = {
|
|
142
143
|
id,
|
|
143
144
|
meta: {
|
|
144
|
-
title: config.meta[
|
|
145
|
-
description: config.meta[
|
|
145
|
+
title: config.meta["title"] ?? "No title",
|
|
146
|
+
description: config.meta["description"] ?? "No Description",
|
|
146
147
|
organization: {
|
|
147
148
|
name: config.organization,
|
|
148
|
-
url:
|
|
149
|
+
url: "https://unknown.com",
|
|
149
150
|
},
|
|
150
151
|
},
|
|
151
152
|
spec: {
|
|
152
|
-
type:
|
|
153
|
+
type: "dev-v2",
|
|
153
154
|
folder: devPath,
|
|
154
155
|
mtime,
|
|
155
156
|
},
|
|
@@ -169,7 +170,7 @@ class BlockPackRegistry {
|
|
|
169
170
|
let v2Description = await blockTools.tryLoadPackDescription(actualDevPath);
|
|
170
171
|
if (v2Description === undefined)
|
|
171
172
|
// iterating over expected subfolder names where block developer may put root block-pack package
|
|
172
|
-
for (const bpSubfolder of [
|
|
173
|
+
for (const bpSubfolder of ["block", "meta"]) {
|
|
173
174
|
actualDevPath = path.join(devPath, bpSubfolder);
|
|
174
175
|
v2Description = await blockTools.tryLoadPackDescription(actualDevPath);
|
|
175
176
|
if (v2Description !== undefined)
|
|
@@ -182,7 +183,7 @@ class BlockPackRegistry {
|
|
|
182
183
|
meta: await blockTools.BlockPackMetaEmbedAbsoluteBytes.parseAsync(v2Description.meta),
|
|
183
184
|
featureFlags: v2Description.featureFlags,
|
|
184
185
|
spec: {
|
|
185
|
-
type:
|
|
186
|
+
type: "dev-v2",
|
|
186
187
|
folder: actualDevPath,
|
|
187
188
|
mtime,
|
|
188
189
|
},
|
|
@@ -209,7 +210,7 @@ class BlockPackRegistry {
|
|
|
209
210
|
const blockPacks = [];
|
|
210
211
|
const registries = [];
|
|
211
212
|
for (const regSpecs of this.registries) {
|
|
212
|
-
registries.push({ ...regSpecs, status:
|
|
213
|
+
registries.push({ ...regSpecs, status: "online" });
|
|
213
214
|
blockPacks.push(...(await this.getPackagesForRoot(regSpecs)));
|
|
214
215
|
}
|
|
215
216
|
return { registries, blockPacks };
|
|
@@ -218,7 +219,7 @@ class BlockPackRegistry {
|
|
|
218
219
|
const regSpec = this.registries.find((reg) => reg.id === registryId)?.spec;
|
|
219
220
|
if (!regSpec)
|
|
220
221
|
throw new Error(`Registry with id "${registryId}" not found`);
|
|
221
|
-
if (regSpec.type !==
|
|
222
|
+
if (regSpec.type !== "remote-v2")
|
|
222
223
|
throw new Error(`Only "remote-v2" registries support specific package version overview retrieval.`);
|
|
223
224
|
const reg = this.v2Provider.getRegistry(regSpec.url);
|
|
224
225
|
return await reg.getSpecificOverview(blockId, channel);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.cjs","sources":["../../src/block_registry/registry.ts"],"sourcesContent":["import type { Dispatcher } from 'undici';\nimport { request } from 'undici';\nimport type {\n BlockPackDescriptionAbsolute } from '@platforma-sdk/block-tools';\nimport {\n BlockPackMetaEmbedAbsoluteBytes,\n RegistryV1,\n} from '@platforma-sdk/block-tools';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport YAML from 'yaml';\nimport { assertNever } from '@milaboratories/ts-helpers';\nimport { LegacyDevBlockPackFiles } from '../dev_env';\nimport { tryLoadPackDescription } from '@platforma-sdk/block-tools';\nimport type { V2RegistryProvider } from './registry-v2-provider';\nimport type {\n BlockPackId,\n BlockPackListing,\n BlockPackOverview,\n RegistryEntry,\n RegistryStatus,\n SingleBlockPackOverview } from '@milaboratories/pl-model-middle-layer';\nimport {\n AnyChannel,\n StableChannel,\n} from '@milaboratories/pl-model-middle-layer';\n\nasync function getFileContent(path: string) {\n try {\n return await fs.promises.readFile(path, 'utf8');\n } catch (error: unknown) {\n if (error instanceof Error && 'code' in error && error.code === 'ENOENT') {\n return undefined;\n }\n throw error;\n }\n}\n\nasync function getFileStat(path: string) {\n try {\n return await fs.promises.stat(path, { bigint: true });\n } catch (error: unknown) {\n if (error instanceof Error && 'code' in error && error.code === 'ENOENT') {\n return undefined;\n }\n throw error;\n }\n}\n\nexport async function getDevV1PacketMtime(devPath: string): Promise<string> {\n let mtime = 0n;\n for (const f of LegacyDevBlockPackFiles) {\n const fullPath = path.join(devPath, ...f);\n const stat = await getFileStat(fullPath);\n if (stat === undefined) continue;\n if (mtime < stat.mtimeNs) mtime = stat.mtimeNs;\n }\n return mtime.toString();\n}\n\nexport async function getDevV2PacketMtime(\n description: BlockPackDescriptionAbsolute,\n): Promise<string> {\n const wfStats = await fs.promises.stat(description.components.workflow.main.file, {\n bigint: true,\n });\n const modelStats = await fs.promises.stat(description.components.model.file, { bigint: true });\n return (wfStats.mtimeNs > modelStats.mtimeNs ? wfStats.mtimeNs : modelStats.mtimeNs).toString();\n}\n\nexport class BlockPackRegistry {\n constructor(\n private readonly v2Provider: V2RegistryProvider,\n private readonly registries: RegistryEntry[],\n private readonly http?: Dispatcher,\n ) {}\n\n private async getPackagesForRoot(regEntry: RegistryEntry): Promise<BlockPackOverview[]> {\n const result: BlockPackOverview[] = [];\n const regSpec = regEntry.spec;\n switch (regSpec.type) {\n case 'remote-v1':\n {\n const httpOptions = this.http !== undefined ? { dispatcher: this.http } : {};\n\n const overviewResponse = await request(\n `${regSpec.url}/${RegistryV1.GlobalOverviewPath}`,\n httpOptions,\n );\n const overview = (await overviewResponse.body.json()) as RegistryV1.GlobalOverview;\n for (const overviewEntry of overview) {\n const { organization, package: pkg, latestMeta, latestVersion } = overviewEntry;\n const id = {\n organization,\n name: pkg,\n version: latestVersion,\n };\n const latestOverview: SingleBlockPackOverview = {\n id,\n meta: {\n title: (latestMeta['title'] as string | undefined) ?? 'No title',\n description: (latestMeta['description'] as string | undefined) ?? 'No Description',\n organization: {\n name: organization,\n url: 'https://unknown.com',\n },\n },\n spec: {\n type: 'from-registry-v1',\n id,\n registryUrl: regSpec.url,\n },\n };\n result.push({\n registryId: regEntry.id,\n id,\n latestByChannel: {\n [AnyChannel]: latestOverview,\n [StableChannel]: latestOverview,\n },\n allVersions: overviewEntry.allVersions.map((v) => ({ version: v, channels: [] })),\n });\n }\n return result;\n }\n\n case 'remote-v2':\n return (await this.v2Provider.getRegistry(regSpec.url).listBlockPacks())\n .map((e) => ({ ...e, registryId: regEntry.id }));\n // e.latestByChannel[StableChannel]\n // ? {\n // ...e,\n // registryId: regEntry.id,\n // }\n // : {\n // ...e,\n // latestByChannel: {\n // ...e.latestByChannel,\n // [StableChannel]: ((s: SingleBlockPackOverview) => {\n // if (s.spec.type === 'from-registry-v2') {\n // return { ...s, spec: { ...s.spec, channel: StableChannel } };\n // }\n\n // return s;\n // })(e.latestByChannel[AnyChannel]),\n // },\n // registryId: regEntry.id,\n // },\n\n case 'local-dev':\n for (const entry of await fs.promises.readdir(regSpec.path, { withFileTypes: true })) {\n if (!entry.isDirectory()) continue;\n const devPath = path.join(regSpec.path, entry.name);\n\n const legacyYamlContent = await getFileContent(\n path.join(devPath, RegistryV1.PlPackageYamlConfigFile),\n );\n if (legacyYamlContent !== undefined) {\n const config = RegistryV1.PlPackageConfigData.parse(YAML.parse(legacyYamlContent));\n\n const mtime = await getDevV1PacketMtime(devPath);\n\n const id = {\n organization: config.organization,\n name: config.package,\n version: 'DEV',\n };\n\n const latestOverview: SingleBlockPackOverview = {\n id,\n meta: {\n title: (config.meta['title'] as string) ?? 'No title',\n description: (config.meta['description'] as string) ?? 'No Description',\n organization: {\n name: config.organization,\n url: 'https://unknown.com',\n },\n },\n spec: {\n type: 'dev-v2',\n folder: devPath,\n mtime,\n },\n };\n\n result.push({\n registryId: regEntry.id,\n id,\n latestByChannel: {\n [AnyChannel]: latestOverview,\n [StableChannel]: latestOverview,\n },\n allVersions: [],\n });\n } else {\n let actualDevPath = devPath;\n let v2Description = await tryLoadPackDescription(actualDevPath);\n\n if (v2Description === undefined)\n // iterating over expected subfolder names where block developer may put root block-pack package\n for (const bpSubfolder of ['block', 'meta']) {\n actualDevPath = path.join(devPath, bpSubfolder);\n v2Description = await tryLoadPackDescription(actualDevPath);\n if (v2Description !== undefined) break;\n }\n\n if (v2Description !== undefined) {\n const mtime = await getDevV2PacketMtime(v2Description);\n\n const latestOverview: SingleBlockPackOverview = {\n id: v2Description.id,\n meta: await BlockPackMetaEmbedAbsoluteBytes.parseAsync(v2Description.meta),\n featureFlags: v2Description.featureFlags,\n spec: {\n type: 'dev-v2',\n folder: actualDevPath,\n mtime,\n },\n };\n\n result.push({\n registryId: regEntry.id,\n id: v2Description.id,\n latestByChannel: {\n [AnyChannel]: latestOverview,\n [StableChannel]: latestOverview,\n },\n allVersions: [],\n });\n }\n }\n\n continue;\n }\n return result;\n default:\n return assertNever(regSpec);\n }\n }\n\n public async listBlockPacks(): Promise<BlockPackListing> {\n const blockPacks: BlockPackOverview[] = [];\n const registries: RegistryStatus[] = [];\n for (const regSpecs of this.registries) {\n registries.push({ ...regSpecs, status: 'online' });\n blockPacks.push(...(await this.getPackagesForRoot(regSpecs)));\n }\n return { registries, blockPacks };\n }\n\n public async getOverview(\n registryId: string,\n blockId: BlockPackId,\n channel: string,\n ): Promise<SingleBlockPackOverview> {\n const regSpec = this.registries.find((reg) => reg.id === registryId)?.spec;\n if (!regSpec) throw new Error(`Registry with id \"${registryId}\" not found`);\n if (regSpec.type !== 'remote-v2')\n throw new Error(\n `Only \"remote-v2\" registries support specific package version overview retrieval.`,\n );\n const reg = this.v2Provider.getRegistry(regSpec.url);\n return await reg.getSpecificOverview(blockId, channel);\n }\n}\n"],"names":["LegacyDevBlockPackFiles","request","RegistryV1","AnyChannel","StableChannel","tryLoadPackDescription","BlockPackMetaEmbedAbsoluteBytes","assertNever"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"registry.cjs","sources":["../../src/block_registry/registry.ts"],"sourcesContent":["import type { Dispatcher } from \"undici\";\nimport { request } from \"undici\";\nimport type { BlockPackDescriptionAbsolute } from \"@platforma-sdk/block-tools\";\nimport { BlockPackMetaEmbedAbsoluteBytes, RegistryV1 } from \"@platforma-sdk/block-tools\";\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport YAML from \"yaml\";\nimport { assertNever } from \"@milaboratories/ts-helpers\";\nimport { LegacyDevBlockPackFiles } from \"../dev_env\";\nimport { tryLoadPackDescription } from \"@platforma-sdk/block-tools\";\nimport type { V2RegistryProvider } from \"./registry-v2-provider\";\nimport type {\n BlockPackId,\n BlockPackListing,\n BlockPackOverview,\n RegistryEntry,\n RegistryStatus,\n SingleBlockPackOverview,\n} from \"@milaboratories/pl-model-middle-layer\";\nimport { AnyChannel, StableChannel } from \"@milaboratories/pl-model-middle-layer\";\n\nasync function getFileContent(path: string) {\n try {\n return await fs.promises.readFile(path, \"utf8\");\n } catch (error: unknown) {\n if (error instanceof Error && \"code\" in error && error.code === \"ENOENT\") {\n return undefined;\n }\n throw error;\n }\n}\n\nasync function getFileStat(path: string) {\n try {\n return await fs.promises.stat(path, { bigint: true });\n } catch (error: unknown) {\n if (error instanceof Error && \"code\" in error && error.code === \"ENOENT\") {\n return undefined;\n }\n throw error;\n }\n}\n\nexport async function getDevV1PacketMtime(devPath: string): Promise<string> {\n let mtime = 0n;\n for (const f of LegacyDevBlockPackFiles) {\n const fullPath = path.join(devPath, ...f);\n const stat = await getFileStat(fullPath);\n if (stat === undefined) continue;\n if (mtime < stat.mtimeNs) mtime = stat.mtimeNs;\n }\n return mtime.toString();\n}\n\nexport async function getDevV2PacketMtime(\n description: BlockPackDescriptionAbsolute,\n): Promise<string> {\n const wfStats = await fs.promises.stat(description.components.workflow.main.file, {\n bigint: true,\n });\n const modelStats = await fs.promises.stat(description.components.model.file, { bigint: true });\n return (wfStats.mtimeNs > modelStats.mtimeNs ? wfStats.mtimeNs : modelStats.mtimeNs).toString();\n}\n\nexport class BlockPackRegistry {\n constructor(\n private readonly v2Provider: V2RegistryProvider,\n private readonly registries: RegistryEntry[],\n private readonly http?: Dispatcher,\n ) {}\n\n private async getPackagesForRoot(regEntry: RegistryEntry): Promise<BlockPackOverview[]> {\n const result: BlockPackOverview[] = [];\n const regSpec = regEntry.spec;\n switch (regSpec.type) {\n case \"remote-v1\": {\n const httpOptions = this.http !== undefined ? { dispatcher: this.http } : {};\n\n const overviewResponse = await request(\n `${regSpec.url}/${RegistryV1.GlobalOverviewPath}`,\n httpOptions,\n );\n const overview = (await overviewResponse.body.json()) as RegistryV1.GlobalOverview;\n for (const overviewEntry of overview) {\n const { organization, package: pkg, latestMeta, latestVersion } = overviewEntry;\n const id = {\n organization,\n name: pkg,\n version: latestVersion,\n };\n const latestOverview: SingleBlockPackOverview = {\n id,\n meta: {\n title: (latestMeta[\"title\"] as string | undefined) ?? \"No title\",\n description: (latestMeta[\"description\"] as string | undefined) ?? \"No Description\",\n organization: {\n name: organization,\n url: \"https://unknown.com\",\n },\n },\n spec: {\n type: \"from-registry-v1\",\n id,\n registryUrl: regSpec.url,\n },\n };\n result.push({\n registryId: regEntry.id,\n id,\n latestByChannel: {\n [AnyChannel]: latestOverview,\n [StableChannel]: latestOverview,\n },\n allVersions: overviewEntry.allVersions.map((v) => ({ version: v, channels: [] })),\n });\n }\n return result;\n }\n\n case \"remote-v2\":\n return (await this.v2Provider.getRegistry(regSpec.url).listBlockPacks()).map((e) => ({\n ...e,\n registryId: regEntry.id,\n }));\n // e.latestByChannel[StableChannel]\n // ? {\n // ...e,\n // registryId: regEntry.id,\n // }\n // : {\n // ...e,\n // latestByChannel: {\n // ...e.latestByChannel,\n // [StableChannel]: ((s: SingleBlockPackOverview) => {\n // if (s.spec.type === 'from-registry-v2') {\n // return { ...s, spec: { ...s.spec, channel: StableChannel } };\n // }\n\n // return s;\n // })(e.latestByChannel[AnyChannel]),\n // },\n // registryId: regEntry.id,\n // },\n\n case \"local-dev\":\n for (const entry of await fs.promises.readdir(regSpec.path, { withFileTypes: true })) {\n if (!entry.isDirectory()) continue;\n const devPath = path.join(regSpec.path, entry.name);\n\n const legacyYamlContent = await getFileContent(\n path.join(devPath, RegistryV1.PlPackageYamlConfigFile),\n );\n if (legacyYamlContent !== undefined) {\n const config = RegistryV1.PlPackageConfigData.parse(YAML.parse(legacyYamlContent));\n\n const mtime = await getDevV1PacketMtime(devPath);\n\n const id = {\n organization: config.organization,\n name: config.package,\n version: \"DEV\",\n };\n\n const latestOverview: SingleBlockPackOverview = {\n id,\n meta: {\n title: (config.meta[\"title\"] as string) ?? \"No title\",\n description: (config.meta[\"description\"] as string) ?? \"No Description\",\n organization: {\n name: config.organization,\n url: \"https://unknown.com\",\n },\n },\n spec: {\n type: \"dev-v2\",\n folder: devPath,\n mtime,\n },\n };\n\n result.push({\n registryId: regEntry.id,\n id,\n latestByChannel: {\n [AnyChannel]: latestOverview,\n [StableChannel]: latestOverview,\n },\n allVersions: [],\n });\n } else {\n let actualDevPath = devPath;\n let v2Description = await tryLoadPackDescription(actualDevPath);\n\n if (v2Description === undefined)\n // iterating over expected subfolder names where block developer may put root block-pack package\n for (const bpSubfolder of [\"block\", \"meta\"]) {\n actualDevPath = path.join(devPath, bpSubfolder);\n v2Description = await tryLoadPackDescription(actualDevPath);\n if (v2Description !== undefined) break;\n }\n\n if (v2Description !== undefined) {\n const mtime = await getDevV2PacketMtime(v2Description);\n\n const latestOverview: SingleBlockPackOverview = {\n id: v2Description.id,\n meta: await BlockPackMetaEmbedAbsoluteBytes.parseAsync(v2Description.meta),\n featureFlags: v2Description.featureFlags,\n spec: {\n type: \"dev-v2\",\n folder: actualDevPath,\n mtime,\n },\n };\n\n result.push({\n registryId: regEntry.id,\n id: v2Description.id,\n latestByChannel: {\n [AnyChannel]: latestOverview,\n [StableChannel]: latestOverview,\n },\n allVersions: [],\n });\n }\n }\n\n continue;\n }\n return result;\n default:\n return assertNever(regSpec);\n }\n }\n\n public async listBlockPacks(): Promise<BlockPackListing> {\n const blockPacks: BlockPackOverview[] = [];\n const registries: RegistryStatus[] = [];\n for (const regSpecs of this.registries) {\n registries.push({ ...regSpecs, status: \"online\" });\n blockPacks.push(...(await this.getPackagesForRoot(regSpecs)));\n }\n return { registries, blockPacks };\n }\n\n public async getOverview(\n registryId: string,\n blockId: BlockPackId,\n channel: string,\n ): Promise<SingleBlockPackOverview> {\n const regSpec = this.registries.find((reg) => reg.id === registryId)?.spec;\n if (!regSpec) throw new Error(`Registry with id \"${registryId}\" not found`);\n if (regSpec.type !== \"remote-v2\")\n throw new Error(\n `Only \"remote-v2\" registries support specific package version overview retrieval.`,\n );\n const reg = this.v2Provider.getRegistry(regSpec.url);\n return await reg.getSpecificOverview(blockId, channel);\n }\n}\n"],"names":["LegacyDevBlockPackFiles","request","RegistryV1","AnyChannel","StableChannel","tryLoadPackDescription","BlockPackMetaEmbedAbsoluteBytes","assertNever"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { Dispatcher } from
|
|
2
|
-
import type { BlockPackDescriptionAbsolute } from
|
|
3
|
-
import type { V2RegistryProvider } from
|
|
4
|
-
import type { BlockPackId, BlockPackListing, RegistryEntry, SingleBlockPackOverview } from
|
|
1
|
+
import type { Dispatcher } from "undici";
|
|
2
|
+
import type { BlockPackDescriptionAbsolute } from "@platforma-sdk/block-tools";
|
|
3
|
+
import type { V2RegistryProvider } from "./registry-v2-provider";
|
|
4
|
+
import type { BlockPackId, BlockPackListing, RegistryEntry, SingleBlockPackOverview } from "@milaboratories/pl-model-middle-layer";
|
|
5
5
|
export declare function getDevV1PacketMtime(devPath: string): Promise<string>;
|
|
6
6
|
export declare function getDevV2PacketMtime(description: BlockPackDescriptionAbsolute): Promise<string>;
|
|
7
7
|
export declare class BlockPackRegistry {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/block_registry/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEzC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/block_registry/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEzC,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAQ/E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EACV,WAAW,EACX,gBAAgB,EAEhB,aAAa,EAEb,uBAAuB,EACxB,MAAM,uCAAuC,CAAC;AAyB/C,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAS1E;AAED,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,4BAA4B,GACxC,OAAO,CAAC,MAAM,CAAC,CAMjB;AAED,qBAAa,iBAAiB;IAE1B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAFL,UAAU,EAAE,kBAAkB,EAC9B,UAAU,EAAE,aAAa,EAAE,EAC3B,IAAI,CAAC,EAAE,UAAU,YAAA;YAGtB,kBAAkB;IAoKnB,cAAc,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAU3C,WAAW,CACtB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,uBAAuB,CAAC;CAUpC"}
|
|
@@ -9,10 +9,10 @@ import { StableChannel, AnyChannel } from '@milaboratories/pl-model-middle-layer
|
|
|
9
9
|
|
|
10
10
|
async function getFileContent(path) {
|
|
11
11
|
try {
|
|
12
|
-
return await fs.promises.readFile(path,
|
|
12
|
+
return await fs.promises.readFile(path, "utf8");
|
|
13
13
|
}
|
|
14
14
|
catch (error) {
|
|
15
|
-
if (error instanceof Error &&
|
|
15
|
+
if (error instanceof Error && "code" in error && error.code === "ENOENT") {
|
|
16
16
|
return undefined;
|
|
17
17
|
}
|
|
18
18
|
throw error;
|
|
@@ -23,7 +23,7 @@ async function getFileStat(path) {
|
|
|
23
23
|
return await fs.promises.stat(path, { bigint: true });
|
|
24
24
|
}
|
|
25
25
|
catch (error) {
|
|
26
|
-
if (error instanceof Error &&
|
|
26
|
+
if (error instanceof Error && "code" in error && error.code === "ENOENT") {
|
|
27
27
|
return undefined;
|
|
28
28
|
}
|
|
29
29
|
throw error;
|
|
@@ -61,49 +61,50 @@ class BlockPackRegistry {
|
|
|
61
61
|
const result = [];
|
|
62
62
|
const regSpec = regEntry.spec;
|
|
63
63
|
switch (regSpec.type) {
|
|
64
|
-
case
|
|
65
|
-
{
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
url: 'https://unknown.com',
|
|
84
|
-
},
|
|
64
|
+
case "remote-v1": {
|
|
65
|
+
const httpOptions = this.http !== undefined ? { dispatcher: this.http } : {};
|
|
66
|
+
const overviewResponse = await request(`${regSpec.url}/${RegistryV1.GlobalOverviewPath}`, httpOptions);
|
|
67
|
+
const overview = (await overviewResponse.body.json());
|
|
68
|
+
for (const overviewEntry of overview) {
|
|
69
|
+
const { organization, package: pkg, latestMeta, latestVersion } = overviewEntry;
|
|
70
|
+
const id = {
|
|
71
|
+
organization,
|
|
72
|
+
name: pkg,
|
|
73
|
+
version: latestVersion,
|
|
74
|
+
};
|
|
75
|
+
const latestOverview = {
|
|
76
|
+
id,
|
|
77
|
+
meta: {
|
|
78
|
+
title: latestMeta["title"] ?? "No title",
|
|
79
|
+
description: latestMeta["description"] ?? "No Description",
|
|
80
|
+
organization: {
|
|
81
|
+
name: organization,
|
|
82
|
+
url: "https://unknown.com",
|
|
85
83
|
},
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
registryUrl: regSpec.url,
|
|
90
|
-
},
|
|
91
|
-
};
|
|
92
|
-
result.push({
|
|
93
|
-
registryId: regEntry.id,
|
|
84
|
+
},
|
|
85
|
+
spec: {
|
|
86
|
+
type: "from-registry-v1",
|
|
94
87
|
id,
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
88
|
+
registryUrl: regSpec.url,
|
|
89
|
+
},
|
|
90
|
+
};
|
|
91
|
+
result.push({
|
|
92
|
+
registryId: regEntry.id,
|
|
93
|
+
id,
|
|
94
|
+
latestByChannel: {
|
|
95
|
+
[AnyChannel]: latestOverview,
|
|
96
|
+
[StableChannel]: latestOverview,
|
|
97
|
+
},
|
|
98
|
+
allVersions: overviewEntry.allVersions.map((v) => ({ version: v, channels: [] })),
|
|
99
|
+
});
|
|
103
100
|
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
101
|
+
return result;
|
|
102
|
+
}
|
|
103
|
+
case "remote-v2":
|
|
104
|
+
return (await this.v2Provider.getRegistry(regSpec.url).listBlockPacks()).map((e) => ({
|
|
105
|
+
...e,
|
|
106
|
+
registryId: regEntry.id,
|
|
107
|
+
}));
|
|
107
108
|
// e.latestByChannel[StableChannel]
|
|
108
109
|
// ? {
|
|
109
110
|
// ...e,
|
|
@@ -122,7 +123,7 @@ class BlockPackRegistry {
|
|
|
122
123
|
// },
|
|
123
124
|
// registryId: regEntry.id,
|
|
124
125
|
// },
|
|
125
|
-
case
|
|
126
|
+
case "local-dev":
|
|
126
127
|
for (const entry of await fs.promises.readdir(regSpec.path, { withFileTypes: true })) {
|
|
127
128
|
if (!entry.isDirectory())
|
|
128
129
|
continue;
|
|
@@ -134,20 +135,20 @@ class BlockPackRegistry {
|
|
|
134
135
|
const id = {
|
|
135
136
|
organization: config.organization,
|
|
136
137
|
name: config.package,
|
|
137
|
-
version:
|
|
138
|
+
version: "DEV",
|
|
138
139
|
};
|
|
139
140
|
const latestOverview = {
|
|
140
141
|
id,
|
|
141
142
|
meta: {
|
|
142
|
-
title: config.meta[
|
|
143
|
-
description: config.meta[
|
|
143
|
+
title: config.meta["title"] ?? "No title",
|
|
144
|
+
description: config.meta["description"] ?? "No Description",
|
|
144
145
|
organization: {
|
|
145
146
|
name: config.organization,
|
|
146
|
-
url:
|
|
147
|
+
url: "https://unknown.com",
|
|
147
148
|
},
|
|
148
149
|
},
|
|
149
150
|
spec: {
|
|
150
|
-
type:
|
|
151
|
+
type: "dev-v2",
|
|
151
152
|
folder: devPath,
|
|
152
153
|
mtime,
|
|
153
154
|
},
|
|
@@ -167,7 +168,7 @@ class BlockPackRegistry {
|
|
|
167
168
|
let v2Description = await tryLoadPackDescription(actualDevPath);
|
|
168
169
|
if (v2Description === undefined)
|
|
169
170
|
// iterating over expected subfolder names where block developer may put root block-pack package
|
|
170
|
-
for (const bpSubfolder of [
|
|
171
|
+
for (const bpSubfolder of ["block", "meta"]) {
|
|
171
172
|
actualDevPath = path.join(devPath, bpSubfolder);
|
|
172
173
|
v2Description = await tryLoadPackDescription(actualDevPath);
|
|
173
174
|
if (v2Description !== undefined)
|
|
@@ -180,7 +181,7 @@ class BlockPackRegistry {
|
|
|
180
181
|
meta: await BlockPackMetaEmbedAbsoluteBytes.parseAsync(v2Description.meta),
|
|
181
182
|
featureFlags: v2Description.featureFlags,
|
|
182
183
|
spec: {
|
|
183
|
-
type:
|
|
184
|
+
type: "dev-v2",
|
|
184
185
|
folder: actualDevPath,
|
|
185
186
|
mtime,
|
|
186
187
|
},
|
|
@@ -207,7 +208,7 @@ class BlockPackRegistry {
|
|
|
207
208
|
const blockPacks = [];
|
|
208
209
|
const registries = [];
|
|
209
210
|
for (const regSpecs of this.registries) {
|
|
210
|
-
registries.push({ ...regSpecs, status:
|
|
211
|
+
registries.push({ ...regSpecs, status: "online" });
|
|
211
212
|
blockPacks.push(...(await this.getPackagesForRoot(regSpecs)));
|
|
212
213
|
}
|
|
213
214
|
return { registries, blockPacks };
|
|
@@ -216,7 +217,7 @@ class BlockPackRegistry {
|
|
|
216
217
|
const regSpec = this.registries.find((reg) => reg.id === registryId)?.spec;
|
|
217
218
|
if (!regSpec)
|
|
218
219
|
throw new Error(`Registry with id "${registryId}" not found`);
|
|
219
|
-
if (regSpec.type !==
|
|
220
|
+
if (regSpec.type !== "remote-v2")
|
|
220
221
|
throw new Error(`Only "remote-v2" registries support specific package version overview retrieval.`);
|
|
221
222
|
const reg = this.v2Provider.getRegistry(regSpec.url);
|
|
222
223
|
return await reg.getSpecificOverview(blockId, channel);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sources":["../../src/block_registry/registry.ts"],"sourcesContent":["import type { Dispatcher } from 'undici';\nimport { request } from 'undici';\nimport type {\n BlockPackDescriptionAbsolute } from '@platforma-sdk/block-tools';\nimport {\n BlockPackMetaEmbedAbsoluteBytes,\n RegistryV1,\n} from '@platforma-sdk/block-tools';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport YAML from 'yaml';\nimport { assertNever } from '@milaboratories/ts-helpers';\nimport { LegacyDevBlockPackFiles } from '../dev_env';\nimport { tryLoadPackDescription } from '@platforma-sdk/block-tools';\nimport type { V2RegistryProvider } from './registry-v2-provider';\nimport type {\n BlockPackId,\n BlockPackListing,\n BlockPackOverview,\n RegistryEntry,\n RegistryStatus,\n SingleBlockPackOverview } from '@milaboratories/pl-model-middle-layer';\nimport {\n AnyChannel,\n StableChannel,\n} from '@milaboratories/pl-model-middle-layer';\n\nasync function getFileContent(path: string) {\n try {\n return await fs.promises.readFile(path, 'utf8');\n } catch (error: unknown) {\n if (error instanceof Error && 'code' in error && error.code === 'ENOENT') {\n return undefined;\n }\n throw error;\n }\n}\n\nasync function getFileStat(path: string) {\n try {\n return await fs.promises.stat(path, { bigint: true });\n } catch (error: unknown) {\n if (error instanceof Error && 'code' in error && error.code === 'ENOENT') {\n return undefined;\n }\n throw error;\n }\n}\n\nexport async function getDevV1PacketMtime(devPath: string): Promise<string> {\n let mtime = 0n;\n for (const f of LegacyDevBlockPackFiles) {\n const fullPath = path.join(devPath, ...f);\n const stat = await getFileStat(fullPath);\n if (stat === undefined) continue;\n if (mtime < stat.mtimeNs) mtime = stat.mtimeNs;\n }\n return mtime.toString();\n}\n\nexport async function getDevV2PacketMtime(\n description: BlockPackDescriptionAbsolute,\n): Promise<string> {\n const wfStats = await fs.promises.stat(description.components.workflow.main.file, {\n bigint: true,\n });\n const modelStats = await fs.promises.stat(description.components.model.file, { bigint: true });\n return (wfStats.mtimeNs > modelStats.mtimeNs ? wfStats.mtimeNs : modelStats.mtimeNs).toString();\n}\n\nexport class BlockPackRegistry {\n constructor(\n private readonly v2Provider: V2RegistryProvider,\n private readonly registries: RegistryEntry[],\n private readonly http?: Dispatcher,\n ) {}\n\n private async getPackagesForRoot(regEntry: RegistryEntry): Promise<BlockPackOverview[]> {\n const result: BlockPackOverview[] = [];\n const regSpec = regEntry.spec;\n switch (regSpec.type) {\n case 'remote-v1':\n {\n const httpOptions = this.http !== undefined ? { dispatcher: this.http } : {};\n\n const overviewResponse = await request(\n `${regSpec.url}/${RegistryV1.GlobalOverviewPath}`,\n httpOptions,\n );\n const overview = (await overviewResponse.body.json()) as RegistryV1.GlobalOverview;\n for (const overviewEntry of overview) {\n const { organization, package: pkg, latestMeta, latestVersion } = overviewEntry;\n const id = {\n organization,\n name: pkg,\n version: latestVersion,\n };\n const latestOverview: SingleBlockPackOverview = {\n id,\n meta: {\n title: (latestMeta['title'] as string | undefined) ?? 'No title',\n description: (latestMeta['description'] as string | undefined) ?? 'No Description',\n organization: {\n name: organization,\n url: 'https://unknown.com',\n },\n },\n spec: {\n type: 'from-registry-v1',\n id,\n registryUrl: regSpec.url,\n },\n };\n result.push({\n registryId: regEntry.id,\n id,\n latestByChannel: {\n [AnyChannel]: latestOverview,\n [StableChannel]: latestOverview,\n },\n allVersions: overviewEntry.allVersions.map((v) => ({ version: v, channels: [] })),\n });\n }\n return result;\n }\n\n case 'remote-v2':\n return (await this.v2Provider.getRegistry(regSpec.url).listBlockPacks())\n .map((e) => ({ ...e, registryId: regEntry.id }));\n // e.latestByChannel[StableChannel]\n // ? {\n // ...e,\n // registryId: regEntry.id,\n // }\n // : {\n // ...e,\n // latestByChannel: {\n // ...e.latestByChannel,\n // [StableChannel]: ((s: SingleBlockPackOverview) => {\n // if (s.spec.type === 'from-registry-v2') {\n // return { ...s, spec: { ...s.spec, channel: StableChannel } };\n // }\n\n // return s;\n // })(e.latestByChannel[AnyChannel]),\n // },\n // registryId: regEntry.id,\n // },\n\n case 'local-dev':\n for (const entry of await fs.promises.readdir(regSpec.path, { withFileTypes: true })) {\n if (!entry.isDirectory()) continue;\n const devPath = path.join(regSpec.path, entry.name);\n\n const legacyYamlContent = await getFileContent(\n path.join(devPath, RegistryV1.PlPackageYamlConfigFile),\n );\n if (legacyYamlContent !== undefined) {\n const config = RegistryV1.PlPackageConfigData.parse(YAML.parse(legacyYamlContent));\n\n const mtime = await getDevV1PacketMtime(devPath);\n\n const id = {\n organization: config.organization,\n name: config.package,\n version: 'DEV',\n };\n\n const latestOverview: SingleBlockPackOverview = {\n id,\n meta: {\n title: (config.meta['title'] as string) ?? 'No title',\n description: (config.meta['description'] as string) ?? 'No Description',\n organization: {\n name: config.organization,\n url: 'https://unknown.com',\n },\n },\n spec: {\n type: 'dev-v2',\n folder: devPath,\n mtime,\n },\n };\n\n result.push({\n registryId: regEntry.id,\n id,\n latestByChannel: {\n [AnyChannel]: latestOverview,\n [StableChannel]: latestOverview,\n },\n allVersions: [],\n });\n } else {\n let actualDevPath = devPath;\n let v2Description = await tryLoadPackDescription(actualDevPath);\n\n if (v2Description === undefined)\n // iterating over expected subfolder names where block developer may put root block-pack package\n for (const bpSubfolder of ['block', 'meta']) {\n actualDevPath = path.join(devPath, bpSubfolder);\n v2Description = await tryLoadPackDescription(actualDevPath);\n if (v2Description !== undefined) break;\n }\n\n if (v2Description !== undefined) {\n const mtime = await getDevV2PacketMtime(v2Description);\n\n const latestOverview: SingleBlockPackOverview = {\n id: v2Description.id,\n meta: await BlockPackMetaEmbedAbsoluteBytes.parseAsync(v2Description.meta),\n featureFlags: v2Description.featureFlags,\n spec: {\n type: 'dev-v2',\n folder: actualDevPath,\n mtime,\n },\n };\n\n result.push({\n registryId: regEntry.id,\n id: v2Description.id,\n latestByChannel: {\n [AnyChannel]: latestOverview,\n [StableChannel]: latestOverview,\n },\n allVersions: [],\n });\n }\n }\n\n continue;\n }\n return result;\n default:\n return assertNever(regSpec);\n }\n }\n\n public async listBlockPacks(): Promise<BlockPackListing> {\n const blockPacks: BlockPackOverview[] = [];\n const registries: RegistryStatus[] = [];\n for (const regSpecs of this.registries) {\n registries.push({ ...regSpecs, status: 'online' });\n blockPacks.push(...(await this.getPackagesForRoot(regSpecs)));\n }\n return { registries, blockPacks };\n }\n\n public async getOverview(\n registryId: string,\n blockId: BlockPackId,\n channel: string,\n ): Promise<SingleBlockPackOverview> {\n const regSpec = this.registries.find((reg) => reg.id === registryId)?.spec;\n if (!regSpec) throw new Error(`Registry with id \"${registryId}\" not found`);\n if (regSpec.type !== 'remote-v2')\n throw new Error(\n `Only \"remote-v2\" registries support specific package version overview retrieval.`,\n );\n const reg = this.v2Provider.getRegistry(regSpec.url);\n return await reg.getSpecificOverview(blockId, channel);\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"registry.js","sources":["../../src/block_registry/registry.ts"],"sourcesContent":["import type { Dispatcher } from \"undici\";\nimport { request } from \"undici\";\nimport type { BlockPackDescriptionAbsolute } from \"@platforma-sdk/block-tools\";\nimport { BlockPackMetaEmbedAbsoluteBytes, RegistryV1 } from \"@platforma-sdk/block-tools\";\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport YAML from \"yaml\";\nimport { assertNever } from \"@milaboratories/ts-helpers\";\nimport { LegacyDevBlockPackFiles } from \"../dev_env\";\nimport { tryLoadPackDescription } from \"@platforma-sdk/block-tools\";\nimport type { V2RegistryProvider } from \"./registry-v2-provider\";\nimport type {\n BlockPackId,\n BlockPackListing,\n BlockPackOverview,\n RegistryEntry,\n RegistryStatus,\n SingleBlockPackOverview,\n} from \"@milaboratories/pl-model-middle-layer\";\nimport { AnyChannel, StableChannel } from \"@milaboratories/pl-model-middle-layer\";\n\nasync function getFileContent(path: string) {\n try {\n return await fs.promises.readFile(path, \"utf8\");\n } catch (error: unknown) {\n if (error instanceof Error && \"code\" in error && error.code === \"ENOENT\") {\n return undefined;\n }\n throw error;\n }\n}\n\nasync function getFileStat(path: string) {\n try {\n return await fs.promises.stat(path, { bigint: true });\n } catch (error: unknown) {\n if (error instanceof Error && \"code\" in error && error.code === \"ENOENT\") {\n return undefined;\n }\n throw error;\n }\n}\n\nexport async function getDevV1PacketMtime(devPath: string): Promise<string> {\n let mtime = 0n;\n for (const f of LegacyDevBlockPackFiles) {\n const fullPath = path.join(devPath, ...f);\n const stat = await getFileStat(fullPath);\n if (stat === undefined) continue;\n if (mtime < stat.mtimeNs) mtime = stat.mtimeNs;\n }\n return mtime.toString();\n}\n\nexport async function getDevV2PacketMtime(\n description: BlockPackDescriptionAbsolute,\n): Promise<string> {\n const wfStats = await fs.promises.stat(description.components.workflow.main.file, {\n bigint: true,\n });\n const modelStats = await fs.promises.stat(description.components.model.file, { bigint: true });\n return (wfStats.mtimeNs > modelStats.mtimeNs ? wfStats.mtimeNs : modelStats.mtimeNs).toString();\n}\n\nexport class BlockPackRegistry {\n constructor(\n private readonly v2Provider: V2RegistryProvider,\n private readonly registries: RegistryEntry[],\n private readonly http?: Dispatcher,\n ) {}\n\n private async getPackagesForRoot(regEntry: RegistryEntry): Promise<BlockPackOverview[]> {\n const result: BlockPackOverview[] = [];\n const regSpec = regEntry.spec;\n switch (regSpec.type) {\n case \"remote-v1\": {\n const httpOptions = this.http !== undefined ? { dispatcher: this.http } : {};\n\n const overviewResponse = await request(\n `${regSpec.url}/${RegistryV1.GlobalOverviewPath}`,\n httpOptions,\n );\n const overview = (await overviewResponse.body.json()) as RegistryV1.GlobalOverview;\n for (const overviewEntry of overview) {\n const { organization, package: pkg, latestMeta, latestVersion } = overviewEntry;\n const id = {\n organization,\n name: pkg,\n version: latestVersion,\n };\n const latestOverview: SingleBlockPackOverview = {\n id,\n meta: {\n title: (latestMeta[\"title\"] as string | undefined) ?? \"No title\",\n description: (latestMeta[\"description\"] as string | undefined) ?? \"No Description\",\n organization: {\n name: organization,\n url: \"https://unknown.com\",\n },\n },\n spec: {\n type: \"from-registry-v1\",\n id,\n registryUrl: regSpec.url,\n },\n };\n result.push({\n registryId: regEntry.id,\n id,\n latestByChannel: {\n [AnyChannel]: latestOverview,\n [StableChannel]: latestOverview,\n },\n allVersions: overviewEntry.allVersions.map((v) => ({ version: v, channels: [] })),\n });\n }\n return result;\n }\n\n case \"remote-v2\":\n return (await this.v2Provider.getRegistry(regSpec.url).listBlockPacks()).map((e) => ({\n ...e,\n registryId: regEntry.id,\n }));\n // e.latestByChannel[StableChannel]\n // ? {\n // ...e,\n // registryId: regEntry.id,\n // }\n // : {\n // ...e,\n // latestByChannel: {\n // ...e.latestByChannel,\n // [StableChannel]: ((s: SingleBlockPackOverview) => {\n // if (s.spec.type === 'from-registry-v2') {\n // return { ...s, spec: { ...s.spec, channel: StableChannel } };\n // }\n\n // return s;\n // })(e.latestByChannel[AnyChannel]),\n // },\n // registryId: regEntry.id,\n // },\n\n case \"local-dev\":\n for (const entry of await fs.promises.readdir(regSpec.path, { withFileTypes: true })) {\n if (!entry.isDirectory()) continue;\n const devPath = path.join(regSpec.path, entry.name);\n\n const legacyYamlContent = await getFileContent(\n path.join(devPath, RegistryV1.PlPackageYamlConfigFile),\n );\n if (legacyYamlContent !== undefined) {\n const config = RegistryV1.PlPackageConfigData.parse(YAML.parse(legacyYamlContent));\n\n const mtime = await getDevV1PacketMtime(devPath);\n\n const id = {\n organization: config.organization,\n name: config.package,\n version: \"DEV\",\n };\n\n const latestOverview: SingleBlockPackOverview = {\n id,\n meta: {\n title: (config.meta[\"title\"] as string) ?? \"No title\",\n description: (config.meta[\"description\"] as string) ?? \"No Description\",\n organization: {\n name: config.organization,\n url: \"https://unknown.com\",\n },\n },\n spec: {\n type: \"dev-v2\",\n folder: devPath,\n mtime,\n },\n };\n\n result.push({\n registryId: regEntry.id,\n id,\n latestByChannel: {\n [AnyChannel]: latestOverview,\n [StableChannel]: latestOverview,\n },\n allVersions: [],\n });\n } else {\n let actualDevPath = devPath;\n let v2Description = await tryLoadPackDescription(actualDevPath);\n\n if (v2Description === undefined)\n // iterating over expected subfolder names where block developer may put root block-pack package\n for (const bpSubfolder of [\"block\", \"meta\"]) {\n actualDevPath = path.join(devPath, bpSubfolder);\n v2Description = await tryLoadPackDescription(actualDevPath);\n if (v2Description !== undefined) break;\n }\n\n if (v2Description !== undefined) {\n const mtime = await getDevV2PacketMtime(v2Description);\n\n const latestOverview: SingleBlockPackOverview = {\n id: v2Description.id,\n meta: await BlockPackMetaEmbedAbsoluteBytes.parseAsync(v2Description.meta),\n featureFlags: v2Description.featureFlags,\n spec: {\n type: \"dev-v2\",\n folder: actualDevPath,\n mtime,\n },\n };\n\n result.push({\n registryId: regEntry.id,\n id: v2Description.id,\n latestByChannel: {\n [AnyChannel]: latestOverview,\n [StableChannel]: latestOverview,\n },\n allVersions: [],\n });\n }\n }\n\n continue;\n }\n return result;\n default:\n return assertNever(regSpec);\n }\n }\n\n public async listBlockPacks(): Promise<BlockPackListing> {\n const blockPacks: BlockPackOverview[] = [];\n const registries: RegistryStatus[] = [];\n for (const regSpecs of this.registries) {\n registries.push({ ...regSpecs, status: \"online\" });\n blockPacks.push(...(await this.getPackagesForRoot(regSpecs)));\n }\n return { registries, blockPacks };\n }\n\n public async getOverview(\n registryId: string,\n blockId: BlockPackId,\n channel: string,\n ): Promise<SingleBlockPackOverview> {\n const regSpec = this.registries.find((reg) => reg.id === registryId)?.spec;\n if (!regSpec) throw new Error(`Registry with id \"${registryId}\" not found`);\n if (regSpec.type !== \"remote-v2\")\n throw new Error(\n `Only \"remote-v2\" registries support specific package version overview retrieval.`,\n );\n const reg = this.v2Provider.getRegistry(regSpec.url);\n return await reg.getSpecificOverview(blockId, channel);\n }\n}\n"],"names":[],"mappings":"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"}
|