@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.
@@ -1 +1 @@
1
- {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/middle_layer/project.ts"],"names":[],"mappings":"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"}
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,EASL,UAAU,EACX,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAkB,MAAM,4BAA4B,CAAC;AAEjG,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAG5C,OAAO,EAGL,qBAAqB,EACtB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAIjD,OAAO,EACL,eAAe,EACf,YAAY,EACZ,kBAAkB,EACnB,MAAM,uCAAuC,CAAC;AAS/C,iFAAiF;AACjF,qBAAa,OAAO;IAkBhB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAEpB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAnB9B,gCAAgC;IAChC,SAAgB,GAAG,EAAE,UAAU,CAAC;IAEhC,6EAA6E;IAC7E,SAAgB,QAAQ,EAAE,uBAAuB,CAAC,eAAe,CAAC,CAAC;IAEnE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA0B;IAC3D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA4C;IAE7E,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA4D;IAC3F,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAwB;IACtD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAgB;IAElD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAyB;IACzD,OAAO,CAAC,SAAS,CAAS;gBAGP,GAAG,EAAE,sBAAsB,EAC5C,GAAG,EAAE,UAAU,EACE,WAAW,EAAE,qBAAqB;YAYvC,WAAW;IAoBzB;;;;;;;;;;SAUK;IACQ,QAAQ,CACnB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,gBAAgB,EAC/B,MAAM,CAAC,EAAE,MAAM,EACf,MAAM,GAAE,YAAY,GAAG,SAAqB,EAC5C,OAAO,GAAE,MAAqB,GAC7B,OAAO,CAAC,MAAM,CAAC;IAsBlB;;;SAGK;IACQ,eAAe,CAC1B,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,gBAAgB,EAC/B,SAAS,GAAE,OAAe,EAC1B,MAAM,CAAC,EAAE,YAAY,GACpB,OAAO,CAAC,IAAI,CAAC;IAahB,gDAAgD;IACnC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAM/E;;;;;OAKG;IACU,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BlF;;;;SAIK;IACQ,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrD;;;;SAIK;IACQ,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtD,0BAA0B;IACb,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY;IAOhF;;;;;SAKK;IACQ,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,YAAY;IAO3E;;;;;SAKK;IACQ,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,YAAY;IAOhF;;SAEK;IACQ,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvF;;;;;SAKK;IACQ,sBAAsB,CACjC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,OAAO,EAChB,MAAM,CAAC,EAAE,YAAY;IASvB,kEAAkE;IACrD,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB5F,OAAO,CAAC,mBAAmB;IAgC3B;;;SAGK;IACE,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAAC,kBAAkB,CAAC;IAIrE;;;SAGK;IACE,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,uBAAuB,CAAC,YAAY,CAAC;IAc/E,sCAAsC;IACzB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBrC,kBAAkB;IACL,0BAA0B,IAAI,OAAO,CAAC,IAAI,CAAC;WAIpC,IAAI,CAAC,GAAG,EAAE,sBAAsB,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;CAazF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@milaboratories/pl-middle-layer",
3
- "version": "1.10.48",
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
- "@milaboratories/pl-client": "^2.4.20",
34
- "@milaboratories/pl-drivers": "^1.2.30",
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.3.19",
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.2",
42
- "@milaboratories/pl-local": "^1.2.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.1"
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 { SynchronizedTreeState } from '@milaboratories/pl-tree';
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
- env.ops.defaultTreeOptions,
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
+ }