@milaboratories/pl-middle-layer 1.10.48 → 1.11.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 +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +633 -565
- package/dist/index.mjs.map +1 -1
- package/dist/middle_layer/project.d.ts.map +1 -1
- package/package.json +8 -8
- package/src/middle_layer/project.ts +105 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/middle_layer/project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,
|
|
1
|
+
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/middle_layer/project.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@milaboratories/pl-middle-layer",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.11.0",
|
|
4
4
|
"description": "Pl Middle Layer",
|
|
5
5
|
"types": "./dist/index.d.ts",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -28,18 +28,18 @@
|
|
|
28
28
|
"yaml": "^2.5.1",
|
|
29
29
|
"zod": "^3.23.8",
|
|
30
30
|
"@milaboratories/computable": "^2.1.12",
|
|
31
|
-
"@platforma-sdk/block-tools": "^2.3.12",
|
|
32
31
|
"@milaboratories/resolve-helper": "^1.0.1",
|
|
33
|
-
"@
|
|
34
|
-
"@milaboratories/pl-
|
|
32
|
+
"@platforma-sdk/block-tools": "^2.3.12",
|
|
33
|
+
"@milaboratories/pl-client": "^2.4.21",
|
|
34
|
+
"@milaboratories/pl-drivers": "^1.2.31",
|
|
35
35
|
"@milaboratories/pl-model-common": "^1.3.14",
|
|
36
36
|
"@milaboratories/pl-model-middle-layer": "^1.4.4",
|
|
37
|
-
"@milaboratories/pl-tree": "^1.
|
|
37
|
+
"@milaboratories/pl-tree": "^1.4.0",
|
|
38
38
|
"@platforma-sdk/model": "^1.5.40",
|
|
39
39
|
"@milaboratories/ts-helpers": "^1.0.30",
|
|
40
40
|
"@platforma-sdk/workflow-tengo": "1.4.0",
|
|
41
|
-
"@milaboratories/pl-config": "^1.2.
|
|
42
|
-
"@milaboratories/pl-local": "^1.2.
|
|
41
|
+
"@milaboratories/pl-config": "^1.2.3",
|
|
42
|
+
"@milaboratories/pl-local": "^1.2.3"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
45
|
"typescript": "~5.5.4",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"jest": "^29.7.0",
|
|
50
50
|
"@jest/globals": "^29.7.0",
|
|
51
51
|
"ts-jest": "^29.2.5",
|
|
52
|
-
"@milaboratories/platforma-build-configs": "1.0.
|
|
52
|
+
"@milaboratories/platforma-build-configs": "1.0.2"
|
|
53
53
|
},
|
|
54
54
|
"scripts": {
|
|
55
55
|
"type-check": "tsc --noEmit --composite false",
|
|
@@ -2,7 +2,10 @@ import { MiddleLayerEnvironment } from './middle_layer';
|
|
|
2
2
|
import {
|
|
3
3
|
ensureResourceIdNotNull,
|
|
4
4
|
field,
|
|
5
|
+
FieldData,
|
|
5
6
|
isNotFoundError,
|
|
7
|
+
isNotNullResourceId,
|
|
8
|
+
isNullResourceId,
|
|
6
9
|
isTimeoutOrCancelError,
|
|
7
10
|
Pl,
|
|
8
11
|
ResourceId
|
|
@@ -12,7 +15,11 @@ import { projectOverview } from './project_overview';
|
|
|
12
15
|
import { BlockPackSpecAny } from '../model';
|
|
13
16
|
import { randomUUID } from 'node:crypto';
|
|
14
17
|
import { withProject, withProjectAuthored } from '../mutator/project';
|
|
15
|
-
import {
|
|
18
|
+
import {
|
|
19
|
+
ExtendedResourceData,
|
|
20
|
+
PlTreeResourceI,
|
|
21
|
+
SynchronizedTreeState
|
|
22
|
+
} from '@milaboratories/pl-tree';
|
|
16
23
|
import { setTimeout } from 'node:timers/promises';
|
|
17
24
|
import { frontendData } from './frontend_path';
|
|
18
25
|
import { NavigationState } from '@milaboratories/pl-model-common';
|
|
@@ -28,6 +35,7 @@ import {
|
|
|
28
35
|
} from '@milaboratories/pl-model-middle-layer';
|
|
29
36
|
import { activeConfigs } from './active_cfg';
|
|
30
37
|
import { NavigationStates } from './navigation_states';
|
|
38
|
+
import { string } from 'zod';
|
|
31
39
|
|
|
32
40
|
type BlockStateComputables = {
|
|
33
41
|
readonly fullState: Computable<BlockStateInternal>;
|
|
@@ -377,9 +385,104 @@ export class Project {
|
|
|
377
385
|
const projectTree = await SynchronizedTreeState.init(
|
|
378
386
|
env.pl,
|
|
379
387
|
rid,
|
|
380
|
-
|
|
388
|
+
{
|
|
389
|
+
...env.ops.defaultTreeOptions,
|
|
390
|
+
finalPredicate: projectFinalPredicate,
|
|
391
|
+
pruning: projectTreePruning
|
|
392
|
+
},
|
|
381
393
|
env.logger
|
|
382
394
|
);
|
|
383
395
|
return new Project(env, rid, projectTree);
|
|
384
396
|
}
|
|
385
397
|
}
|
|
398
|
+
|
|
399
|
+
function projectTreePruning(r: ExtendedResourceData): FieldData[] {
|
|
400
|
+
// console.log(
|
|
401
|
+
// JSON.stringify(
|
|
402
|
+
// { ...r, kv: [], data: undefined } satisfies ExtendedResourceData,
|
|
403
|
+
// (_, v) => {
|
|
404
|
+
// if (typeof v === 'bigint') return v.toString();
|
|
405
|
+
// return v;
|
|
406
|
+
// }
|
|
407
|
+
// )
|
|
408
|
+
// );
|
|
409
|
+
switch (r.type.name) {
|
|
410
|
+
case 'BlockPackCustom':
|
|
411
|
+
return r.fields.filter((f) => f.name !== 'template');
|
|
412
|
+
case 'UserProject':
|
|
413
|
+
return r.fields.filter((f) => !f.name.startsWith('__serviceTemplate'));
|
|
414
|
+
case 'Blob':
|
|
415
|
+
return [];
|
|
416
|
+
default:
|
|
417
|
+
return r.fields;
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
function readyOrDuplicateOrError(r: Omit<PlTreeResourceI, 'final'>): boolean {
|
|
422
|
+
return (
|
|
423
|
+
r.resourceReady || isNotNullResourceId(r.originalResourceId) || isNotNullResourceId(r.error)
|
|
424
|
+
);
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
function readyAndHasAllOutputsFilled(r: Omit<PlTreeResourceI, 'final'>): boolean {
|
|
428
|
+
if (!readyOrDuplicateOrError(r)) return false;
|
|
429
|
+
if (!r.outputsLocked) return false;
|
|
430
|
+
for (const [, f] of r.fields)
|
|
431
|
+
if (isNullResourceId(f.error) && isNullResourceId(f.value)) return false;
|
|
432
|
+
return true;
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
// solaly for logging
|
|
436
|
+
const unknownResourceTypeNames = new Set<string>();
|
|
437
|
+
|
|
438
|
+
function projectFinalPredicate(r: Omit<PlTreeResourceI, 'final'>): boolean {
|
|
439
|
+
switch (r.type.name) {
|
|
440
|
+
case 'StdMap':
|
|
441
|
+
case 'std/map':
|
|
442
|
+
case 'EphStdMap':
|
|
443
|
+
case 'PFrame':
|
|
444
|
+
case 'BContext':
|
|
445
|
+
case 'BlockPackCustom':
|
|
446
|
+
case 'BinaryMap':
|
|
447
|
+
case 'BinaryValue':
|
|
448
|
+
case 'BlobMap':
|
|
449
|
+
case 'BResolveSingle':
|
|
450
|
+
case 'BResolveSingleNoResult':
|
|
451
|
+
case 'BQueryResult':
|
|
452
|
+
case 'TengoTemplate': // just in case, should not be in the tree because of pruning
|
|
453
|
+
case 'TengoLib': // just in case, should not be in the tree because of pruning
|
|
454
|
+
case 'SoftwareInfo': // just in case, should not be in the tree because of pruning
|
|
455
|
+
case 'Dummy':
|
|
456
|
+
// if (readyOrDuplicateOrError(r)) console.log('NOT_READY: ' + JSON.stringify(r.type));
|
|
457
|
+
return readyOrDuplicateOrError(r);
|
|
458
|
+
case 'json/resourceError':
|
|
459
|
+
return r.type.version === '1';
|
|
460
|
+
case 'json/object':
|
|
461
|
+
case 'json/string':
|
|
462
|
+
case 'json/array':
|
|
463
|
+
case 'json/number':
|
|
464
|
+
case 'BContextEnd':
|
|
465
|
+
case 'Frontend/FromUrl':
|
|
466
|
+
case 'Frontend/FromFolder':
|
|
467
|
+
case 'BObjectSpec':
|
|
468
|
+
return true;
|
|
469
|
+
case 'UserProject':
|
|
470
|
+
return false;
|
|
471
|
+
default:
|
|
472
|
+
if (r.type.name.startsWith('Blob/')) return true;
|
|
473
|
+
else if (r.type.name.startsWith('BlobUpload/')) {
|
|
474
|
+
return readyAndHasAllOutputsFilled(r);
|
|
475
|
+
} else if (r.type.name.startsWith('PColumnData/')) {
|
|
476
|
+
// if (!readyOrDuplicateOrError(r)) console.log('NOT_READY: ' + JSON.stringify(r.type));
|
|
477
|
+
return readyOrDuplicateOrError(r);
|
|
478
|
+
} else {
|
|
479
|
+
// Unknonw resource type detected
|
|
480
|
+
// Set used to log this message only once
|
|
481
|
+
if (!unknownResourceTypeNames.has(r.type.name)) {
|
|
482
|
+
console.log('UNKNOWN RESOURCE TYPE: ' + r.type.name);
|
|
483
|
+
unknownResourceTypeNames.add(r.type.name);
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
return false;
|
|
488
|
+
}
|