@milaboratories/pl-middle-layer 1.34.22 → 1.35.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/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +938 -931
- package/dist/index.mjs.map +1 -1
- package/dist/middle_layer/block.d.ts.map +1 -1
- package/dist/middle_layer/project_overview.d.ts.map +1 -1
- package/package.json +13 -12
- package/src/middle_layer/block.ts +3 -2
- package/src/middle_layer/project_overview.ts +15 -5
- package/src/mutator/project.ts +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block.d.ts","sourceRoot":"","sources":["../../src/middle_layer/block.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EACV,aAAa,EACb,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,UAAU,EACX,MAAM,4BAA4B,CAAC;AAIpC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAE7D,OAAO,KAAK,EAAgB,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;
|
|
1
|
+
{"version":3,"file":"block.d.ts","sourceRoot":"","sources":["../../src/middle_layer/block.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EACV,aAAa,EACb,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,UAAU,EACX,MAAM,4BAA4B,CAAC;AAIpC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAE7D,OAAO,KAAK,EAAgB,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAK9F,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,kBAAkB,EAAE,SAAS,GAAG,iBAAiB,CAAC,CAAC;AAE1F,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,WAAW,EACzB,OAAO,EAAE,MAAM,GACd,UAAU,CAAC,mBAAmB,CAAC,CAAC;AACnC,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,WAAW,EACzB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,aAAa,GAClB,mBAAmB,CAAC;AAqBvB,wBAAgB,YAAY,CAC1B,YAAY,EAAE,WAAW,EACzB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,sBAAsB,GAC1B,uBAAuB,CAAC,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC,CAiB3E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project_overview.d.ts","sourceRoot":"","sources":["../../src/middle_layer/project_overview.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAgB1E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EAKV,eAAe,EAChB,MAAM,uCAAuC,CAAC;AAK/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"project_overview.d.ts","sourceRoot":"","sources":["../../src/middle_layer/project_overview.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAgB1E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EAKV,eAAe,EAChB,MAAM,uCAAuC,CAAC;AAK/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAkC5D,sEAAsE;AACtE,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,WAAW,EACrB,gBAAgB,EAAE,gBAAgB,EAClC,GAAG,EAAE,sBAAsB,GAC1B,uBAAuB,CAAC,eAAe,CAAC,CA6M1C"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@milaboratories/pl-middle-layer",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.35.0",
|
|
4
4
|
"description": "Pl Middle Layer",
|
|
5
5
|
"engines": {
|
|
6
6
|
"node": ">=20.16.0"
|
|
@@ -31,22 +31,23 @@
|
|
|
31
31
|
"utility-types": "^3.11.0",
|
|
32
32
|
"yaml": "^2.7.0",
|
|
33
33
|
"zod": "~3.23.8",
|
|
34
|
+
"remeda": "^2.21.2",
|
|
34
35
|
"@milaboratories/pl-http": "^1.1.2",
|
|
35
|
-
"@milaboratories/computable": "^2.4.3",
|
|
36
|
-
"@platforma-sdk/block-tools": "^2.5.38",
|
|
37
36
|
"@milaboratories/resolve-helper": "^1.1.0",
|
|
38
|
-
"@milaboratories/
|
|
39
|
-
"@
|
|
37
|
+
"@milaboratories/computable": "^2.4.4",
|
|
38
|
+
"@platforma-sdk/block-tools": "^2.5.39",
|
|
39
|
+
"@milaboratories/pl-client": "^2.8.1",
|
|
40
|
+
"@milaboratories/pl-drivers": "^1.5.47",
|
|
40
41
|
"@milaboratories/pl-model-common": "^1.13.7",
|
|
41
42
|
"@milaboratories/pl-model-middle-layer": "^1.7.25",
|
|
43
|
+
"@milaboratories/pl-tree": "^1.5.6",
|
|
42
44
|
"@milaboratories/pl-model-backend": "^1.1.0",
|
|
43
|
-
"@milaboratories/pl-tree": "^1.5.5",
|
|
44
45
|
"@platforma-sdk/model": "^1.29.17",
|
|
45
|
-
"@milaboratories/ts-helpers": "^1.1.
|
|
46
|
+
"@milaboratories/ts-helpers": "^1.1.6",
|
|
46
47
|
"@platforma-sdk/workflow-tengo": "4.1.2",
|
|
47
|
-
"@milaboratories/pl-
|
|
48
|
-
"@milaboratories/pl-
|
|
49
|
-
"@milaboratories/pl-
|
|
48
|
+
"@milaboratories/pl-errors": "^1.0.7",
|
|
49
|
+
"@milaboratories/pl-config": "^1.4.7",
|
|
50
|
+
"@milaboratories/pl-deployments": "^2.0.1"
|
|
50
51
|
},
|
|
51
52
|
"devDependencies": {
|
|
52
53
|
"semver": "^7.6.3",
|
|
@@ -59,8 +60,8 @@
|
|
|
59
60
|
"jest": "^29.7.0",
|
|
60
61
|
"@jest/globals": "^29.7.0",
|
|
61
62
|
"ts-jest": "^29.2.6",
|
|
62
|
-
"@milaboratories/
|
|
63
|
-
"@milaboratories/
|
|
63
|
+
"@milaboratories/eslint-config": "^1.0.4",
|
|
64
|
+
"@milaboratories/platforma-build-configs": "1.0.3"
|
|
64
65
|
},
|
|
65
66
|
"scripts": {
|
|
66
67
|
"type-check": "tsc --noEmit --composite false",
|
|
@@ -15,6 +15,7 @@ import { getBlockPackInfo } from './util';
|
|
|
15
15
|
import type { AuthorMarker, BlockStateInternal } from '@milaboratories/pl-model-middle-layer';
|
|
16
16
|
import { computableFromCfgOrRF } from './render';
|
|
17
17
|
import { resourceIdToString } from '@milaboratories/pl-client';
|
|
18
|
+
import { deepFreeze } from '@milaboratories/ts-helpers';
|
|
18
19
|
|
|
19
20
|
export type BlockArgsAndUiState = Omit<BlockStateInternal, 'outputs' | 'navigationState'>;
|
|
20
21
|
|
|
@@ -42,8 +43,8 @@ export function blockArgsAndUiState(
|
|
|
42
43
|
const uiState = ctx.uiState(cCtx);
|
|
43
44
|
return {
|
|
44
45
|
author: prj.getKeyValueAsJson<AuthorMarker>(blockArgsAuthorKey(blockId)),
|
|
45
|
-
args: JSON.parse(ctx.args(cCtx)),
|
|
46
|
-
ui: uiState !== undefined ? JSON.parse(uiState) : undefined,
|
|
46
|
+
args: deepFreeze(JSON.parse(ctx.args(cCtx))),
|
|
47
|
+
ui: uiState !== undefined ? deepFreeze(JSON.parse(uiState)) : undefined,
|
|
47
48
|
};
|
|
48
49
|
}
|
|
49
50
|
|
|
@@ -30,9 +30,10 @@ import { computableFromCfgOrRF } from './render';
|
|
|
30
30
|
import type { NavigationStates } from './navigation_states';
|
|
31
31
|
import { getBlockPackInfo } from './util';
|
|
32
32
|
import { resourceIdToString } from '@milaboratories/pl-client';
|
|
33
|
+
import * as R from 'remeda';
|
|
33
34
|
|
|
34
35
|
type BlockInfo = {
|
|
35
|
-
currentArguments: unknown
|
|
36
|
+
currentArguments: Record<string, unknown>;
|
|
36
37
|
prod?: ProdState;
|
|
37
38
|
};
|
|
38
39
|
|
|
@@ -50,9 +51,16 @@ type ProdState = {
|
|
|
50
51
|
stale: boolean;
|
|
51
52
|
|
|
52
53
|
/** Arguments current production was rendered with. */
|
|
53
|
-
arguments: unknown
|
|
54
|
+
arguments: Record<string, unknown>;
|
|
54
55
|
};
|
|
55
56
|
|
|
57
|
+
function argsEquals(a: Record<string, unknown> | undefined, b: Record<string, unknown> | undefined): boolean {
|
|
58
|
+
if (a === b) return true;
|
|
59
|
+
if (a === undefined || b === undefined) return false;
|
|
60
|
+
const clean = R.omitBy<Record<string, unknown>>((_, key) => key.startsWith('__'));
|
|
61
|
+
return R.isDeepEqual(clean(a), clean(b));
|
|
62
|
+
}
|
|
63
|
+
|
|
56
64
|
/** Returns derived general project state form the project resource */
|
|
57
65
|
export function projectOverview(
|
|
58
66
|
prjEntry: PlTreeEntry,
|
|
@@ -79,6 +87,7 @@ export function projectOverview(
|
|
|
79
87
|
assertFieldType: 'Dynamic',
|
|
80
88
|
errorIfFieldNotSet: true,
|
|
81
89
|
});
|
|
90
|
+
const currentArguments = cInputs.getDataAsJson() as Record<string, unknown>;
|
|
82
91
|
|
|
83
92
|
let prod: ProdState | undefined = undefined;
|
|
84
93
|
|
|
@@ -88,6 +97,7 @@ export function projectOverview(
|
|
|
88
97
|
stableIfNotFound: true,
|
|
89
98
|
});
|
|
90
99
|
if (rInputs !== undefined) {
|
|
100
|
+
const prodArgs = rInputs.getDataAsJson() as Record<string, unknown>;
|
|
91
101
|
const result = prj.getField({
|
|
92
102
|
field: projectFieldName(id, 'prodOutput'),
|
|
93
103
|
assertFieldType: 'Dynamic',
|
|
@@ -99,8 +109,8 @@ export function projectOverview(
|
|
|
99
109
|
errorIfFieldNotFound: true,
|
|
100
110
|
});
|
|
101
111
|
prod = {
|
|
102
|
-
arguments:
|
|
103
|
-
stale:
|
|
112
|
+
arguments: prodArgs,
|
|
113
|
+
stale: !argsEquals(currentArguments, prodArgs),
|
|
104
114
|
outputError:
|
|
105
115
|
result.error !== undefined
|
|
106
116
|
|| ctx.error !== undefined
|
|
@@ -117,7 +127,7 @@ export function projectOverview(
|
|
|
117
127
|
};
|
|
118
128
|
}
|
|
119
129
|
|
|
120
|
-
infos.set(id, { currentArguments
|
|
130
|
+
infos.set(id, { currentArguments, prod });
|
|
121
131
|
}
|
|
122
132
|
|
|
123
133
|
const currentGraph = productionGraph(structure, (id) => infos.get(id)!.currentArguments);
|
package/src/mutator/project.ts
CHANGED
|
@@ -61,7 +61,7 @@ import {
|
|
|
61
61
|
import Denque from 'denque';
|
|
62
62
|
import { exportContext, getPreparedExportTemplateEnvelope } from './context_export';
|
|
63
63
|
import { loadTemplate } from './template/template_loading';
|
|
64
|
-
|
|
64
|
+
import { deepFreeze } from '@milaboratories/ts-helpers';
|
|
65
65
|
type FieldStatus = 'NotReady' | 'Ready' | 'Error';
|
|
66
66
|
|
|
67
67
|
interface BlockFieldState {
|
|
@@ -133,7 +133,7 @@ class BlockInfo {
|
|
|
133
133
|
|
|
134
134
|
private readonly currentInputsC = cached(
|
|
135
135
|
() => this.fields.currentArgs!.modCount,
|
|
136
|
-
() => JSON.parse(Buffer.from(this.fields.currentArgs!.value!).toString()) as unknown,
|
|
136
|
+
() => deepFreeze(JSON.parse(Buffer.from(this.fields.currentArgs!.value!).toString())) as unknown,
|
|
137
137
|
);
|
|
138
138
|
|
|
139
139
|
private readonly actualProductionInputsC = cached(
|
|
@@ -141,7 +141,7 @@ class BlockInfo {
|
|
|
141
141
|
() => {
|
|
142
142
|
const bin = this.fields.prodArgs?.value;
|
|
143
143
|
if (bin === undefined) return undefined;
|
|
144
|
-
return JSON.parse(Buffer.from(bin).toString()) as unknown;
|
|
144
|
+
return deepFreeze(JSON.parse(Buffer.from(bin).toString())) as unknown;
|
|
145
145
|
},
|
|
146
146
|
);
|
|
147
147
|
|