@milaboratories/pl-middle-layer 1.74.18 → 1.75.0
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/middle_layer/block.cjs.map +1 -1
- package/dist/middle_layer/block.js.map +1 -1
- package/dist/middle_layer/build_stamp.cjs +1 -1
- package/dist/middle_layer/build_stamp.js +1 -1
- package/dist/middle_layer/column_links.cjs +106 -0
- package/dist/middle_layer/column_links.cjs.map +1 -0
- package/dist/middle_layer/column_links.js +104 -0
- package/dist/middle_layer/column_links.js.map +1 -0
- package/dist/middle_layer/middle_layer.cjs +1 -0
- package/dist/middle_layer/middle_layer.cjs.map +1 -1
- package/dist/middle_layer/middle_layer.js +1 -0
- package/dist/middle_layer/middle_layer.js.map +1 -1
- package/dist/middle_layer/project.cjs +45 -19
- package/dist/middle_layer/project.cjs.map +1 -1
- package/dist/middle_layer/project.d.ts.map +1 -1
- package/dist/middle_layer/project.js +46 -20
- package/dist/middle_layer/project.js.map +1 -1
- package/dist/middle_layer/project_overview.cjs +56 -24
- package/dist/middle_layer/project_overview.cjs.map +1 -1
- package/dist/middle_layer/project_overview.js +55 -25
- package/dist/middle_layer/project_overview.js.map +1 -1
- package/dist/model/args_derivation.cjs +153 -0
- package/dist/model/args_derivation.cjs.map +1 -0
- package/dist/model/args_derivation.d.ts +21 -0
- package/dist/model/args_derivation.d.ts.map +1 -0
- package/dist/model/args_derivation.js +148 -0
- package/dist/model/args_derivation.js.map +1 -0
- package/dist/model/project_helper.cjs +34 -8
- package/dist/model/project_helper.cjs.map +1 -1
- package/dist/model/project_helper.d.ts +18 -5
- package/dist/model/project_helper.d.ts.map +1 -1
- package/dist/model/project_helper.js +34 -8
- package/dist/model/project_helper.js.map +1 -1
- package/dist/model/project_model.cjs +1 -0
- package/dist/model/project_model.cjs.map +1 -1
- package/dist/model/project_model.d.ts +1 -1
- package/dist/model/project_model.js +1 -0
- package/dist/model/project_model.js.map +1 -1
- package/dist/mutator/project.cjs +54 -8
- package/dist/mutator/project.cjs.map +1 -1
- package/dist/mutator/project.d.ts +1 -0
- package/dist/mutator/project.d.ts.map +1 -1
- package/dist/mutator/project.js +54 -8
- package/dist/mutator/project.js.map +1 -1
- package/package.json +16 -16
- package/src/middle_layer/block.ts +4 -1
- package/src/middle_layer/column_links.test.ts +350 -0
- package/src/middle_layer/column_links.ts +152 -0
- package/src/middle_layer/middle_layer.ts +2 -0
- package/src/middle_layer/project.ts +39 -5
- package/src/middle_layer/project_overview.test.ts +200 -0
- package/src/middle_layer/project_overview.ts +82 -28
- package/src/model/args.test.ts +39 -1
- package/src/model/args_derivation.test.ts +326 -0
- package/src/model/args_derivation.ts +194 -0
- package/src/model/project_helper.ts +55 -25
- package/src/model/project_model.ts +2 -0
- package/src/mutator/project-v3.test.ts +105 -1
- package/src/mutator/project.ts +81 -24
- package/src/test/fake_project.ts +222 -0
package/dist/mutator/project.cjs
CHANGED
|
@@ -6,6 +6,7 @@ const require_project_model_util = require("../model/project_model_util.cjs");
|
|
|
6
6
|
const require_template_serializer = require("../model/template_serializer.cjs");
|
|
7
7
|
const require_block_pack = require("./block-pack/block_pack.cjs");
|
|
8
8
|
const require_context_export = require("./context_export.cjs");
|
|
9
|
+
const require_args_derivation = require("../model/args_derivation.cjs");
|
|
9
10
|
const require_index = require("../debug/index.cjs");
|
|
10
11
|
let _platforma_sdk_model = require("@platforma-sdk/model");
|
|
11
12
|
let _milaboratories_pl_model_middle_layer = require("@milaboratories/pl-model-middle-layer");
|
|
@@ -117,6 +118,18 @@ var BlockInfo = class {
|
|
|
117
118
|
get currentPrerunArgs() {
|
|
118
119
|
return this.currentPrerunArgsC();
|
|
119
120
|
}
|
|
121
|
+
argsErrorsC = cached(() => `${this.fields.inputsValid?.modCount}:${this.fields.currentArgs?.modCount}`, () => require_args_derivation.argsErrorsOfBlock({
|
|
122
|
+
modelAPIVersion: this.config.modelAPIVersion,
|
|
123
|
+
inputsValid: this.fields.inputsValid,
|
|
124
|
+
currentArgs: this.currentArgs
|
|
125
|
+
}));
|
|
126
|
+
/**
|
|
127
|
+
* The errors the block's `argsIssues()` found in its current args. A block whose model API
|
|
128
|
+
* version has no args issues, or that has no current args, has none.
|
|
129
|
+
*/
|
|
130
|
+
get argsErrors() {
|
|
131
|
+
return this.argsErrorsC();
|
|
132
|
+
}
|
|
120
133
|
get stagingRendered() {
|
|
121
134
|
return this.fields.stagingCtx !== void 0;
|
|
122
135
|
}
|
|
@@ -400,6 +413,26 @@ var ProjectMutator = class ProjectMutator {
|
|
|
400
413
|
}
|
|
401
414
|
return deleted;
|
|
402
415
|
}
|
|
416
|
+
/**
|
|
417
|
+
* Brings the block's `inputsValid` field in line with what its args derivation found: the run
|
|
418
|
+
* errors of its args, none when it may run with them, and no field when it has no args.
|
|
419
|
+
*/
|
|
420
|
+
setArgsErrors(blockId, derivedArgs) {
|
|
421
|
+
this.applyArgsErrorsChange(blockId, require_args_derivation.argsErrorsFieldChange(this.getBlockInfo(blockId).fields.inputsValid, derivedArgs));
|
|
422
|
+
}
|
|
423
|
+
applyArgsErrorsChange(blockId, change) {
|
|
424
|
+
switch (change.type) {
|
|
425
|
+
case "keep": return;
|
|
426
|
+
case "delete":
|
|
427
|
+
this.deleteBlockFields(blockId, "inputsValid");
|
|
428
|
+
return;
|
|
429
|
+
case "write": {
|
|
430
|
+
const ref = this.tx.createValue(_milaboratories_pl_client.Pl.JsonObject, change.data);
|
|
431
|
+
this.setBlockField(blockId, "inputsValid", ref, "Ready", change.data);
|
|
432
|
+
return;
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
}
|
|
403
436
|
updateLastModified() {
|
|
404
437
|
this.lastModified = Date.now();
|
|
405
438
|
this.lastModifiedChanged = true;
|
|
@@ -489,9 +522,11 @@ var ProjectMutator = class ProjectMutator {
|
|
|
489
522
|
const prerunArgs = this.projectHelper.derivePrerunArgsFromStorage(blockConfig, initialStorageJson);
|
|
490
523
|
if (prerunArgs !== void 0) this.setBlockFieldObj(blockId, "currentPrerunArgs", this.createJsonFieldValue(prerunArgs));
|
|
491
524
|
else this.deleteBlockFields(blockId, "currentPrerunArgs");
|
|
492
|
-
const
|
|
493
|
-
|
|
525
|
+
const derivedArgs = this.projectHelper.deriveArgsFromStorage(blockConfig, initialStorageJson);
|
|
526
|
+
const args = require_args_derivation.derivedArgsValue(derivedArgs);
|
|
527
|
+
if (args !== void 0) this.setBlockFieldObj(blockId, "currentArgs", this.createJsonFieldValue(args));
|
|
494
528
|
else this.deleteBlockFields(blockId, "currentArgs");
|
|
529
|
+
this.setArgsErrors(blockId, derivedArgs);
|
|
495
530
|
}
|
|
496
531
|
/** Optimally sets inputs for multiple blocks in one go */
|
|
497
532
|
setStates(requests) {
|
|
@@ -510,8 +545,9 @@ var ProjectMutator = class ProjectMutator {
|
|
|
510
545
|
const updatedStorageJson = this.projectHelper.applyStorageUpdateInVM(blockConfig, currentStorageJson, req.payload);
|
|
511
546
|
this.setBlockFieldObj(req.blockId, "blockStorage", this.createGzJsonFieldValueFromContent(updatedStorageJson));
|
|
512
547
|
prerunArgs = this.projectHelper.derivePrerunArgsFromStorage(blockConfig, updatedStorageJson);
|
|
513
|
-
const
|
|
514
|
-
args =
|
|
548
|
+
const derivedArgs = this.projectHelper.deriveArgsFromStorage(blockConfig, updatedStorageJson);
|
|
549
|
+
args = require_args_derivation.derivedArgsValue(derivedArgs);
|
|
550
|
+
this.setArgsErrors(req.blockId, derivedArgs);
|
|
515
551
|
} else {
|
|
516
552
|
this.setBlockFieldObj(req.blockId, "blockStorage", this.createGzJsonFieldValue(req.state));
|
|
517
553
|
if (req.state !== null && typeof req.state === "object" && "args" in req.state) args = req.state.args;
|
|
@@ -626,6 +662,11 @@ var ProjectMutator = class ProjectMutator {
|
|
|
626
662
|
this.resetProduction(blockId);
|
|
627
663
|
const info = this.getBlockInfo(blockId);
|
|
628
664
|
if (info.fields.currentArgs === void 0) throw new Error(`Can't render production for block ${blockId}: currentArgs not set`);
|
|
665
|
+
const argsErrors = info.argsErrors;
|
|
666
|
+
if (argsErrors.length > 0) {
|
|
667
|
+
const messages = argsErrors.map(({ message }) => message).join("; ");
|
|
668
|
+
throw new Error(`Can't render production for block ${blockId}: ${messages}`);
|
|
669
|
+
}
|
|
629
670
|
const ctx = this.createProdCtx(this.getPendingProductionGraph().nodes.get(blockId).upstream);
|
|
630
671
|
if (this.getBlock(blockId).renderingMode === "Light") throw new Error("Can't render production for light block.");
|
|
631
672
|
const tpl = info.getTemplate(this.tx);
|
|
@@ -654,8 +695,9 @@ var ProjectMutator = class ProjectMutator {
|
|
|
654
695
|
if (spec.storageMode === "fromModel") {
|
|
655
696
|
storageToWrite = spec.initialStorage ?? this.projectHelper.getInitialStorageInVM(blockConfig);
|
|
656
697
|
prerunArgs = this.projectHelper.derivePrerunArgsFromStorage(blockConfig, storageToWrite);
|
|
657
|
-
const
|
|
658
|
-
args =
|
|
698
|
+
const derivedArgs = this.projectHelper.deriveArgsFromStorage(blockConfig, storageToWrite);
|
|
699
|
+
args = require_args_derivation.derivedArgsValue(derivedArgs);
|
|
700
|
+
this.setArgsErrors(blockId, derivedArgs);
|
|
659
701
|
} else if (spec.storageMode === "legacy") {
|
|
660
702
|
args = JSON.parse(spec.legacyState).args;
|
|
661
703
|
if (args === void 0) throw new Error("args is undefined in legacyState");
|
|
@@ -810,9 +852,11 @@ var ProjectMutator = class ProjectMutator {
|
|
|
810
852
|
const prerunArgs = this.projectHelper.derivePrerunArgsFromStorage(newConfig, storageJson);
|
|
811
853
|
if (prerunArgs !== void 0) this.setBlockFieldObj(blockId, "currentPrerunArgs", this.createJsonFieldValue(prerunArgs));
|
|
812
854
|
else this.deleteBlockFields(blockId, "currentPrerunArgs");
|
|
813
|
-
const
|
|
814
|
-
|
|
855
|
+
const derivedArgs = this.projectHelper.deriveArgsFromStorage(newConfig, storageJson);
|
|
856
|
+
const args = require_args_derivation.derivedArgsValue(derivedArgs);
|
|
857
|
+
if (args !== void 0) this.setBlockFieldObj(blockId, "currentArgs", this.createJsonFieldValue(args));
|
|
815
858
|
else this.deleteBlockFields(blockId, "currentArgs");
|
|
859
|
+
this.setArgsErrors(blockId, derivedArgs);
|
|
816
860
|
};
|
|
817
861
|
if (newClearState !== void 0) {
|
|
818
862
|
if (newConfig.modelAPIVersion === _platforma_sdk_model.BLOCK_STORAGE_FACADE_VERSION) {
|
|
@@ -821,6 +865,7 @@ var ProjectMutator = class ProjectMutator {
|
|
|
821
865
|
this.updateLastModified();
|
|
822
866
|
} else {
|
|
823
867
|
persistBlockPack();
|
|
868
|
+
this.deleteBlockFields(blockId, "inputsValid");
|
|
824
869
|
this.setStates([{
|
|
825
870
|
modelAPIVersion: 1,
|
|
826
871
|
blockId,
|
|
@@ -836,6 +881,7 @@ var ProjectMutator = class ProjectMutator {
|
|
|
836
881
|
applyStorageAndDeriveArgs(migrationResult.newStorageJson);
|
|
837
882
|
} else {
|
|
838
883
|
persistBlockPack();
|
|
884
|
+
this.deleteBlockFields(blockId, "inputsValid");
|
|
839
885
|
if (info.fields.currentArgs !== void 0) this.setBlockFieldObj(blockId, "currentPrerunArgs", info.fields.currentArgs);
|
|
840
886
|
}
|
|
841
887
|
this.blocksWithChangedInputs.add(blockId);
|