@milaboratories/pl-middle-layer 1.37.76 → 1.37.77

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.
@@ -19,11 +19,13 @@ export interface InternalPFrameDriver extends SdkPFrameDriver {
19
19
  /** Create a new PFrame */
20
20
  createPFrame(def: PFrameDef<PlTreeNodeAccessor | PColumnValues | DataInfo<PlTreeNodeAccessor>>, ctx: ComputableCtx): PFrameHandle;
21
21
  /** Create a new PTable */
22
- createPTable(def: PTableDef<PColumn<PlTreeNodeAccessor | PColumnValues | DataInfo<PlTreeNodeAccessor>>>, ctx: ComputableCtx, signal?: AbortSignal): PTableHandle;
22
+ createPTable(def: PTableDef<PColumn<PlTreeNodeAccessor | PColumnValues | DataInfo<PlTreeNodeAccessor>>>, ctx: ComputableCtx): PTableHandle;
23
23
  /** Calculates data for the table and returns complete data representation of it */
24
24
  calculateTableData(handle: PFrameHandle, request: CalculateTableDataRequest<PObjectId>, range: TableRange | undefined, signal?: AbortSignal): Promise<CalculateTableDataResponse>;
25
25
  /** Calculate set of unique values for a specific axis for the filtered set of records */
26
26
  getUniqueValues(handle: PFrameHandle, request: UniqueValuesRequest, signal?: AbortSignal): Promise<UniqueValuesResponse>;
27
+ /** Unified table shape */
28
+ getShape(handle: PTableHandle, signal?: AbortSignal): Promise<PTableShape>;
27
29
  /**
28
30
  * Retrieve the data from the table. To retrieve only data required, it can be
29
31
  * sliced both horizontally ({@link columnIndices}) and vertically
@@ -40,20 +42,20 @@ export declare class PFrameDriver implements InternalPFrameDriver {
40
42
  private readonly spillPath;
41
43
  private readonly pFrames;
42
44
  private readonly pTables;
43
- private readonly concurrencyLimiter;
44
- private readonly getDataLimiter;
45
+ private readonly frameConcurrencyLimiter;
46
+ private readonly tableConcurrencyLimiter;
45
47
  pprofDump(): Promise<Uint8Array>;
46
48
  static init(blobDriver: DownloadDriver, logger: MiLogger, spillPath: string): Promise<PFrameDriver>;
47
49
  private constructor();
48
50
  createPFrame(def: PFrameDef<PlTreeNodeAccessor | PColumnValues | DataInfo<PlTreeNodeAccessor>>, ctx: ComputableCtx): PFrameHandle;
49
- createPTable(def: PTableDef<PColumn<PlTreeNodeAccessor | PColumnValues | DataInfo<PlTreeNodeAccessor>>>, ctx: ComputableCtx, signal?: AbortSignal): PTableHandle;
51
+ createPTable(def: PTableDef<PColumn<PlTreeNodeAccessor | PColumnValues | DataInfo<PlTreeNodeAccessor>>>, ctx: ComputableCtx): PTableHandle;
50
52
  findColumns(handle: PFrameHandle, request: FindColumnsRequest): Promise<FindColumnsResponse>;
51
53
  getColumnSpec(handle: PFrameHandle, columnId: PObjectId): Promise<PColumnSpec>;
52
54
  listColumns(handle: PFrameHandle): Promise<PColumnIdAndSpec[]>;
53
55
  calculateTableData(handle: PFrameHandle, request: CalculateTableDataRequest<PObjectId>, range: TableRange | undefined, signal?: AbortSignal): Promise<CalculateTableDataResponse>;
54
56
  getUniqueValues(handle: PFrameHandle, request: UniqueValuesRequest, signal?: AbortSignal): Promise<UniqueValuesResponse>;
55
- getShape(handle: PTableHandle): Promise<PTableShape>;
56
57
  getSpec(handle: PTableHandle): Promise<PTableColumnSpec[]>;
58
+ getShape(handle: PTableHandle, signal?: AbortSignal): Promise<PTableShape>;
57
59
  getData(handle: PTableHandle, columnIndices: number[], range: TableRange | undefined, signal?: AbortSignal): Promise<PTableVector[]>;
58
60
  }
59
61
  //# sourceMappingURL=driver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../src/pool/driver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE,OAAO,KAAK,EAAE,kBAAkB,EAAgB,MAAM,yBAAyB,CAAC;AAEhF,OAAO,KAAK,EAAE,aAAa,EAA2B,MAAM,4BAA4B,CAAC;AACzF,OAAO,KAAK,EACV,yBAAyB,EACzB,0BAA0B,EAC1B,kBAAkB,EAClB,mBAAmB,EAEnB,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,UAAU,EACV,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,IAAI,eAAe,EAC/B,OAAO,EACP,SAAS,EAET,SAAS,EAIT,aAAa,EACb,QAAQ,EAET,MAAM,sBAAsB,CAAC;AAW9B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AA8J3D;;;GAGG;AACH,MAAM,WAAW,oBAAqB,SAAQ,eAAe;IAC3D;;;;;;OAMG;IACH,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;IAEjC,0BAA0B;IAC1B,YAAY,CACV,GAAG,EAAE,SAAS,CAAC,kBAAkB,GAAG,aAAa,GAAG,QAAQ,CAAC,kBAAkB,CAAC,CAAC,EACjF,GAAG,EAAE,aAAa,GACjB,YAAY,CAAC;IAEhB,0BAA0B;IAC1B,YAAY,CACV,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC,kBAAkB,GAAG,aAAa,GAAG,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAC1F,GAAG,EAAE,aAAa,EAClB,MAAM,CAAC,EAAE,WAAW,GACnB,YAAY,CAAC;IAEhB,mFAAmF;IACnF,kBAAkB,CAChB,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,yBAAyB,CAAC,SAAS,CAAC,EAC7C,KAAK,EAAE,UAAU,GAAG,SAAS,EAC7B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAEvC,yFAAyF;IACzF,eAAe,CACb,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,mBAAmB,EAC5B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAEjC;;;;;;;SAOK;IACL,OAAO,CACL,MAAM,EAAE,YAAY,EACpB,aAAa,EAAE,MAAM,EAAE,EACvB,KAAK,EAAE,UAAU,GAAG,SAAS,EAC7B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;CAC5B;AAED,qBAAa,YAAa,YAAW,oBAAoB;IAqBrD,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAtB5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyD;IACjF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoD;IAC5E,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA8B;IACjE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA8B;IAEhD,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC;WAIzB,IAAI,CACtB,UAAU,EAAE,cAAc,EAC1B,MAAM,EAAE,QAAQ,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,YAAY,CAAC;IAMxB,OAAO;IAqFA,YAAY,CACjB,GAAG,EAAE,SAAS,CAAC,kBAAkB,GAAG,aAAa,GAAG,QAAQ,CAAC,kBAAkB,CAAC,CAAC,EACjF,GAAG,EAAE,aAAa,GACjB,YAAY;IAiBR,YAAY,CACjB,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC,kBAAkB,GAAG,aAAa,GAAG,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAC1F,GAAG,EAAE,aAAa,EAClB,MAAM,CAAC,EAAE,WAAW,GACnB,YAAY;IAmBF,WAAW,CACtB,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,mBAAmB,CAAC;IA2BlB,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;IAI9E,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAI9D,kBAAkB,CAC7B,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,yBAAyB,CAAC,SAAS,CAAC,EAC7C,KAAK,EAAE,UAAU,GAAG,SAAS,EAC7B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,0BAA0B,CAAC;IAoCzB,eAAe,CAC1B,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,mBAAmB,EAC5B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,oBAAoB,CAAC;IAoBnB,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;IAKpD,OAAO,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAK1D,OAAO,CAClB,MAAM,EAAE,YAAY,EACpB,aAAa,EAAE,MAAM,EAAE,EACvB,KAAK,EAAE,UAAU,GAAG,SAAS,EAC7B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,EAAE,CAAC;CAQ3B"}
1
+ {"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../src/pool/driver.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.37.76",
3
+ "version": "1.37.77",
4
4
  "description": "Pl Middle Layer",
5
5
  "engines": {
6
6
  "node": ">=20.16.0"
@@ -22,7 +22,7 @@
22
22
  "keywords": [],
23
23
  "license": "UNLICENSED",
24
24
  "dependencies": {
25
- "@milaboratories/pframes-rs-node": "1.0.43",
25
+ "@milaboratories/pframes-rs-node": "1.0.44",
26
26
  "canonicalize": "~2.1.0",
27
27
  "denque": "^2.1.0",
28
28
  "lru-cache": "^11.1.0",
@@ -33,14 +33,14 @@
33
33
  "zod": "~3.23.8",
34
34
  "remeda": "^2.22.6",
35
35
  "@milaboratories/pl-http": "^1.1.3",
36
+ "@milaboratories/computable": "^2.5.0",
36
37
  "@milaboratories/resolve-helper": "^1.1.0",
37
- "@milaboratories/pl-model-middle-layer": "^1.7.38",
38
- "@platforma-sdk/block-tools": "^2.5.56",
39
38
  "@milaboratories/pl-client": "^2.11.0",
40
39
  "@milaboratories/pl-drivers": "^1.5.68",
41
- "@milaboratories/computable": "^2.5.0",
42
- "@milaboratories/pl-model-backend": "^1.1.0",
40
+ "@platforma-sdk/block-tools": "^2.5.57",
43
41
  "@milaboratories/pl-model-common": "^1.15.5",
42
+ "@milaboratories/pl-model-backend": "^1.1.0",
43
+ "@milaboratories/pl-model-middle-layer": "^1.7.39",
44
44
  "@milaboratories/pl-tree": "^1.6.9",
45
45
  "@platforma-sdk/model": "^1.34.10",
46
46
  "@milaboratories/ts-helpers": "^1.4.0",
@@ -84,7 +84,7 @@ function migrateFilters(filters: PTableRecordFilter[]): PTableRecordFilter[] {
84
84
  const bigintReplacer = (_: string, v: unknown) => (typeof v === 'bigint' ? v.toString() : v);
85
85
 
86
86
  class PFrameHolder implements PFrameInternal.PFrameDataSource, Disposable {
87
- public readonly pFrame: PFrameInternal.PFrameV6;
87
+ public readonly pFrame: PFrameInternal.PFrameV7;
88
88
  private readonly abortController = new AbortController();
89
89
  private readonly blobIdToResource = new Map<string, ResourceInfo>();
90
90
  private readonly blobHandleComputables = new Map<
@@ -179,7 +179,7 @@ class PFrameHolder implements PFrameInternal.PFrameDataSource, Disposable {
179
179
 
180
180
  class PTableHolder implements Disposable {
181
181
  constructor(
182
- public readonly table: Promise<PFrameInternal.PTableV4>,
182
+ public readonly pTable: PFrameInternal.PTableV5,
183
183
  private readonly abortController: AbortController,
184
184
  ) {}
185
185
 
@@ -189,15 +189,13 @@ class PTableHolder implements Disposable {
189
189
 
190
190
  [Symbol.dispose](): void {
191
191
  this.abortController.abort();
192
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
193
- this.table.then((table) => table.dispose());
192
+ this.pTable.dispose();
194
193
  }
195
194
  }
196
195
 
197
196
  type FullPTableDef = {
198
197
  pFrameHandle: PFrameHandle;
199
198
  def: PTableDef<PObjectId>;
200
- signal?: AbortSignal;
201
199
  };
202
200
 
203
201
  /**
@@ -224,7 +222,6 @@ export interface InternalPFrameDriver extends SdkPFrameDriver {
224
222
  createPTable(
225
223
  def: PTableDef<PColumn<PlTreeNodeAccessor | PColumnValues | DataInfo<PlTreeNodeAccessor>>>,
226
224
  ctx: ComputableCtx,
227
- signal?: AbortSignal,
228
225
  ): PTableHandle;
229
226
 
230
227
  /** Calculates data for the table and returns complete data representation of it */
@@ -242,6 +239,12 @@ export interface InternalPFrameDriver extends SdkPFrameDriver {
242
239
  signal?: AbortSignal
243
240
  ): Promise<UniqueValuesResponse>;
244
241
 
242
+ /** Unified table shape */
243
+ getShape(
244
+ handle: PTableHandle,
245
+ signal?: AbortSignal,
246
+ ): Promise<PTableShape>;
247
+
245
248
  /**
246
249
  * Retrieve the data from the table. To retrieve only data required, it can be
247
250
  * sliced both horizontally ({@link columnIndices}) and vertically
@@ -261,8 +264,8 @@ export interface InternalPFrameDriver extends SdkPFrameDriver {
261
264
  export class PFrameDriver implements InternalPFrameDriver {
262
265
  private readonly pFrames: RefCountResourcePool<InternalPFrameData, PFrameHolder>;
263
266
  private readonly pTables: RefCountResourcePool<FullPTableDef, PTableHolder>;
264
- private readonly concurrencyLimiter: ConcurrencyLimitingExecutor;
265
- private readonly getDataLimiter: ConcurrencyLimitingExecutor;
267
+ private readonly frameConcurrencyLimiter: ConcurrencyLimitingExecutor;
268
+ private readonly tableConcurrencyLimiter: ConcurrencyLimitingExecutor;
266
269
 
267
270
  public async pprofDump(): Promise<Uint8Array> {
268
271
  return await PFrame.pprofDump();
@@ -284,8 +287,8 @@ export class PFrameDriver implements InternalPFrameDriver {
284
287
  private readonly spillPath: string,
285
288
  ) {
286
289
  const concurrencyLimiter = new ConcurrencyLimitingExecutor(1);
287
- this.concurrencyLimiter = concurrencyLimiter;
288
- this.getDataLimiter = new ConcurrencyLimitingExecutor(1);
290
+ this.frameConcurrencyLimiter = concurrencyLimiter;
291
+ this.tableConcurrencyLimiter = new ConcurrencyLimitingExecutor(1);
289
292
 
290
293
  this.pFrames = new (class extends RefCountResourcePool<InternalPFrameData, PFrameHolder> {
291
294
  constructor(
@@ -329,28 +332,22 @@ export class PFrameDriver implements InternalPFrameDriver {
329
332
 
330
333
  const pFrameHolder = this.pFrames.getByKey(handle);
331
334
  const abortController = new AbortController();
332
- const combinedSignal = AbortSignal.any(
333
- [params.signal, abortController.signal, pFrameHolder.disposeSignal].filter((s) => !!s),
334
- );
335
-
336
- const tablePromise = concurrencyLimiter.run(async () => {
337
- const table = await pFrameHolder.pFrame.createTable({
338
- src: joinEntryToInternal(params.def.src),
339
- filters: migrateFilters(params.def.filters),
340
- }, combinedSignal);
341
-
342
- let sortedTable = table;
343
- if (params.def.sorting.length > 0) {
344
- try {
345
- sortedTable = await table.sort(params.def.sorting, combinedSignal);
346
- } finally {
347
- table.dispose();
348
- }
349
- }
350
335
 
351
- return sortedTable;
336
+ const table = pFrameHolder.pFrame.createTable({
337
+ src: joinEntryToInternal(params.def.src),
338
+ filters: migrateFilters(params.def.filters),
352
339
  });
353
- return new PTableHolder(tablePromise, abortController);
340
+
341
+ let sortedTable = table;
342
+ if (params.def.sorting.length > 0) {
343
+ try {
344
+ sortedTable = table.sort(params.def.sorting);
345
+ } finally {
346
+ table.dispose();
347
+ }
348
+ }
349
+
350
+ return new PTableHolder(sortedTable, abortController);
354
351
  }
355
352
 
356
353
  protected calculateParamsKey(params: FullPTableDef): string {
@@ -386,11 +383,10 @@ export class PFrameDriver implements InternalPFrameDriver {
386
383
  public createPTable(
387
384
  def: PTableDef<PColumn<PlTreeNodeAccessor | PColumnValues | DataInfo<PlTreeNodeAccessor>>>,
388
385
  ctx: ComputableCtx,
389
- signal?: AbortSignal,
390
386
  ): PTableHandle {
391
387
  const pFrameHandle = this.createPFrame(extractAllColumns(def.src), ctx);
392
388
  const defIds = mapPTableDef(def, (c) => c.id);
393
- const res = this.pTables.acquire({ def: defIds, pFrameHandle, signal });
389
+ const res = this.pTables.acquire({ def: defIds, pFrameHandle });
394
390
  if (getDebugFlags().logPFrameRequests)
395
391
  this.logger.info(
396
392
  `Create PTable call (pFrameHandle = ${pFrameHandle}; pTableHandle = ${JSON.stringify(res)}): ${JSON.stringify(
@@ -455,18 +451,18 @@ export class PFrameDriver implements InternalPFrameDriver {
455
451
  `Call calculateTableData, handle = ${handle}, request = ${JSON.stringify(request, bigintReplacer)}`,
456
452
  );
457
453
  }
458
- return await this.concurrencyLimiter.run(async () => {
454
+ return await this.frameConcurrencyLimiter.run(async () => {
459
455
  const pFrameHolder = this.pFrames.getByKey(handle);
460
456
  const combinedSignal = AbortSignal.any([signal, pFrameHolder.disposeSignal].filter((s) => !!s));
461
- const table = await pFrameHolder.pFrame.createTable({
457
+ const table = pFrameHolder.pFrame.createTable({
462
458
  src: joinEntryToInternal(request.src),
463
459
  filters: migrateFilters(request.filters),
464
- }, combinedSignal);
460
+ });
465
461
 
466
462
  let sortedTable = table;
467
463
  if (request.sorting.length > 0) {
468
464
  try {
469
- sortedTable = await table.sort(request.sorting, combinedSignal);
465
+ sortedTable = table.sort(request.sorting);
470
466
  } finally {
471
467
  table.dispose();
472
468
  }
@@ -474,7 +470,10 @@ export class PFrameDriver implements InternalPFrameDriver {
474
470
 
475
471
  try {
476
472
  const spec = sortedTable.getSpec();
477
- const data = await sortedTable.getData([...spec.keys()], range, combinedSignal);
473
+ const data = await sortedTable.getData([...spec.keys()], {
474
+ range,
475
+ signal: combinedSignal,
476
+ });
478
477
  return spec.map((spec, i) => ({
479
478
  spec: spec,
480
479
  data: data[i],
@@ -495,13 +494,15 @@ export class PFrameDriver implements InternalPFrameDriver {
495
494
  `Call getUniqueValues, handle = ${handle}, request = ${JSON.stringify(request, bigintReplacer)}`,
496
495
  );
497
496
  }
498
- return await this.concurrencyLimiter.run(async () => {
497
+ return await this.frameConcurrencyLimiter.run(async () => {
499
498
  const pFrameHolder = this.pFrames.getByKey(handle);
500
499
  const combinedSignal = AbortSignal.any([signal, pFrameHolder.disposeSignal].filter((s) => !!s));
501
500
  return await pFrameHolder.pFrame.getUniqueValues({
502
501
  ...request,
503
502
  filters: migrateFilters(request.filters),
504
- }, combinedSignal);
503
+ }, {
504
+ signal: combinedSignal,
505
+ });
505
506
  });
506
507
  }
507
508
 
@@ -509,14 +510,18 @@ export class PFrameDriver implements InternalPFrameDriver {
509
510
  // PTable istance methods
510
511
  //
511
512
 
512
- public async getShape(handle: PTableHandle): Promise<PTableShape> {
513
- const pTable = await this.pTables.getByKey(handle).table;
514
- return pTable.getShape();
513
+ public getSpec(handle: PTableHandle): Promise<PTableColumnSpec[]> {
514
+ const pTable = this.pTables.getByKey(handle).pTable;
515
+ return Promise.resolve(pTable.getSpec());
515
516
  }
516
517
 
517
- public async getSpec(handle: PTableHandle): Promise<PTableColumnSpec[]> {
518
- const pTable = await this.pTables.getByKey(handle).table;
519
- return pTable.getSpec();
518
+ public async getShape(handle: PTableHandle, signal?: AbortSignal): Promise<PTableShape> {
519
+ return await this.tableConcurrencyLimiter.run(async () => {
520
+ const pTable = this.pTables.getByKey(handle).pTable;
521
+ return await pTable.getShape({
522
+ signal,
523
+ });
524
+ });
520
525
  }
521
526
 
522
527
  public async getData(
@@ -525,11 +530,13 @@ export class PFrameDriver implements InternalPFrameDriver {
525
530
  range: TableRange | undefined,
526
531
  signal?: AbortSignal,
527
532
  ): Promise<PTableVector[]> {
528
- return await this.getDataLimiter.run(async () => {
533
+ return await this.tableConcurrencyLimiter.run(async () => {
529
534
  const pTableHolder = this.pTables.getByKey(handle);
530
- const pTable = await pTableHolder.table;
531
535
  const combinedSignal = AbortSignal.any([signal, pTableHolder.disposeSignal].filter((s) => !!s));
532
- return await pTable.getData(columnIndices, range, combinedSignal);
536
+ return await pTableHolder.pTable.getData(columnIndices, {
537
+ range,
538
+ signal: combinedSignal,
539
+ });
533
540
  });
534
541
  }
535
542
  }