@milaboratories/pl-middle-layer 1.55.1 → 1.55.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/_virtual/{_@oxc-project_runtime@0.114.0 → _@oxc-project_runtime@0.123.0}/helpers/usingCtx.cjs +2 -4
- package/dist/_virtual/{_@oxc-project_runtime@0.114.0 → _@oxc-project_runtime@0.123.0}/helpers/usingCtx.js +2 -3
- package/dist/_virtual/_rolldown/runtime.cjs +7 -13
- package/dist/block_registry/index.cjs +3 -3
- package/dist/block_registry/index.js +3 -3
- package/dist/block_registry/registry-v2-provider.cjs +2 -3
- package/dist/block_registry/registry-v2-provider.cjs.map +1 -1
- package/dist/block_registry/registry-v2-provider.d.ts.map +1 -0
- package/dist/block_registry/registry-v2-provider.js +1 -2
- package/dist/block_registry/registry-v2-provider.js.map +1 -1
- package/dist/block_registry/registry.cjs +3 -4
- package/dist/block_registry/registry.cjs.map +1 -1
- package/dist/block_registry/registry.d.ts.map +1 -0
- package/dist/block_registry/registry.js +1 -2
- package/dist/block_registry/registry.js.map +1 -1
- package/dist/block_registry/watcher.cjs +3 -4
- package/dist/block_registry/watcher.cjs.map +1 -1
- package/dist/block_registry/watcher.d.ts.map +1 -0
- package/dist/block_registry/watcher.js +1 -2
- package/dist/block_registry/watcher.js.map +1 -1
- package/dist/block_registry/well_known_registries.cjs +1 -2
- package/dist/block_registry/well_known_registries.cjs.map +1 -1
- package/dist/block_registry/well_known_registries.d.ts.map +1 -0
- package/dist/block_registry/well_known_registries.js +1 -1
- package/dist/cfg_render/executor.cjs +4 -5
- package/dist/cfg_render/executor.cjs.map +1 -1
- package/dist/cfg_render/executor.js +1 -2
- package/dist/cfg_render/executor.js.map +1 -1
- package/dist/cfg_render/renderer.cjs +4 -5
- package/dist/cfg_render/renderer.cjs.map +1 -1
- package/dist/cfg_render/renderer.js +1 -2
- package/dist/cfg_render/renderer.js.map +1 -1
- package/dist/cfg_render/traverse.cjs +2 -3
- package/dist/cfg_render/traverse.cjs.map +1 -1
- package/dist/cfg_render/traverse.js +1 -2
- package/dist/cfg_render/traverse.js.map +1 -1
- package/dist/cfg_render/util.cjs +2 -3
- package/dist/cfg_render/util.cjs.map +1 -1
- package/dist/cfg_render/util.js +1 -2
- package/dist/cfg_render/util.js.map +1 -1
- package/dist/debug/index.cjs +1 -2
- package/dist/debug/index.cjs.map +1 -1
- package/dist/debug/index.js +1 -1
- package/dist/debug/index.js.map +1 -1
- package/dist/dev_env/index.cjs +3 -4
- package/dist/dev_env/index.cjs.map +1 -1
- package/dist/dev_env/index.js +1 -2
- package/dist/dev_env/index.js.map +1 -1
- package/dist/dev_env/util.cjs +2 -3
- package/dist/dev_env/util.cjs.map +1 -1
- package/dist/dev_env/util.js +1 -2
- package/dist/dev_env/util.js.map +1 -1
- package/dist/index.cjs +48 -44
- package/dist/index.d.ts +0 -3
- package/dist/index.js +5 -10
- package/dist/js_render/computable_context.cjs +5 -6
- package/dist/js_render/computable_context.cjs.map +1 -1
- package/dist/js_render/computable_context.js +2 -3
- package/dist/js_render/computable_context.js.map +1 -1
- package/dist/js_render/context.cjs +3 -4
- package/dist/js_render/context.cjs.map +1 -1
- package/dist/js_render/context.js +1 -2
- package/dist/js_render/context.js.map +1 -1
- package/dist/js_render/index.cjs +4 -5
- package/dist/js_render/index.cjs.map +1 -1
- package/dist/js_render/index.js +1 -2
- package/dist/js_render/index.js.map +1 -1
- package/dist/js_render/service_injectors.cjs +3 -4
- package/dist/js_render/service_injectors.cjs.map +1 -1
- package/dist/js_render/service_injectors.js +2 -3
- package/dist/js_render/service_injectors.js.map +1 -1
- package/dist/middle_layer/active_cfg.cjs +7 -8
- package/dist/middle_layer/active_cfg.cjs.map +1 -1
- package/dist/middle_layer/active_cfg.js +1 -2
- package/dist/middle_layer/active_cfg.js.map +1 -1
- package/dist/middle_layer/block.cjs +8 -9
- package/dist/middle_layer/block.cjs.map +1 -1
- package/dist/middle_layer/block.js +1 -2
- package/dist/middle_layer/block.js.map +1 -1
- package/dist/middle_layer/block_ctx.cjs +5 -6
- package/dist/middle_layer/block_ctx.cjs.map +1 -1
- package/dist/middle_layer/block_ctx.js +1 -2
- package/dist/middle_layer/block_ctx.js.map +1 -1
- package/dist/middle_layer/block_ctx_unsafe.cjs +1 -2
- package/dist/middle_layer/block_ctx_unsafe.cjs.map +1 -1
- 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 +5 -6
- package/dist/middle_layer/driver_kit.cjs.map +1 -1
- package/dist/middle_layer/driver_kit.d.ts +0 -1
- package/dist/middle_layer/driver_kit.d.ts.map +1 -0
- 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 +6 -7
- package/dist/middle_layer/frontend_path.cjs.map +1 -1
- package/dist/middle_layer/frontend_path.js +1 -2
- package/dist/middle_layer/frontend_path.js.map +1 -1
- package/dist/middle_layer/index.cjs +5 -5
- package/dist/middle_layer/index.js +5 -5
- package/dist/middle_layer/middle_layer.cjs +15 -16
- package/dist/middle_layer/middle_layer.cjs.map +1 -1
- package/dist/middle_layer/middle_layer.d.ts +0 -2
- package/dist/middle_layer/middle_layer.d.ts.map +1 -0
- package/dist/middle_layer/middle_layer.js +1 -2
- package/dist/middle_layer/middle_layer.js.map +1 -1
- package/dist/middle_layer/navigation_states.cjs +2 -3
- package/dist/middle_layer/navigation_states.cjs.map +1 -1
- package/dist/middle_layer/navigation_states.js +1 -2
- package/dist/middle_layer/navigation_states.js.map +1 -1
- package/dist/middle_layer/ops.cjs +5 -7
- package/dist/middle_layer/ops.cjs.map +1 -1
- package/dist/middle_layer/ops.d.ts +0 -1
- package/dist/middle_layer/ops.d.ts.map +1 -0
- package/dist/middle_layer/ops.js +1 -2
- package/dist/middle_layer/ops.js.map +1 -1
- package/dist/middle_layer/project.cjs +12 -13
- package/dist/middle_layer/project.cjs.map +1 -1
- package/dist/middle_layer/project.d.ts +0 -1
- package/dist/middle_layer/project.d.ts.map +1 -0
- package/dist/middle_layer/project.js +1 -2
- package/dist/middle_layer/project.js.map +1 -1
- package/dist/middle_layer/project_list.cjs +3 -4
- package/dist/middle_layer/project_list.cjs.map +1 -1
- package/dist/middle_layer/project_list.d.ts +0 -4
- package/dist/middle_layer/project_list.d.ts.map +1 -0
- package/dist/middle_layer/project_list.js +1 -2
- package/dist/middle_layer/project_list.js.map +1 -1
- package/dist/middle_layer/project_overview.cjs +9 -10
- package/dist/middle_layer/project_overview.cjs.map +1 -1
- package/dist/middle_layer/project_overview.js +1 -2
- package/dist/middle_layer/project_overview.js.map +1 -1
- package/dist/middle_layer/project_overview_light.cjs +4 -5
- package/dist/middle_layer/project_overview_light.cjs.map +1 -1
- package/dist/middle_layer/project_overview_light.js +1 -2
- package/dist/middle_layer/project_overview_light.js.map +1 -1
- package/dist/middle_layer/render.cjs +5 -6
- package/dist/middle_layer/render.cjs.map +1 -1
- package/dist/middle_layer/render.js +1 -2
- package/dist/middle_layer/render.js.map +1 -1
- package/dist/middle_layer/types.d.ts.map +1 -0
- package/dist/middle_layer/util.cjs +4 -5
- package/dist/middle_layer/util.cjs.map +1 -1
- package/dist/middle_layer/util.js +1 -2
- package/dist/middle_layer/util.js.map +1 -1
- package/dist/model/args.cjs +2 -3
- package/dist/model/args.cjs.map +1 -1
- package/dist/model/args.js +1 -2
- package/dist/model/args.js.map +1 -1
- package/dist/model/block_pack_spec.cjs +1 -2
- package/dist/model/block_pack_spec.cjs.map +1 -1
- package/dist/model/block_pack_spec.d.ts.map +1 -0
- package/dist/model/block_pack_spec.js +1 -1
- package/dist/model/frontend.d.ts.map +1 -0
- package/dist/model/project_helper.cjs +3 -4
- package/dist/model/project_helper.cjs.map +1 -1
- package/dist/model/project_helper.d.ts.map +1 -0
- package/dist/model/project_helper.js +1 -2
- package/dist/model/project_helper.js.map +1 -1
- package/dist/model/project_model.cjs +1 -6
- package/dist/model/project_model.cjs.map +1 -1
- package/dist/model/project_model.d.ts +0 -1
- package/dist/model/project_model.d.ts.map +1 -0
- package/dist/model/project_model.js +2 -4
- package/dist/model/project_model.js.map +1 -1
- package/dist/model/project_model_util.cjs +2 -3
- package/dist/model/project_model_util.cjs.map +1 -1
- package/dist/model/project_model_util.js +1 -2
- package/dist/model/project_model_util.js.map +1 -1
- package/dist/model/project_model_v1.cjs +1 -5
- package/dist/model/project_model_v1.cjs.map +1 -1
- package/dist/model/project_model_v1.js +2 -4
- package/dist/model/project_model_v1.js.map +1 -1
- package/dist/model/template_spec.d.ts.map +1 -0
- package/dist/mutator/block-pack/block_pack.cjs +9 -10
- package/dist/mutator/block-pack/block_pack.cjs.map +1 -1
- package/dist/mutator/block-pack/block_pack.d.ts +0 -1
- package/dist/mutator/block-pack/block_pack.d.ts.map +1 -0
- package/dist/mutator/block-pack/block_pack.js +2 -3
- package/dist/mutator/block-pack/block_pack.js.map +1 -1
- package/dist/mutator/block-pack/frontend.cjs +3 -4
- package/dist/mutator/block-pack/frontend.cjs.map +1 -1
- package/dist/mutator/block-pack/frontend.js +1 -2
- package/dist/mutator/block-pack/frontend.js.map +1 -1
- package/dist/mutator/context_export.cjs +4 -5
- package/dist/mutator/context_export.cjs.map +1 -1
- package/dist/mutator/context_export.js +1 -2
- package/dist/mutator/context_export.js.map +1 -1
- package/dist/mutator/migration.cjs +13 -14
- package/dist/mutator/migration.cjs.map +1 -1
- package/dist/mutator/migration.js +11 -12
- package/dist/mutator/migration.js.map +1 -1
- package/dist/mutator/project.cjs +13 -14
- package/dist/mutator/project.cjs.map +1 -1
- package/dist/mutator/project.d.ts +0 -3
- package/dist/mutator/project.d.ts.map +1 -0
- package/dist/mutator/project.js +6 -7
- package/dist/mutator/project.js.map +1 -1
- package/dist/mutator/template/direct_template_loader.cjs +3 -4
- package/dist/mutator/template/direct_template_loader.cjs.map +1 -1
- package/dist/mutator/template/direct_template_loader.js +1 -2
- package/dist/mutator/template/direct_template_loader.js.map +1 -1
- package/dist/mutator/template/direct_template_loader_v3.cjs +2 -3
- package/dist/mutator/template/direct_template_loader_v3.cjs.map +1 -1
- package/dist/mutator/template/direct_template_loader_v3.js +1 -2
- package/dist/mutator/template/direct_template_loader_v3.js.map +1 -1
- package/dist/mutator/template/render_block.cjs +4 -6
- package/dist/mutator/template/render_block.cjs.map +1 -1
- package/dist/mutator/template/render_block.js +2 -4
- package/dist/mutator/template/render_block.js.map +1 -1
- package/dist/mutator/template/render_template.cjs +2 -3
- package/dist/mutator/template/render_template.cjs.map +1 -1
- package/dist/mutator/template/render_template.d.ts.map +1 -0
- package/dist/mutator/template/render_template.js +1 -2
- package/dist/mutator/template/render_template.js.map +1 -1
- package/dist/mutator/template/template_cache.cjs +6 -10
- package/dist/mutator/template/template_cache.cjs.map +1 -1
- package/dist/mutator/template/template_cache.d.ts +2 -3
- package/dist/mutator/template/template_cache.d.ts.map +1 -0
- package/dist/mutator/template/template_cache.js +4 -8
- package/dist/mutator/template/template_cache.js.map +1 -1
- package/dist/mutator/template/template_loading.cjs +3 -4
- package/dist/mutator/template/template_loading.cjs.map +1 -1
- package/dist/mutator/template/template_loading.d.ts.map +1 -0
- package/dist/mutator/template/template_loading.js +1 -2
- package/dist/mutator/template/template_loading.js.map +1 -1
- package/dist/network_check/network_check.cjs +4 -5
- package/dist/network_check/network_check.cjs.map +1 -1
- package/dist/network_check/network_check.d.ts.map +1 -0
- package/dist/network_check/network_check.js +1 -2
- package/dist/network_check/network_check.js.map +1 -1
- package/dist/network_check/pings.cjs +2 -3
- package/dist/network_check/pings.cjs.map +1 -1
- package/dist/network_check/pings.js +1 -2
- package/dist/network_check/pings.js.map +1 -1
- package/dist/network_check/template.cjs +4 -5
- package/dist/network_check/template.cjs.map +1 -1
- package/dist/network_check/template.js +1 -2
- package/dist/network_check/template.js.map +1 -1
- package/dist/pool/data.cjs +2 -3
- package/dist/pool/data.cjs.map +1 -1
- package/dist/pool/data.d.ts +0 -1
- package/dist/pool/data.d.ts.map +1 -0
- package/dist/pool/data.js +1 -2
- package/dist/pool/data.js.map +1 -1
- package/dist/pool/driver.cjs +3 -4
- package/dist/pool/driver.cjs.map +1 -1
- package/dist/pool/driver.d.ts +0 -1
- package/dist/pool/driver.d.ts.map +1 -0
- package/dist/pool/driver.js +1 -2
- package/dist/pool/driver.js.map +1 -1
- package/dist/pool/index.cjs +2 -2
- package/dist/pool/index.d.ts +1 -2
- package/dist/pool/index.js +2 -2
- package/dist/pool/p_object_collection.cjs +3 -4
- package/dist/pool/p_object_collection.cjs.map +1 -1
- package/dist/pool/p_object_collection.d.ts.map +1 -0
- package/dist/pool/p_object_collection.js +1 -2
- package/dist/pool/p_object_collection.js.map +1 -1
- package/dist/pool/result_pool.cjs +7 -8
- package/dist/pool/result_pool.cjs.map +1 -1
- package/dist/pool/result_pool.d.ts +1 -3
- package/dist/pool/result_pool.js +1 -2
- package/dist/pool/result_pool.js.map +1 -1
- package/dist/service_factories.cjs +2 -3
- package/dist/service_factories.cjs.map +1 -1
- package/dist/service_factories.js +1 -2
- package/dist/service_factories.js.map +1 -1
- package/dist/worker/WorkerManager.cjs +2 -3
- package/dist/worker/WorkerManager.cjs.map +1 -1
- package/dist/worker/WorkerManager.js +1 -2
- package/dist/worker/WorkerManager.js.map +1 -1
- package/dist/worker/worker.cjs +3 -4
- package/dist/worker/worker.cjs.map +1 -1
- package/dist/worker/worker.js +1 -2
- package/dist/worker/worker.js.map +1 -1
- package/dist/worker/workerApi.cjs +2 -3
- package/dist/worker/workerApi.cjs.map +1 -1
- package/dist/worker/workerApi.js +1 -2
- package/dist/worker/workerApi.js.map +1 -1
- package/package.json +19 -19
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
const require_project_model = require(
|
|
3
|
-
const require_project_model_util = require(
|
|
4
|
-
const require_project_model_v1 = require(
|
|
1
|
+
require("../_virtual/_rolldown/runtime.cjs");
|
|
2
|
+
const require_project_model = require("../model/project_model.cjs");
|
|
3
|
+
const require_project_model_util = require("../model/project_model_util.cjs");
|
|
4
|
+
const require_project_model_v1 = require("../model/project_model_v1.cjs");
|
|
5
5
|
let _milaboratories_ts_helpers = require("@milaboratories/ts-helpers");
|
|
6
6
|
let _milaboratories_pl_client = require("@milaboratories/pl-client");
|
|
7
7
|
let _milaboratories_pl_model_common = require("@milaboratories/pl-model-common");
|
|
8
|
-
|
|
9
8
|
//#region src/mutator/migration.ts
|
|
10
9
|
/**
|
|
11
10
|
* Migrates the project to the latest schema version.
|
|
@@ -16,18 +15,18 @@ let _milaboratories_pl_model_common = require("@milaboratories/pl-model-common")
|
|
|
16
15
|
async function applyProjectMigrations(pl, rid) {
|
|
17
16
|
await pl.withWriteTx("ProjectMigration", async (tx) => {
|
|
18
17
|
let schemaVersion = await tx.getKValueJson(rid, require_project_model.SchemaVersionKey);
|
|
19
|
-
if (schemaVersion ===
|
|
20
|
-
if (schemaVersion ===
|
|
18
|
+
if (schemaVersion === "4") return;
|
|
19
|
+
if (schemaVersion === "1") {
|
|
21
20
|
await migrateV1ToV2(tx, rid);
|
|
22
|
-
schemaVersion =
|
|
21
|
+
schemaVersion = "2";
|
|
23
22
|
}
|
|
24
|
-
if (schemaVersion ===
|
|
23
|
+
if (schemaVersion === "2") {
|
|
25
24
|
await migrateV2ToV3(tx, rid);
|
|
26
|
-
schemaVersion =
|
|
25
|
+
schemaVersion = "3";
|
|
27
26
|
}
|
|
28
|
-
if (schemaVersion ===
|
|
29
|
-
if (schemaVersion !==
|
|
30
|
-
tx.setKValue(rid, require_project_model.SchemaVersionKey, JSON.stringify(
|
|
27
|
+
if (schemaVersion === "3") schemaVersion = "4";
|
|
28
|
+
if (schemaVersion !== "4") throw new _milaboratories_pl_model_common.UiError(`This project was created with a newer version of Platforma. Please update to the latest version to open it.`);
|
|
29
|
+
tx.setKValue(rid, require_project_model.SchemaVersionKey, JSON.stringify("4"));
|
|
31
30
|
await tx.commit();
|
|
32
31
|
});
|
|
33
32
|
}
|
|
@@ -97,7 +96,7 @@ async function migrateV2ToV3(tx, rid) {
|
|
|
97
96
|
}
|
|
98
97
|
}
|
|
99
98
|
}
|
|
100
|
-
|
|
101
99
|
//#endregion
|
|
102
100
|
exports.applyProjectMigrations = applyProjectMigrations;
|
|
101
|
+
|
|
103
102
|
//# sourceMappingURL=migration.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migration.cjs","names":["SchemaVersionKey","
|
|
1
|
+
{"version":3,"file":"migration.cjs","names":["SchemaVersionKey","UiError","ProjectStructureKey","allBlocks","BlockFrontendStateKeyPrefixV1","projectFieldName"],"sources":["../../src/mutator/migration.ts"],"sourcesContent":["import { UiError } from \"@milaboratories/pl-model-common\";\nimport type { PlClient, PlTransaction, ResourceId } from \"@milaboratories/pl-client\";\nimport type { ProjectField, ProjectStructure } from \"../model/project_model\";\nimport {\n projectFieldName,\n ProjectStructureKey,\n SchemaVersionCurrent,\n SchemaVersionKey,\n SchemaVersionV2,\n SchemaVersionV3,\n} from \"../model/project_model\";\nimport { BlockFrontendStateKeyPrefixV1, SchemaVersionV1 } from \"../model/project_model_v1\";\nimport { field, isNullResourceId } from \"@milaboratories/pl-client\";\nimport { cachedDeserialize } from \"@milaboratories/ts-helpers\";\nimport { allBlocks } from \"../model/project_model_util\";\n\n/**\n * Migrates the project to the latest schema version.\n *\n * @param pl - The client to use.\n * @param rid - The resource id of the project.\n */\nexport async function applyProjectMigrations(pl: PlClient, rid: ResourceId) {\n await pl.withWriteTx(\"ProjectMigration\", async (tx) => {\n let schemaVersion = await tx.getKValueJson<string>(rid, SchemaVersionKey);\n if (schemaVersion === SchemaVersionCurrent) return;\n\n // Apply migrations in sequence\n if (schemaVersion === SchemaVersionV1) {\n await migrateV1ToV2(tx, rid);\n schemaVersion = SchemaVersionV2;\n }\n\n if (schemaVersion === SchemaVersionV2) {\n await migrateV2ToV3(tx, rid);\n schemaVersion = SchemaVersionV3;\n }\n\n if (schemaVersion === SchemaVersionV3) {\n // V3 → V4: production context chain + staging re-render.\n // The actual chain building and staging reset happens in fixProblemsAndMigrate()\n // (called from ProjectMutator.load). This migration step just bumps the schema\n // to prevent older clients from operating on the new project structure.\n schemaVersion = SchemaVersionCurrent;\n }\n\n if (schemaVersion !== SchemaVersionCurrent) {\n throw new UiError(\n `This project was created with a newer version of Platforma. Please update to the latest version to open it.`,\n );\n }\n\n tx.setKValue(rid, SchemaVersionKey, JSON.stringify(SchemaVersionCurrent));\n await tx.commit();\n });\n}\n\n/**\n * Migrates the project from schema version 1 to 2.\n *\n * Summary of changes:\n * - uiState is now stored in a field instead of a KV\n *\n * @param tx - The transaction to use.\n * @param rid - The resource id of the project.\n */\nasync function migrateV1ToV2(tx: PlTransaction, rid: ResourceId) {\n const [structure, allKV] = await Promise.all([\n tx.getKValueJson<ProjectStructure>(rid, ProjectStructureKey),\n tx.listKeyValues(rid),\n ]);\n const kvMap = new Map<string, Uint8Array>(allKV.map((kv) => [kv.key, kv.value]));\n for (const block of allBlocks(structure)) {\n const kvKey = BlockFrontendStateKeyPrefixV1 + block.id;\n const uiState = kvMap.get(kvKey);\n const valueJson = uiState ? cachedDeserialize(uiState) : {};\n const uiStateR = tx.createJsonGzValue(valueJson);\n const uiStateF = field(rid, projectFieldName(block.id, \"blockStorage\"));\n tx.createField(uiStateF, \"Dynamic\", uiStateR);\n tx.deleteKValue(rid, kvKey);\n }\n}\n\n/**\n * Migrates the project from schema version 2 to 3.\n *\n * Summary of changes:\n * - Introduces unified 'blockStorage' field containing { args, uiState }\n * - Adds 'currentPrerunArgs' field for staging/prerun rendering\n * - For each block:\n * 1. Read existing 'blockStorage' field (contains uiState in v2)\n * 2. Read existing 'currentArgs' field (contains args)\n * 3. Create unified state = { args: currentArgs, uiState: oldState }\n * 4. Write to new {blockId}-blockStorage field (overwrites)\n * 5. Initialize {blockId}-currentPrerunArgs (same as prodArgs for v1/v2 blocks)\n * - Note: currentArgs and prodArgs fields remain for compatibility layer\n *\n * @param tx - The transaction to use.\n * @param rid - The resource id of the project.\n */\nasync function migrateV2ToV3(tx: PlTransaction, rid: ResourceId) {\n const [structure, fullResourceState] = await Promise.all([\n tx.getKValueJson<ProjectStructure>(rid, ProjectStructureKey),\n tx.getResourceData(rid, true),\n ]);\n\n // Build a map of field name -> resource id for quick lookup\n const fieldMap = new Map<string, ResourceId>();\n for (const f of fullResourceState.fields) {\n if (!isNullResourceId(f.value)) {\n fieldMap.set(f.name, f.value);\n }\n }\n\n for (const block of allBlocks(structure)) {\n // Read existing field values\n const uiStateFieldName = projectFieldName(block.id, \"uiState\" as ProjectField[\"fieldName\"]);\n const currentArgsFieldName = projectFieldName(block.id, \"currentArgs\");\n\n const uiStateRid = fieldMap.get(uiStateFieldName);\n const currentArgsRid = fieldMap.get(currentArgsFieldName);\n\n // Read field data in parallel where available\n const [uiStateData, currentArgsData] = await Promise.all([\n uiStateRid ? tx.getResourceData(uiStateRid, false) : Promise.resolve(undefined),\n currentArgsRid ? tx.getResourceData(currentArgsRid, false) : Promise.resolve(undefined),\n ]);\n\n // Extract values - in v2, 'blockStorage' contains raw uiState, not wrapped\n const uiState = uiStateData?.data ? cachedDeserialize(uiStateData.data) : {};\n const args = currentArgsData?.data ? cachedDeserialize(currentArgsData.data) : {};\n\n // Create unified state: { args, uiState }\n const unifiedState = {\n args,\n uiState,\n };\n\n const blockStorageFieldName = projectFieldName(block.id, \"blockStorage\");\n\n // Write new unified blockStorage field (overwrite existing)\n const stateR = tx.createJsonGzValue(unifiedState);\n const stateF = field(rid, blockStorageFieldName);\n tx.createField(stateF, \"Dynamic\", stateR);\n\n // Initialize currentPrerunArgs from currentArgs (for legacy blocks, prerunArgs = args)\n if (currentArgsRid) {\n const prerunArgsR = tx.createJsonGzValue(args);\n const prerunArgsF = field(rid, projectFieldName(block.id, \"currentPrerunArgs\"));\n tx.createField(prerunArgsF, \"Dynamic\", prerunArgsR);\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import { ProjectStructureKey,
|
|
1
|
+
import { ProjectStructureKey, SchemaVersionKey, projectFieldName } from "../model/project_model.js";
|
|
2
2
|
import { allBlocks } from "../model/project_model_util.js";
|
|
3
|
-
import { BlockFrontendStateKeyPrefixV1
|
|
3
|
+
import { BlockFrontendStateKeyPrefixV1 } from "../model/project_model_v1.js";
|
|
4
4
|
import { cachedDeserialize } from "@milaboratories/ts-helpers";
|
|
5
5
|
import { field, isNullResourceId } from "@milaboratories/pl-client";
|
|
6
6
|
import { UiError } from "@milaboratories/pl-model-common";
|
|
7
|
-
|
|
8
7
|
//#region src/mutator/migration.ts
|
|
9
8
|
/**
|
|
10
9
|
* Migrates the project to the latest schema version.
|
|
@@ -15,18 +14,18 @@ import { UiError } from "@milaboratories/pl-model-common";
|
|
|
15
14
|
async function applyProjectMigrations(pl, rid) {
|
|
16
15
|
await pl.withWriteTx("ProjectMigration", async (tx) => {
|
|
17
16
|
let schemaVersion = await tx.getKValueJson(rid, SchemaVersionKey);
|
|
18
|
-
if (schemaVersion ===
|
|
19
|
-
if (schemaVersion ===
|
|
17
|
+
if (schemaVersion === "4") return;
|
|
18
|
+
if (schemaVersion === "1") {
|
|
20
19
|
await migrateV1ToV2(tx, rid);
|
|
21
|
-
schemaVersion =
|
|
20
|
+
schemaVersion = "2";
|
|
22
21
|
}
|
|
23
|
-
if (schemaVersion ===
|
|
22
|
+
if (schemaVersion === "2") {
|
|
24
23
|
await migrateV2ToV3(tx, rid);
|
|
25
|
-
schemaVersion =
|
|
24
|
+
schemaVersion = "3";
|
|
26
25
|
}
|
|
27
|
-
if (schemaVersion ===
|
|
28
|
-
if (schemaVersion !==
|
|
29
|
-
tx.setKValue(rid, SchemaVersionKey, JSON.stringify(
|
|
26
|
+
if (schemaVersion === "3") schemaVersion = "4";
|
|
27
|
+
if (schemaVersion !== "4") throw new UiError(`This project was created with a newer version of Platforma. Please update to the latest version to open it.`);
|
|
28
|
+
tx.setKValue(rid, SchemaVersionKey, JSON.stringify("4"));
|
|
30
29
|
await tx.commit();
|
|
31
30
|
});
|
|
32
31
|
}
|
|
@@ -96,7 +95,7 @@ async function migrateV2ToV3(tx, rid) {
|
|
|
96
95
|
}
|
|
97
96
|
}
|
|
98
97
|
}
|
|
99
|
-
|
|
100
98
|
//#endregion
|
|
101
99
|
export { applyProjectMigrations };
|
|
100
|
+
|
|
102
101
|
//# sourceMappingURL=migration.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migration.js","names":[],"sources":["../../src/mutator/migration.ts"],"sourcesContent":["import { UiError } from \"@milaboratories/pl-model-common\";\nimport type { PlClient, PlTransaction, ResourceId } from \"@milaboratories/pl-client\";\nimport type { ProjectField, ProjectStructure } from \"../model/project_model\";\nimport {\n projectFieldName,\n ProjectStructureKey,\n SchemaVersionCurrent,\n SchemaVersionKey,\n SchemaVersionV2,\n SchemaVersionV3,\n} from \"../model/project_model\";\nimport { BlockFrontendStateKeyPrefixV1, SchemaVersionV1 } from \"../model/project_model_v1\";\nimport { field, isNullResourceId } from \"@milaboratories/pl-client\";\nimport { cachedDeserialize } from \"@milaboratories/ts-helpers\";\nimport { allBlocks } from \"../model/project_model_util\";\n\n/**\n * Migrates the project to the latest schema version.\n *\n * @param pl - The client to use.\n * @param rid - The resource id of the project.\n */\nexport async function applyProjectMigrations(pl: PlClient, rid: ResourceId) {\n await pl.withWriteTx(\"ProjectMigration\", async (tx) => {\n let schemaVersion = await tx.getKValueJson<string>(rid, SchemaVersionKey);\n if (schemaVersion === SchemaVersionCurrent) return;\n\n // Apply migrations in sequence\n if (schemaVersion === SchemaVersionV1) {\n await migrateV1ToV2(tx, rid);\n schemaVersion = SchemaVersionV2;\n }\n\n if (schemaVersion === SchemaVersionV2) {\n await migrateV2ToV3(tx, rid);\n schemaVersion = SchemaVersionV3;\n }\n\n if (schemaVersion === SchemaVersionV3) {\n // V3 → V4: production context chain + staging re-render.\n // The actual chain building and staging reset happens in fixProblemsAndMigrate()\n // (called from ProjectMutator.load). This migration step just bumps the schema\n // to prevent older clients from operating on the new project structure.\n schemaVersion = SchemaVersionCurrent;\n }\n\n if (schemaVersion !== SchemaVersionCurrent) {\n throw new UiError(\n `This project was created with a newer version of Platforma. Please update to the latest version to open it.`,\n );\n }\n\n tx.setKValue(rid, SchemaVersionKey, JSON.stringify(SchemaVersionCurrent));\n await tx.commit();\n });\n}\n\n/**\n * Migrates the project from schema version 1 to 2.\n *\n * Summary of changes:\n * - uiState is now stored in a field instead of a KV\n *\n * @param tx - The transaction to use.\n * @param rid - The resource id of the project.\n */\nasync function migrateV1ToV2(tx: PlTransaction, rid: ResourceId) {\n const [structure, allKV] = await Promise.all([\n tx.getKValueJson<ProjectStructure>(rid, ProjectStructureKey),\n tx.listKeyValues(rid),\n ]);\n const kvMap = new Map<string, Uint8Array>(allKV.map((kv) => [kv.key, kv.value]));\n for (const block of allBlocks(structure)) {\n const kvKey = BlockFrontendStateKeyPrefixV1 + block.id;\n const uiState = kvMap.get(kvKey);\n const valueJson = uiState ? cachedDeserialize(uiState) : {};\n const uiStateR = tx.createJsonGzValue(valueJson);\n const uiStateF = field(rid, projectFieldName(block.id, \"blockStorage\"));\n tx.createField(uiStateF, \"Dynamic\", uiStateR);\n tx.deleteKValue(rid, kvKey);\n }\n}\n\n/**\n * Migrates the project from schema version 2 to 3.\n *\n * Summary of changes:\n * - Introduces unified 'blockStorage' field containing { args, uiState }\n * - Adds 'currentPrerunArgs' field for staging/prerun rendering\n * - For each block:\n * 1. Read existing 'blockStorage' field (contains uiState in v2)\n * 2. Read existing 'currentArgs' field (contains args)\n * 3. Create unified state = { args: currentArgs, uiState: oldState }\n * 4. Write to new {blockId}-blockStorage field (overwrites)\n * 5. Initialize {blockId}-currentPrerunArgs (same as prodArgs for v1/v2 blocks)\n * - Note: currentArgs and prodArgs fields remain for compatibility layer\n *\n * @param tx - The transaction to use.\n * @param rid - The resource id of the project.\n */\nasync function migrateV2ToV3(tx: PlTransaction, rid: ResourceId) {\n const [structure, fullResourceState] = await Promise.all([\n tx.getKValueJson<ProjectStructure>(rid, ProjectStructureKey),\n tx.getResourceData(rid, true),\n ]);\n\n // Build a map of field name -> resource id for quick lookup\n const fieldMap = new Map<string, ResourceId>();\n for (const f of fullResourceState.fields) {\n if (!isNullResourceId(f.value)) {\n fieldMap.set(f.name, f.value);\n }\n }\n\n for (const block of allBlocks(structure)) {\n // Read existing field values\n const uiStateFieldName = projectFieldName(block.id, \"uiState\" as ProjectField[\"fieldName\"]);\n const currentArgsFieldName = projectFieldName(block.id, \"currentArgs\");\n\n const uiStateRid = fieldMap.get(uiStateFieldName);\n const currentArgsRid = fieldMap.get(currentArgsFieldName);\n\n // Read field data in parallel where available\n const [uiStateData, currentArgsData] = await Promise.all([\n uiStateRid ? tx.getResourceData(uiStateRid, false) : Promise.resolve(undefined),\n currentArgsRid ? tx.getResourceData(currentArgsRid, false) : Promise.resolve(undefined),\n ]);\n\n // Extract values - in v2, 'blockStorage' contains raw uiState, not wrapped\n const uiState = uiStateData?.data ? cachedDeserialize(uiStateData.data) : {};\n const args = currentArgsData?.data ? cachedDeserialize(currentArgsData.data) : {};\n\n // Create unified state: { args, uiState }\n const unifiedState = {\n args,\n uiState,\n };\n\n const blockStorageFieldName = projectFieldName(block.id, \"blockStorage\");\n\n // Write new unified blockStorage field (overwrite existing)\n const stateR = tx.createJsonGzValue(unifiedState);\n const stateF = field(rid, blockStorageFieldName);\n tx.createField(stateF, \"Dynamic\", stateR);\n\n // Initialize currentPrerunArgs from currentArgs (for legacy blocks, prerunArgs = args)\n if (currentArgsRid) {\n const prerunArgsR = tx.createJsonGzValue(args);\n const prerunArgsF = field(rid, projectFieldName(block.id, \"currentPrerunArgs\"));\n tx.createField(prerunArgsF, \"Dynamic\", prerunArgsR);\n }\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"migration.js","names":[],"sources":["../../src/mutator/migration.ts"],"sourcesContent":["import { UiError } from \"@milaboratories/pl-model-common\";\nimport type { PlClient, PlTransaction, ResourceId } from \"@milaboratories/pl-client\";\nimport type { ProjectField, ProjectStructure } from \"../model/project_model\";\nimport {\n projectFieldName,\n ProjectStructureKey,\n SchemaVersionCurrent,\n SchemaVersionKey,\n SchemaVersionV2,\n SchemaVersionV3,\n} from \"../model/project_model\";\nimport { BlockFrontendStateKeyPrefixV1, SchemaVersionV1 } from \"../model/project_model_v1\";\nimport { field, isNullResourceId } from \"@milaboratories/pl-client\";\nimport { cachedDeserialize } from \"@milaboratories/ts-helpers\";\nimport { allBlocks } from \"../model/project_model_util\";\n\n/**\n * Migrates the project to the latest schema version.\n *\n * @param pl - The client to use.\n * @param rid - The resource id of the project.\n */\nexport async function applyProjectMigrations(pl: PlClient, rid: ResourceId) {\n await pl.withWriteTx(\"ProjectMigration\", async (tx) => {\n let schemaVersion = await tx.getKValueJson<string>(rid, SchemaVersionKey);\n if (schemaVersion === SchemaVersionCurrent) return;\n\n // Apply migrations in sequence\n if (schemaVersion === SchemaVersionV1) {\n await migrateV1ToV2(tx, rid);\n schemaVersion = SchemaVersionV2;\n }\n\n if (schemaVersion === SchemaVersionV2) {\n await migrateV2ToV3(tx, rid);\n schemaVersion = SchemaVersionV3;\n }\n\n if (schemaVersion === SchemaVersionV3) {\n // V3 → V4: production context chain + staging re-render.\n // The actual chain building and staging reset happens in fixProblemsAndMigrate()\n // (called from ProjectMutator.load). This migration step just bumps the schema\n // to prevent older clients from operating on the new project structure.\n schemaVersion = SchemaVersionCurrent;\n }\n\n if (schemaVersion !== SchemaVersionCurrent) {\n throw new UiError(\n `This project was created with a newer version of Platforma. Please update to the latest version to open it.`,\n );\n }\n\n tx.setKValue(rid, SchemaVersionKey, JSON.stringify(SchemaVersionCurrent));\n await tx.commit();\n });\n}\n\n/**\n * Migrates the project from schema version 1 to 2.\n *\n * Summary of changes:\n * - uiState is now stored in a field instead of a KV\n *\n * @param tx - The transaction to use.\n * @param rid - The resource id of the project.\n */\nasync function migrateV1ToV2(tx: PlTransaction, rid: ResourceId) {\n const [structure, allKV] = await Promise.all([\n tx.getKValueJson<ProjectStructure>(rid, ProjectStructureKey),\n tx.listKeyValues(rid),\n ]);\n const kvMap = new Map<string, Uint8Array>(allKV.map((kv) => [kv.key, kv.value]));\n for (const block of allBlocks(structure)) {\n const kvKey = BlockFrontendStateKeyPrefixV1 + block.id;\n const uiState = kvMap.get(kvKey);\n const valueJson = uiState ? cachedDeserialize(uiState) : {};\n const uiStateR = tx.createJsonGzValue(valueJson);\n const uiStateF = field(rid, projectFieldName(block.id, \"blockStorage\"));\n tx.createField(uiStateF, \"Dynamic\", uiStateR);\n tx.deleteKValue(rid, kvKey);\n }\n}\n\n/**\n * Migrates the project from schema version 2 to 3.\n *\n * Summary of changes:\n * - Introduces unified 'blockStorage' field containing { args, uiState }\n * - Adds 'currentPrerunArgs' field for staging/prerun rendering\n * - For each block:\n * 1. Read existing 'blockStorage' field (contains uiState in v2)\n * 2. Read existing 'currentArgs' field (contains args)\n * 3. Create unified state = { args: currentArgs, uiState: oldState }\n * 4. Write to new {blockId}-blockStorage field (overwrites)\n * 5. Initialize {blockId}-currentPrerunArgs (same as prodArgs for v1/v2 blocks)\n * - Note: currentArgs and prodArgs fields remain for compatibility layer\n *\n * @param tx - The transaction to use.\n * @param rid - The resource id of the project.\n */\nasync function migrateV2ToV3(tx: PlTransaction, rid: ResourceId) {\n const [structure, fullResourceState] = await Promise.all([\n tx.getKValueJson<ProjectStructure>(rid, ProjectStructureKey),\n tx.getResourceData(rid, true),\n ]);\n\n // Build a map of field name -> resource id for quick lookup\n const fieldMap = new Map<string, ResourceId>();\n for (const f of fullResourceState.fields) {\n if (!isNullResourceId(f.value)) {\n fieldMap.set(f.name, f.value);\n }\n }\n\n for (const block of allBlocks(structure)) {\n // Read existing field values\n const uiStateFieldName = projectFieldName(block.id, \"uiState\" as ProjectField[\"fieldName\"]);\n const currentArgsFieldName = projectFieldName(block.id, \"currentArgs\");\n\n const uiStateRid = fieldMap.get(uiStateFieldName);\n const currentArgsRid = fieldMap.get(currentArgsFieldName);\n\n // Read field data in parallel where available\n const [uiStateData, currentArgsData] = await Promise.all([\n uiStateRid ? tx.getResourceData(uiStateRid, false) : Promise.resolve(undefined),\n currentArgsRid ? tx.getResourceData(currentArgsRid, false) : Promise.resolve(undefined),\n ]);\n\n // Extract values - in v2, 'blockStorage' contains raw uiState, not wrapped\n const uiState = uiStateData?.data ? cachedDeserialize(uiStateData.data) : {};\n const args = currentArgsData?.data ? cachedDeserialize(currentArgsData.data) : {};\n\n // Create unified state: { args, uiState }\n const unifiedState = {\n args,\n uiState,\n };\n\n const blockStorageFieldName = projectFieldName(block.id, \"blockStorage\");\n\n // Write new unified blockStorage field (overwrite existing)\n const stateR = tx.createJsonGzValue(unifiedState);\n const stateF = field(rid, blockStorageFieldName);\n tx.createField(stateF, \"Dynamic\", stateR);\n\n // Initialize currentPrerunArgs from currentArgs (for legacy blocks, prerunArgs = args)\n if (currentArgsRid) {\n const prerunArgsR = tx.createJsonGzValue(args);\n const prerunArgsF = field(rid, projectFieldName(block.id, \"currentPrerunArgs\"));\n tx.createField(prerunArgsF, \"Dynamic\", prerunArgsR);\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAsBA,eAAsB,uBAAuB,IAAc,KAAiB;AAC1E,OAAM,GAAG,YAAY,oBAAoB,OAAO,OAAO;EACrD,IAAI,gBAAgB,MAAM,GAAG,cAAsB,KAAK,iBAAiB;AACzE,MAAI,kBAAA,IAAwC;AAG5C,MAAI,kBAAA,KAAmC;AACrC,SAAM,cAAc,IAAI,IAAI;AAC5B,mBAAA;;AAGF,MAAI,kBAAA,KAAmC;AACrC,SAAM,cAAc,IAAI,IAAI;AAC5B,mBAAA;;AAGF,MAAI,kBAAA,IAKF,iBAAA;AAGF,MAAI,kBAAA,IACF,OAAM,IAAI,QACR,8GACD;AAGH,KAAG,UAAU,KAAK,kBAAkB,KAAK,UAAA,IAA+B,CAAC;AACzE,QAAM,GAAG,QAAQ;GACjB;;;;;;;;;;;AAYJ,eAAe,cAAc,IAAmB,KAAiB;CAC/D,MAAM,CAAC,WAAW,SAAS,MAAM,QAAQ,IAAI,CAC3C,GAAG,cAAgC,KAAK,oBAAoB,EAC5D,GAAG,cAAc,IAAI,CACtB,CAAC;CACF,MAAM,QAAQ,IAAI,IAAwB,MAAM,KAAK,OAAO,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC,CAAC;AAChF,MAAK,MAAM,SAAS,UAAU,UAAU,EAAE;EACxC,MAAM,QAAQ,gCAAgC,MAAM;EACpD,MAAM,UAAU,MAAM,IAAI,MAAM;EAChC,MAAM,YAAY,UAAU,kBAAkB,QAAQ,GAAG,EAAE;EAC3D,MAAM,WAAW,GAAG,kBAAkB,UAAU;EAChD,MAAM,WAAW,MAAM,KAAK,iBAAiB,MAAM,IAAI,eAAe,CAAC;AACvE,KAAG,YAAY,UAAU,WAAW,SAAS;AAC7C,KAAG,aAAa,KAAK,MAAM;;;;;;;;;;;;;;;;;;;;AAqB/B,eAAe,cAAc,IAAmB,KAAiB;CAC/D,MAAM,CAAC,WAAW,qBAAqB,MAAM,QAAQ,IAAI,CACvD,GAAG,cAAgC,KAAK,oBAAoB,EAC5D,GAAG,gBAAgB,KAAK,KAAK,CAC9B,CAAC;CAGF,MAAM,2BAAW,IAAI,KAAyB;AAC9C,MAAK,MAAM,KAAK,kBAAkB,OAChC,KAAI,CAAC,iBAAiB,EAAE,MAAM,CAC5B,UAAS,IAAI,EAAE,MAAM,EAAE,MAAM;AAIjC,MAAK,MAAM,SAAS,UAAU,UAAU,EAAE;EAExC,MAAM,mBAAmB,iBAAiB,MAAM,IAAI,UAAuC;EAC3F,MAAM,uBAAuB,iBAAiB,MAAM,IAAI,cAAc;EAEtE,MAAM,aAAa,SAAS,IAAI,iBAAiB;EACjD,MAAM,iBAAiB,SAAS,IAAI,qBAAqB;EAGzD,MAAM,CAAC,aAAa,mBAAmB,MAAM,QAAQ,IAAI,CACvD,aAAa,GAAG,gBAAgB,YAAY,MAAM,GAAG,QAAQ,QAAQ,KAAA,EAAU,EAC/E,iBAAiB,GAAG,gBAAgB,gBAAgB,MAAM,GAAG,QAAQ,QAAQ,KAAA,EAAU,CACxF,CAAC;EAGF,MAAM,UAAU,aAAa,OAAO,kBAAkB,YAAY,KAAK,GAAG,EAAE;EAC5E,MAAM,OAAO,iBAAiB,OAAO,kBAAkB,gBAAgB,KAAK,GAAG,EAAE;EAGjF,MAAM,eAAe;GACnB;GACA;GACD;EAED,MAAM,wBAAwB,iBAAiB,MAAM,IAAI,eAAe;EAGxE,MAAM,SAAS,GAAG,kBAAkB,aAAa;EACjD,MAAM,SAAS,MAAM,KAAK,sBAAsB;AAChD,KAAG,YAAY,QAAQ,WAAW,OAAO;AAGzC,MAAI,gBAAgB;GAClB,MAAM,cAAc,GAAG,kBAAkB,KAAK;GAC9C,MAAM,cAAc,MAAM,KAAK,iBAAiB,MAAM,IAAI,oBAAoB,CAAC;AAC/E,MAAG,YAAY,aAAa,WAAW,YAAY"}
|
package/dist/mutator/project.cjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
const require_runtime = require(
|
|
2
|
-
const require_project_model = require(
|
|
3
|
-
const require_render_block = require(
|
|
4
|
-
const require_template_loading = require(
|
|
5
|
-
const require_block_pack = require(
|
|
6
|
-
const require_project_model_util = require(
|
|
7
|
-
const require_context_export = require(
|
|
8
|
-
const require_index = require(
|
|
1
|
+
const require_runtime = require("../_virtual/_rolldown/runtime.cjs");
|
|
2
|
+
const require_project_model = require("../model/project_model.cjs");
|
|
3
|
+
const require_render_block = require("./template/render_block.cjs");
|
|
4
|
+
const require_template_loading = require("./template/template_loading.cjs");
|
|
5
|
+
const require_block_pack = require("./block-pack/block_pack.cjs");
|
|
6
|
+
const require_project_model_util = require("../model/project_model_util.cjs");
|
|
7
|
+
const require_context_export = require("./context_export.cjs");
|
|
8
|
+
const require_index = require("../debug/index.cjs");
|
|
9
9
|
let _platforma_sdk_model = require("@platforma-sdk/model");
|
|
10
10
|
let _milaboratories_pl_model_middle_layer = require("@milaboratories/pl-model-middle-layer");
|
|
11
11
|
let _milaboratories_ts_helpers = require("@milaboratories/ts-helpers");
|
|
@@ -13,7 +13,6 @@ let _milaboratories_pl_client = require("@milaboratories/pl-client");
|
|
|
13
13
|
let denque = require("denque");
|
|
14
14
|
denque = require_runtime.__toESM(denque);
|
|
15
15
|
let node_zlib = require("node:zlib");
|
|
16
|
-
|
|
17
16
|
//#region src/mutator/project.ts
|
|
18
17
|
function cached(modIdCb, valueCb) {
|
|
19
18
|
let initialized = false;
|
|
@@ -920,7 +919,7 @@ var ProjectMutator = class ProjectMutator {
|
|
|
920
919
|
structureP,
|
|
921
920
|
renderingStateP
|
|
922
921
|
]);
|
|
923
|
-
if (schema !==
|
|
922
|
+
if (schema !== "4") if (Number(schema) < 4) throw new _platforma_sdk_model.UiError(`Can't perform this action on this project because it has older schema. Try (re)loading the project to update it.`);
|
|
924
923
|
else throw new _platforma_sdk_model.UiError(`Can't perform this action on this project because it has newer schema. Upgrade your desktop app to the latest version.`);
|
|
925
924
|
const blockPackRequests = [];
|
|
926
925
|
for (const [info, fieldName, state, response] of blockFieldRequests) {
|
|
@@ -970,7 +969,7 @@ async function createProject(tx, meta = require_project_model.InitialBlockMeta)
|
|
|
970
969
|
const prj = tx.createEphemeral(require_project_model.ProjectResourceType);
|
|
971
970
|
tx.lock(prj);
|
|
972
971
|
const ts = String(Date.now());
|
|
973
|
-
tx.setKValue(prj, require_project_model.SchemaVersionKey, JSON.stringify(
|
|
972
|
+
tx.setKValue(prj, require_project_model.SchemaVersionKey, JSON.stringify("4"));
|
|
974
973
|
tx.setKValue(prj, require_project_model.ProjectCreatedTimestamp, ts);
|
|
975
974
|
tx.setKValue(prj, require_project_model.ProjectLastModifiedTimestamp, ts);
|
|
976
975
|
tx.setKValue(prj, require_project_model.ProjectMetaKey, JSON.stringify(meta));
|
|
@@ -999,7 +998,7 @@ async function duplicateProject(tx, sourceRid, options) {
|
|
|
999
998
|
const sourceKVs = await sourceKVsP;
|
|
1000
999
|
const schemaKV = sourceKVs.find((kv) => kv.key === require_project_model.SchemaVersionKey);
|
|
1001
1000
|
const schema = schemaKV ? JSON.parse(schemaKV.value) : void 0;
|
|
1002
|
-
if (schema !==
|
|
1001
|
+
if (schema !== "4" && schema !== "3") throw new _platforma_sdk_model.UiError(`Cannot duplicate project with schema version ${schema ?? "unknown"}. Only schema versions 3 and 4 are supported. Try opening the project first to trigger migration.`);
|
|
1003
1002
|
const newPrj = tx.createEphemeral(require_project_model.ProjectResourceType);
|
|
1004
1003
|
tx.lock(newPrj);
|
|
1005
1004
|
const ts = String(Date.now());
|
|
@@ -1012,7 +1011,7 @@ async function duplicateProject(tx, sourceRid, options) {
|
|
|
1012
1011
|
for (const { key, value } of sourceKVs) {
|
|
1013
1012
|
if (kvSkipKeys.has(key)) continue;
|
|
1014
1013
|
if (kvSkipPrefixes.some((prefix) => key.startsWith(prefix))) continue;
|
|
1015
|
-
if (key ===
|
|
1014
|
+
if (key === "ProjectMeta" && options?.label !== void 0) {
|
|
1016
1015
|
const meta = JSON.parse(value);
|
|
1017
1016
|
tx.setKValue(newPrj, key, JSON.stringify({
|
|
1018
1017
|
...meta,
|
|
@@ -1050,10 +1049,10 @@ async function withProjectAuthored(projectHelper, txOrPl, rid, author, cb, ops =
|
|
|
1050
1049
|
return result;
|
|
1051
1050
|
}
|
|
1052
1051
|
}
|
|
1053
|
-
|
|
1054
1052
|
//#endregion
|
|
1055
1053
|
exports.createProject = createProject;
|
|
1056
1054
|
exports.duplicateProject = duplicateProject;
|
|
1057
1055
|
exports.withProject = withProject;
|
|
1058
1056
|
exports.withProjectAuthored = withProjectAuthored;
|
|
1057
|
+
|
|
1059
1058
|
//# sourceMappingURL=project.cjs.map
|