@milaboratories/pf-driver 1.0.39 → 1.0.41

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.
Files changed (66) hide show
  1. package/dist/data_info_helpers.cjs +1 -1
  2. package/dist/data_info_helpers.cjs.map +1 -1
  3. package/dist/data_info_helpers.d.ts +1 -1
  4. package/dist/data_info_helpers.d.ts.map +1 -1
  5. package/dist/data_info_helpers.js +1 -1
  6. package/dist/data_info_helpers.js.map +1 -1
  7. package/dist/driver_decl.d.ts +2 -2
  8. package/dist/driver_decl.d.ts.map +1 -1
  9. package/dist/driver_double.cjs +1 -1
  10. package/dist/driver_double.cjs.map +1 -1
  11. package/dist/driver_double.d.ts +6 -6
  12. package/dist/driver_double.d.ts.map +1 -1
  13. package/dist/driver_double.js +1 -1
  14. package/dist/driver_double.js.map +1 -1
  15. package/dist/driver_impl.cjs +35 -32
  16. package/dist/driver_impl.cjs.map +1 -1
  17. package/dist/driver_impl.d.ts +7 -7
  18. package/dist/driver_impl.d.ts.map +1 -1
  19. package/dist/driver_impl.js +35 -32
  20. package/dist/driver_impl.js.map +1 -1
  21. package/dist/index.d.ts +4 -4
  22. package/dist/pframe_pool.cjs +21 -19
  23. package/dist/pframe_pool.cjs.map +1 -1
  24. package/dist/pframe_pool.d.ts +4 -4
  25. package/dist/pframe_pool.d.ts.map +1 -1
  26. package/dist/pframe_pool.js +21 -19
  27. package/dist/pframe_pool.js.map +1 -1
  28. package/dist/ptable_cache_per_frame.cjs +6 -6
  29. package/dist/ptable_cache_per_frame.cjs.map +1 -1
  30. package/dist/ptable_cache_per_frame.d.ts +4 -4
  31. package/dist/ptable_cache_per_frame.d.ts.map +1 -1
  32. package/dist/ptable_cache_per_frame.js +6 -6
  33. package/dist/ptable_cache_per_frame.js.map +1 -1
  34. package/dist/ptable_cache_plain.cjs +5 -5
  35. package/dist/ptable_cache_plain.cjs.map +1 -1
  36. package/dist/ptable_cache_plain.d.ts +4 -4
  37. package/dist/ptable_cache_plain.d.ts.map +1 -1
  38. package/dist/ptable_cache_plain.js +5 -5
  39. package/dist/ptable_cache_plain.js.map +1 -1
  40. package/dist/ptable_def_pool.cjs +2 -2
  41. package/dist/ptable_def_pool.cjs.map +1 -1
  42. package/dist/ptable_def_pool.d.ts +4 -4
  43. package/dist/ptable_def_pool.js +2 -2
  44. package/dist/ptable_def_pool.js.map +1 -1
  45. package/dist/ptable_pool.cjs +30 -26
  46. package/dist/ptable_pool.cjs.map +1 -1
  47. package/dist/ptable_pool.d.ts +6 -6
  48. package/dist/ptable_pool.d.ts.map +1 -1
  49. package/dist/ptable_pool.js +30 -26
  50. package/dist/ptable_pool.js.map +1 -1
  51. package/dist/ptable_shared.cjs.map +1 -1
  52. package/dist/ptable_shared.d.ts +1 -1
  53. package/dist/ptable_shared.js.map +1 -1
  54. package/package.json +29 -29
  55. package/src/data_info_helpers.ts +6 -7
  56. package/src/driver_decl.ts +8 -16
  57. package/src/driver_double.test.ts +89 -83
  58. package/src/driver_double.ts +23 -19
  59. package/src/driver_impl.ts +115 -80
  60. package/src/index.ts +4 -4
  61. package/src/pframe_pool.ts +42 -37
  62. package/src/ptable_cache_per_frame.ts +16 -13
  63. package/src/ptable_cache_plain.ts +16 -12
  64. package/src/ptable_def_pool.ts +7 -7
  65. package/src/ptable_pool.ts +62 -45
  66. package/src/ptable_shared.ts +2 -2
@@ -65,7 +65,7 @@ class AbstractPFrameDriver {
65
65
  const sortedDef = sortPTableDef(migratePTableFilters(mapPTableDef(rawDef, (c) => c.id), this.logger));
66
66
  const pTableEntry = this.pTableDefs.acquire({ def: sortedDef, pFrameHandle: pFrameEntry.key });
67
67
  if (logPFrames()) {
68
- this.logger('info', `Create PTable call (pFrameHandle = ${pFrameEntry.key}; pTableHandle = ${pTableEntry.key})`);
68
+ this.logger("info", `Create PTable call (pFrameHandle = ${pFrameEntry.key}; pTableHandle = ${pTableEntry.key})`);
69
69
  }
70
70
  const unref = () => {
71
71
  pTableEntry.unref();
@@ -85,12 +85,14 @@ class AbstractPFrameDriver {
85
85
  const iRequest = {
86
86
  ...request,
87
87
  compatibleWith: request.compatibleWith.length !== 0
88
- ? [{
88
+ ? [
89
+ {
89
90
  axesSpec: [
90
91
  ...new Map(request.compatibleWith.map((item) => [canonicalizeJson(item), item])).values(),
91
92
  ],
92
93
  qualifications: [],
93
- }]
94
+ },
95
+ ]
94
96
  : [],
95
97
  };
96
98
  const { pFramePromise } = this.pFrames.getByKey(handle);
@@ -98,10 +100,11 @@ class AbstractPFrameDriver {
98
100
  const response = await pFrame.findColumns(iRequest);
99
101
  return {
100
102
  hits: response.hits
101
- .filter((h) => // only exactly matching columns
102
- h.mappingVariants.length === 0
103
- || h.mappingVariants.some((v) => v.qualifications.forHit.length === 0
104
- && v.qualifications.forQueries.every((q) => q.length === 0)))
103
+ .filter((h) =>
104
+ // only exactly matching columns
105
+ h.mappingVariants.length === 0 ||
106
+ h.mappingVariants.some((v) => v.qualifications.forHit.length === 0 &&
107
+ v.qualifications.forQueries.every((q) => q.length === 0)))
105
108
  .map((h) => h.hit),
106
109
  };
107
110
  }
@@ -117,7 +120,7 @@ class AbstractPFrameDriver {
117
120
  }
118
121
  async calculateTableData(handle, request, range, signal) {
119
122
  if (logPFrames()) {
120
- this.logger('info', `Call calculateTableData, handle = ${handle}, request = ${JSON.stringify(request, bigintReplacer)}`);
123
+ this.logger("info", `Call calculateTableData, handle = ${handle}, request = ${JSON.stringify(request, bigintReplacer)}`);
121
124
  }
122
125
  const table = this.pTables.acquire({
123
126
  pFrameHandle: handle,
@@ -152,7 +155,7 @@ class AbstractPFrameDriver {
152
155
  }
153
156
  async getUniqueValues(handle, request, signal) {
154
157
  if (logPFrames()) {
155
- this.logger('info', `Call getUniqueValues, handle = ${handle}, request = ${JSON.stringify(request, bigintReplacer)}`);
158
+ this.logger("info", `Call getUniqueValues, handle = ${handle}, request = ${JSON.stringify(request, bigintReplacer)}`);
156
159
  }
157
160
  const { pFramePromise, disposeSignal } = this.pFrames.getByKey(handle);
158
161
  const pFrame = await pFramePromise;
@@ -231,16 +234,16 @@ function sortPTableDef(def) {
231
234
  }
232
235
  const type = lhs.type;
233
236
  switch (type) {
234
- case 'column':
237
+ case "column":
235
238
  return lhs.column < rhs.column ? -1 : 1;
236
- case 'slicedColumn':
237
- case 'artificialColumn':
239
+ case "slicedColumn":
240
+ case "artificialColumn":
238
241
  return lhs.newId < rhs.newId ? -1 : 1;
239
- case 'inlineColumn': {
242
+ case "inlineColumn": {
240
243
  return lhs.column.id < rhs.column.id ? -1 : 1;
241
244
  }
242
- case 'inner':
243
- case 'full': {
245
+ case "inner":
246
+ case "full": {
244
247
  const rhsInner = rhs;
245
248
  if (lhs.entries.length !== rhsInner.entries.length) {
246
249
  return lhs.entries.length - rhsInner.entries.length;
@@ -253,7 +256,7 @@ function sortPTableDef(def) {
253
256
  }
254
257
  return 0;
255
258
  }
256
- case 'outer': {
259
+ case "outer": {
257
260
  const rhsOuter = rhs;
258
261
  const cmp = cmpJoinEntries(lhs.primary, rhsOuter.primary);
259
262
  if (cmp !== 0) {
@@ -276,19 +279,19 @@ function sortPTableDef(def) {
276
279
  }
277
280
  function sortJoinEntry(entry) {
278
281
  switch (entry.type) {
279
- case 'column':
280
- case 'slicedColumn':
281
- case 'inlineColumn':
282
+ case "column":
283
+ case "slicedColumn":
284
+ case "inlineColumn":
282
285
  return entry;
283
- case 'artificialColumn': {
286
+ case "artificialColumn": {
284
287
  const sortedAxesIndices = entry.axesIndices.toSorted((lhs, rhs) => lhs - rhs);
285
288
  return {
286
289
  ...entry,
287
290
  axesIndices: sortedAxesIndices,
288
291
  };
289
292
  }
290
- case 'inner':
291
- case 'full': {
293
+ case "inner":
294
+ case "full": {
292
295
  const sortedEntries = entry.entries.map(sortJoinEntry);
293
296
  sortedEntries.sort(cmpJoinEntries);
294
297
  return {
@@ -296,7 +299,7 @@ function sortPTableDef(def) {
296
299
  entries: sortedEntries,
297
300
  };
298
301
  }
299
- case 'outer': {
302
+ case "outer": {
300
303
  const sortedSecondary = entry.secondary.map(sortJoinEntry);
301
304
  sortedSecondary.sort(cmpJoinEntries);
302
305
  return {
@@ -311,16 +314,16 @@ function sortPTableDef(def) {
311
314
  }
312
315
  function sortFilters(filters) {
313
316
  return filters.toSorted((lhs, rhs) => {
314
- if (lhs.column.type === 'axis' && rhs.column.type === 'axis') {
317
+ if (lhs.column.type === "axis" && rhs.column.type === "axis") {
315
318
  const lhsId = canonicalizeJson(getAxisId(lhs.column.id));
316
319
  const rhsId = canonicalizeJson(getAxisId(rhs.column.id));
317
320
  return lhsId < rhsId ? -1 : 1;
318
321
  }
319
- else if (lhs.column.type === 'column' && rhs.column.type === 'column') {
322
+ else if (lhs.column.type === "column" && rhs.column.type === "column") {
320
323
  return lhs.column.id < rhs.column.id ? -1 : 1;
321
324
  }
322
325
  else {
323
- return lhs.column.type === 'axis' ? -1 : 1;
326
+ return lhs.column.type === "axis" ? -1 : 1;
324
327
  }
325
328
  });
326
329
  }
@@ -335,11 +338,11 @@ function migrateFilters(filters, logger) {
335
338
  const filtersV1 = [];
336
339
  const filtersV2 = [];
337
340
  for (const filter of filters) {
338
- if (filter.type === 'bySingleColumn') {
341
+ if (filter.type === "bySingleColumn") {
339
342
  filtersV1.push(filter);
340
343
  filtersV2.push({
341
344
  ...filter,
342
- type: 'bySingleColumnV2',
345
+ type: "bySingleColumnV2",
343
346
  });
344
347
  }
345
348
  else {
@@ -348,17 +351,17 @@ function migrateFilters(filters, logger) {
348
351
  }
349
352
  if (filtersV1.length > 0) {
350
353
  const filtersV1Json = JSON.stringify(filtersV1);
351
- logger('warn', `type overwritten from 'bySingleColumn' to 'bySingleColumnV2' for filters: ${filtersV1Json}`);
354
+ logger("warn", `type overwritten from 'bySingleColumn' to 'bySingleColumnV2' for filters: ${filtersV1Json}`);
352
355
  }
353
356
  return filtersV2;
354
357
  }
355
358
  function migratePTableFilters(def, logger) {
356
- if (!('partitionFilters' in def)) {
359
+ if (!("partitionFilters" in def)) {
357
360
  // For old blocks assume all axes filters to be partition filters
358
361
  return {
359
362
  ...def,
360
- partitionFilters: migrateFilters(def.filters.filter((f) => f.column.type === 'axis'), logger),
361
- filters: migrateFilters(def.filters.filter((f) => f.column.type === 'column'), logger),
363
+ partitionFilters: migrateFilters(def.filters.filter((f) => f.column.type === "axis"), logger),
364
+ filters: migrateFilters(def.filters.filter((f) => f.column.type === "column"), logger),
362
365
  };
363
366
  }
364
367
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"driver_impl.js","sources":["../src/driver_impl.ts"],"sourcesContent":["import {\n mapPObjectData,\n mapPTableDef,\n extractAllColumns,\n uniqueBy,\n getAxisId,\n canonicalizeJson,\n bigintReplacer,\n ValueType,\n type CalculateTableDataRequest,\n type CalculateTableDataResponse,\n type FindColumnsRequest,\n type FindColumnsResponse,\n type PColumnIdAndSpec,\n type PColumnSpec,\n type PFrameHandle,\n type PObjectId,\n type PTableColumnSpec,\n type PTableHandle,\n type PTableShape,\n type PTableVector,\n type TableRange,\n type UniqueValuesRequest,\n type UniqueValuesResponse,\n type PColumn,\n type PFrameDef,\n type JoinEntry,\n type PTableDef,\n type PTableRecordSingleValueFilterV2,\n type PTableRecordFilter,\n type JsonSerializable,\n} from '@platforma-sdk/model';\nimport type { PFrameInternal } from '@milaboratories/pl-model-middle-layer';\nimport {\n assertNever,\n ConcurrencyLimitingExecutor,\n type PoolEntry,\n} from '@milaboratories/ts-helpers';\nimport { PFrameFactory } from '@milaboratories/pframes-rs-node';\nimport { tmpdir } from 'node:os';\nimport type {\n AbstractInternalPFrameDriver,\n} from './driver_decl';\nimport { logPFrames } from './logging';\nimport {\n PFramePool,\n type LocalBlobProvider as PoolLocalBlobProvider,\n type RemoteBlobProvider as PoolRemoteBlobProvider,\n} from './pframe_pool';\nimport { PTableDefPool } from './ptable_def_pool';\nimport { PTablePool } from './ptable_pool';\nimport {\n PTableCachePerFrame,\n PTableCachePerFrameOpsDefaults,\n type PTableCachePerFrameOps,\n} from './ptable_cache_per_frame';\nimport {\n PTableCachePlain,\n PTableCachePlainOpsDefaults,\n type PTableCachePlainOps,\n} from './ptable_cache_plain';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport interface LocalBlobProvider<TreeEntry extends JsonSerializable>\n extends PoolLocalBlobProvider<TreeEntry> { }\n\nexport interface RemoteBlobProvider<TreeEntry extends JsonSerializable>\n extends PoolRemoteBlobProvider<TreeEntry>, AsyncDisposable {}\n\nexport type AbstractPFrameDriverOps = PTableCachePerFrameOps & PTableCachePlainOps & {\n /** Concurrency limits for `getUniqueValues` and `calculateTableData` requests */\n pFrameConcurrency: number;\n /** Concurrency limits for `getShape` and `getData` requests */\n pTableConcurrency: number;\n};\n\nexport const AbstractPFrameDriverOpsDefaults: AbstractPFrameDriverOps = {\n ...PTableCachePerFrameOpsDefaults,\n ...PTableCachePlainOpsDefaults,\n pFrameConcurrency: 1, // 1 join is executed in parallel and utilize all RAM and CPU cores\n pTableConcurrency: 1, // 1 joined table is read from disk at a time, which matches 1 table the user can view in the UI\n};\n\nexport type DataInfoResolver<PColumnData, TreeEntry extends JsonSerializable> = (\n spec: PColumnSpec,\n data: PColumnData,\n) => PFrameInternal.DataInfo<TreeEntry>;\n\nexport class AbstractPFrameDriver<PColumnData, TreeEntry extends JsonSerializable>\nimplements AbstractInternalPFrameDriver<PColumnData> {\n private readonly logger: PFrameInternal.Logger;\n\n private readonly localBlobProvider: LocalBlobProvider<TreeEntry>;\n private readonly remoteBlobProvider: RemoteBlobProvider<TreeEntry>;\n\n private readonly resolveDataInfo: DataInfoResolver<PColumnData, TreeEntry>;\n\n private readonly pFrames: PFramePool<TreeEntry>;\n private readonly pTableDefs: PTableDefPool;\n private readonly pTables: PTablePool<TreeEntry>;\n\n private readonly pTableCachePerFrame: PTableCachePerFrame;\n private readonly pTableCachePlain: PTableCachePlain;\n\n private readonly frameConcurrencyLimiter: ConcurrencyLimitingExecutor;\n private readonly tableConcurrencyLimiter: ConcurrencyLimitingExecutor;\n\n public async pprofDump(): Promise<Uint8Array> {\n return await PFrameFactory.pprofDump();\n }\n\n public constructor({\n logger = () => {},\n localBlobProvider,\n remoteBlobProvider,\n spillPath = tmpdir(),\n options = AbstractPFrameDriverOpsDefaults,\n resolveDataInfo,\n }: {\n logger?: PFrameInternal.Logger;\n localBlobProvider: LocalBlobProvider<TreeEntry>;\n remoteBlobProvider: RemoteBlobProvider<TreeEntry>;\n spillPath?: string;\n options?: AbstractPFrameDriverOps;\n resolveDataInfo: DataInfoResolver<PColumnData, TreeEntry>;\n }) {\n this.logger = logger;\n\n this.localBlobProvider = localBlobProvider;\n this.remoteBlobProvider = remoteBlobProvider;\n\n this.resolveDataInfo = resolveDataInfo;\n\n this.frameConcurrencyLimiter = new ConcurrencyLimitingExecutor(options.pFrameConcurrency);\n this.tableConcurrencyLimiter = new ConcurrencyLimitingExecutor(options.pTableConcurrency);\n\n this.pFrames = new PFramePool(this.localBlobProvider, this.remoteBlobProvider, this.logger, spillPath);\n this.pTableDefs = new PTableDefPool(this.logger);\n this.pTables = new PTablePool(this.pFrames, this.pTableDefs, this.logger);\n\n this.pTableCachePerFrame = new PTableCachePerFrame(this.logger, options);\n this.pTableCachePlain = new PTableCachePlain(this.logger, options);\n }\n\n async dispose(): Promise<void> {\n return await this.remoteBlobProvider[Symbol.asyncDispose]();\n }\n\n async [Symbol.asyncDispose](): Promise<void> {\n return await this.dispose();\n }\n\n //\n // Internal / Config API Methods\n //\n\n public createPFrame(\n def: PFrameDef<PColumn<PColumnData>>,\n ): PoolEntry<PFrameHandle> {\n const ValueTypes = new Set(Object.values(ValueType));\n\n const supportedColumns = def.filter((column) => ValueTypes.has(column.spec.valueType));\n const uniqueColumns = uniqueBy(supportedColumns, (column) => column.id);\n const columns = uniqueColumns.map((c) => mapPObjectData(c, (d) => this.resolveDataInfo(c.spec, d)));\n\n return this.pFrames.acquire(columns);\n }\n\n public createPTable(\n rawDef: PTableDef<PColumn<PColumnData>>,\n ): PoolEntry<PTableHandle> {\n const pFrameEntry = this.createPFrame(extractAllColumns(rawDef.src));\n const sortedDef = sortPTableDef(migratePTableFilters(mapPTableDef(rawDef, (c) => c.id), this.logger));\n\n const pTableEntry = this.pTableDefs.acquire({ def: sortedDef, pFrameHandle: pFrameEntry.key });\n if (logPFrames()) {\n this.logger('info', `Create PTable call (pFrameHandle = ${pFrameEntry.key}; pTableHandle = ${pTableEntry.key})`);\n }\n\n const unref = () => {\n pTableEntry.unref();\n pFrameEntry.unref();\n };\n return {\n key: pTableEntry.key,\n resource: pTableEntry.resource,\n unref,\n [Symbol.dispose]: unref,\n };\n }\n\n //\n // PFrame instance methods\n //\n\n public async findColumns(\n handle: PFrameHandle,\n request: FindColumnsRequest,\n ): Promise<FindColumnsResponse> {\n const iRequest: PFrameInternal.FindColumnsRequest = {\n ...request,\n compatibleWith:\n request.compatibleWith.length !== 0\n ? [{\n axesSpec: [\n ...new Map(request.compatibleWith.map(\n (item) => [canonicalizeJson(item), item] as const,\n )).values(),\n ],\n qualifications: [],\n }]\n : [],\n };\n\n const { pFramePromise } = this.pFrames.getByKey(handle);\n const pFrame = await pFramePromise;\n\n const response = await pFrame.findColumns(iRequest);\n return {\n hits: response.hits\n .filter((h) => // only exactly matching columns\n h.mappingVariants.length === 0\n || h.mappingVariants.some((v) =>\n v.qualifications.forHit.length === 0\n && v.qualifications.forQueries.every((q) => q.length === 0)))\n .map((h) => h.hit),\n };\n }\n\n public async getColumnSpec(handle: PFrameHandle, columnId: PObjectId): Promise<PColumnSpec | null> {\n const { pFramePromise } = this.pFrames.getByKey(handle);\n const pFrame = await pFramePromise;\n return await pFrame.getColumnSpec(columnId);\n }\n\n public async listColumns(handle: PFrameHandle): Promise<PColumnIdAndSpec[]> {\n const { pFramePromise } = this.pFrames.getByKey(handle);\n const pFrame = await pFramePromise;\n return await pFrame.listColumns();\n }\n\n public async calculateTableData(\n handle: PFrameHandle,\n request: CalculateTableDataRequest<PObjectId>,\n range: TableRange | undefined,\n signal?: AbortSignal,\n ): Promise<CalculateTableDataResponse> {\n if (logPFrames()) {\n this.logger('info',\n `Call calculateTableData, handle = ${handle}, request = ${JSON.stringify(request, bigintReplacer)}`,\n );\n }\n\n const table = this.pTables.acquire({\n pFrameHandle: handle,\n def: sortPTableDef(migratePTableFilters(request, this.logger)),\n });\n const { pTablePromise, disposeSignal } = table.resource;\n const pTable = await pTablePromise;\n\n const combinedSignal = AbortSignal.any([signal, disposeSignal].filter((s) => !!s));\n return await this.frameConcurrencyLimiter.run(async () => {\n try {\n // TODO: throw error when more then 150k rows is requested\n // after pf-plots migration to stream API\n\n const spec = pTable.getSpec();\n const data = await pTable.getData([...spec.keys()], {\n range,\n signal: combinedSignal,\n });\n\n const overallSize = await pTable.getFootprint({\n signal: combinedSignal,\n });\n this.pTableCachePerFrame.cache(table, overallSize);\n\n return spec.map((spec, i) => ({\n spec: spec,\n data: data[i],\n }));\n } catch (err: unknown) {\n table.unref();\n throw err;\n }\n });\n }\n\n public async getUniqueValues(\n handle: PFrameHandle,\n request: UniqueValuesRequest,\n signal?: AbortSignal,\n ): Promise<UniqueValuesResponse> {\n if (logPFrames()) {\n this.logger('info',\n `Call getUniqueValues, handle = ${handle}, request = ${JSON.stringify(request, bigintReplacer)}`,\n );\n }\n\n const { pFramePromise, disposeSignal } = this.pFrames.getByKey(handle);\n const pFrame = await pFramePromise;\n\n const combinedSignal = AbortSignal.any([signal, disposeSignal].filter((s) => !!s));\n return await this.frameConcurrencyLimiter.run(async () => {\n return await pFrame.getUniqueValues({\n ...request,\n filters: migrateFilters(request.filters, this.logger),\n }, {\n signal: combinedSignal,\n });\n });\n }\n\n //\n // PTable instance methods\n //\n\n public async getSpec(handle: PTableHandle): Promise<PTableColumnSpec[]> {\n const { def } = this.pTableDefs.getByKey(handle);\n using table = this.pTables.acquire(def);\n\n const { pTablePromise } = table.resource;\n const pTable = await pTablePromise;\n\n return pTable.getSpec();\n }\n\n public async getShape(handle: PTableHandle, signal?: AbortSignal): Promise<PTableShape> {\n const { def, disposeSignal: defDisposeSignal } = this.pTableDefs.getByKey(handle);\n const table = this.pTables.acquire(def);\n\n const { pTablePromise, disposeSignal } = table.resource;\n const pTable = await pTablePromise;\n\n const combinedSignal = AbortSignal.any([signal, disposeSignal].filter((s) => !!s));\n const { shape, overallSize } = await this.tableConcurrencyLimiter.run(async () => {\n const shape = await pTable.getShape({\n signal: combinedSignal,\n });\n\n const overallSize = await pTable.getFootprint({\n signal: combinedSignal,\n });\n\n return { shape, overallSize };\n });\n\n this.pTableCachePlain.cache(table, overallSize, defDisposeSignal);\n return shape;\n }\n\n public async getData(\n handle: PTableHandle,\n columnIndices: number[],\n range: TableRange | undefined,\n signal?: AbortSignal,\n ): Promise<PTableVector[]> {\n const { def, disposeSignal: defDisposeSignal } = this.pTableDefs.getByKey(handle);\n const table = this.pTables.acquire(def);\n\n const { pTablePromise, disposeSignal } = table.resource;\n const pTable = await pTablePromise;\n\n const combinedSignal = AbortSignal.any([signal, disposeSignal].filter((s) => !!s));\n const { data, overallSize } = await this.tableConcurrencyLimiter.run(async () => {\n const data = await pTable.getData(columnIndices, {\n range,\n signal: combinedSignal,\n });\n\n const overallSize = await pTable.getFootprint({\n signal: combinedSignal,\n });\n\n return { data, overallSize };\n });\n\n this.pTableCachePlain.cache(table, overallSize, defDisposeSignal);\n return data;\n }\n}\n\nfunction sortPTableDef(def: PTableDef<PObjectId>): PTableDef<PObjectId> {\n function cmpJoinEntries(lhs: JoinEntry<PObjectId>, rhs: JoinEntry<PObjectId>): number {\n if (lhs.type !== rhs.type) {\n return lhs.type < rhs.type ? -1 : 1;\n }\n const type = lhs.type;\n switch (type) {\n case 'column':\n return lhs.column < (rhs as typeof lhs).column ? -1 : 1;\n case 'slicedColumn':\n case 'artificialColumn':\n return lhs.newId < (rhs as typeof lhs).newId ? -1 : 1;\n case 'inlineColumn': {\n return lhs.column.id < (rhs as typeof lhs).column.id ? -1 : 1;\n }\n case 'inner':\n case 'full': {\n const rhsInner = rhs as typeof lhs;\n if (lhs.entries.length !== rhsInner.entries.length) {\n return lhs.entries.length - rhsInner.entries.length;\n }\n for (let i = 0; i < lhs.entries.length; i++) {\n const cmp = cmpJoinEntries(lhs.entries[i], rhsInner.entries[i]);\n if (cmp !== 0) {\n return cmp;\n }\n }\n return 0;\n }\n case 'outer': {\n const rhsOuter = rhs as typeof lhs;\n const cmp = cmpJoinEntries(lhs.primary, rhsOuter.primary);\n if (cmp !== 0) {\n return cmp;\n }\n if (lhs.secondary.length !== rhsOuter.secondary.length) {\n return lhs.secondary.length - rhsOuter.secondary.length;\n }\n for (let i = 0; i < lhs.secondary.length; i++) {\n const cmp = cmpJoinEntries(lhs.secondary[i], rhsOuter.secondary[i]);\n if (cmp !== 0) {\n return cmp;\n }\n }\n return 0;\n }\n default:\n assertNever(type);\n }\n }\n function sortJoinEntry(entry: JoinEntry<PObjectId>): JoinEntry<PObjectId> {\n switch (entry.type) {\n case 'column':\n case 'slicedColumn':\n case 'inlineColumn':\n return entry;\n case 'artificialColumn': {\n const sortedAxesIndices = entry.axesIndices.toSorted((lhs, rhs) => lhs - rhs);\n return {\n ...entry,\n axesIndices: sortedAxesIndices,\n };\n }\n case 'inner':\n case 'full': {\n const sortedEntries = entry.entries.map(sortJoinEntry);\n sortedEntries.sort(cmpJoinEntries);\n return {\n ...entry,\n entries: sortedEntries,\n };\n }\n case 'outer': {\n const sortedSecondary = entry.secondary.map(sortJoinEntry);\n sortedSecondary.sort(cmpJoinEntries);\n return {\n ...entry,\n primary: sortJoinEntry(entry.primary),\n secondary: sortedSecondary,\n };\n }\n default:\n assertNever(entry);\n }\n }\n function sortFilters(filters: PTableRecordFilter[]): PTableRecordFilter[] {\n return filters.toSorted((lhs, rhs) => {\n if (lhs.column.type === 'axis' && rhs.column.type === 'axis') {\n const lhsId = canonicalizeJson(getAxisId(lhs.column.id));\n const rhsId = canonicalizeJson(getAxisId(rhs.column.id));\n return lhsId < rhsId ? -1 : 1;\n } else if (lhs.column.type === 'column' && rhs.column.type === 'column') {\n return lhs.column.id < rhs.column.id ? -1 : 1;\n } else {\n return lhs.column.type === 'axis' ? -1 : 1;\n }\n });\n }\n return {\n src: sortJoinEntry(def.src),\n partitionFilters: sortFilters(def.partitionFilters),\n filters: sortFilters(def.filters),\n sorting: def.sorting,\n };\n}\n\nfunction migrateFilters(\n filters: PTableRecordFilter[],\n logger: PFrameInternal.Logger,\n): PTableRecordFilter[] {\n const filtersV1 = [];\n const filtersV2: PTableRecordSingleValueFilterV2[] = [];\n for (const filter of filters) {\n if ((filter.type as unknown) === 'bySingleColumn') {\n filtersV1.push(filter);\n filtersV2.push({\n ...filter,\n type: 'bySingleColumnV2',\n });\n } else {\n filtersV2.push(filter);\n }\n }\n if (filtersV1.length > 0) {\n const filtersV1Json = JSON.stringify(filtersV1);\n logger('warn',\n `type overwritten from 'bySingleColumn' to 'bySingleColumnV2' for filters: ${filtersV1Json}`,\n );\n }\n return filtersV2;\n}\n\nfunction migratePTableFilters<T>(\n def: Omit<PTableDef<T>, 'partitionFilters'> | PTableDef<T>,\n logger: PFrameInternal.Logger,\n): PTableDef<T> {\n if (!('partitionFilters' in def)) {\n // For old blocks assume all axes filters to be partition filters\n return {\n ...def,\n partitionFilters: migrateFilters(def.filters.filter((f) => f.column.type === 'axis'), logger),\n filters: migrateFilters(def.filters.filter((f) => f.column.type === 'column'), logger),\n };\n }\n return {\n ...def,\n partitionFilters: migrateFilters(def.partitionFilters, logger),\n filters: migrateFilters(def.filters, logger),\n };\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"driver_impl.js","sources":["../src/driver_impl.ts"],"sourcesContent":["import {\n mapPObjectData,\n mapPTableDef,\n extractAllColumns,\n uniqueBy,\n getAxisId,\n canonicalizeJson,\n bigintReplacer,\n ValueType,\n type CalculateTableDataRequest,\n type CalculateTableDataResponse,\n type FindColumnsRequest,\n type FindColumnsResponse,\n type PColumnIdAndSpec,\n type PColumnSpec,\n type PFrameHandle,\n type PObjectId,\n type PTableColumnSpec,\n type PTableHandle,\n type PTableShape,\n type PTableVector,\n type TableRange,\n type UniqueValuesRequest,\n type UniqueValuesResponse,\n type PColumn,\n type PFrameDef,\n type JoinEntry,\n type PTableDef,\n type PTableRecordSingleValueFilterV2,\n type PTableRecordFilter,\n type JsonSerializable,\n} from \"@platforma-sdk/model\";\nimport type { PFrameInternal } from \"@milaboratories/pl-model-middle-layer\";\nimport {\n assertNever,\n ConcurrencyLimitingExecutor,\n type PoolEntry,\n} from \"@milaboratories/ts-helpers\";\nimport { PFrameFactory } from \"@milaboratories/pframes-rs-node\";\nimport { tmpdir } from \"node:os\";\nimport type { AbstractInternalPFrameDriver } from \"./driver_decl\";\nimport { logPFrames } from \"./logging\";\nimport {\n PFramePool,\n type LocalBlobProvider as PoolLocalBlobProvider,\n type RemoteBlobProvider as PoolRemoteBlobProvider,\n} from \"./pframe_pool\";\nimport { PTableDefPool } from \"./ptable_def_pool\";\nimport { PTablePool } from \"./ptable_pool\";\nimport {\n PTableCachePerFrame,\n PTableCachePerFrameOpsDefaults,\n type PTableCachePerFrameOps,\n} from \"./ptable_cache_per_frame\";\nimport {\n PTableCachePlain,\n PTableCachePlainOpsDefaults,\n type PTableCachePlainOps,\n} from \"./ptable_cache_plain\";\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport interface LocalBlobProvider<\n TreeEntry extends JsonSerializable,\n> extends PoolLocalBlobProvider<TreeEntry> {}\n\nexport interface RemoteBlobProvider<TreeEntry extends JsonSerializable>\n extends PoolRemoteBlobProvider<TreeEntry>, AsyncDisposable {}\n\nexport type AbstractPFrameDriverOps = PTableCachePerFrameOps &\n PTableCachePlainOps & {\n /** Concurrency limits for `getUniqueValues` and `calculateTableData` requests */\n pFrameConcurrency: number;\n /** Concurrency limits for `getShape` and `getData` requests */\n pTableConcurrency: number;\n };\n\nexport const AbstractPFrameDriverOpsDefaults: AbstractPFrameDriverOps = {\n ...PTableCachePerFrameOpsDefaults,\n ...PTableCachePlainOpsDefaults,\n pFrameConcurrency: 1, // 1 join is executed in parallel and utilize all RAM and CPU cores\n pTableConcurrency: 1, // 1 joined table is read from disk at a time, which matches 1 table the user can view in the UI\n};\n\nexport type DataInfoResolver<PColumnData, TreeEntry extends JsonSerializable> = (\n spec: PColumnSpec,\n data: PColumnData,\n) => PFrameInternal.DataInfo<TreeEntry>;\n\nexport class AbstractPFrameDriver<\n PColumnData,\n TreeEntry extends JsonSerializable,\n> implements AbstractInternalPFrameDriver<PColumnData> {\n private readonly logger: PFrameInternal.Logger;\n\n private readonly localBlobProvider: LocalBlobProvider<TreeEntry>;\n private readonly remoteBlobProvider: RemoteBlobProvider<TreeEntry>;\n\n private readonly resolveDataInfo: DataInfoResolver<PColumnData, TreeEntry>;\n\n private readonly pFrames: PFramePool<TreeEntry>;\n private readonly pTableDefs: PTableDefPool;\n private readonly pTables: PTablePool<TreeEntry>;\n\n private readonly pTableCachePerFrame: PTableCachePerFrame;\n private readonly pTableCachePlain: PTableCachePlain;\n\n private readonly frameConcurrencyLimiter: ConcurrencyLimitingExecutor;\n private readonly tableConcurrencyLimiter: ConcurrencyLimitingExecutor;\n\n public async pprofDump(): Promise<Uint8Array> {\n return await PFrameFactory.pprofDump();\n }\n\n public constructor({\n logger = () => {},\n localBlobProvider,\n remoteBlobProvider,\n spillPath = tmpdir(),\n options = AbstractPFrameDriverOpsDefaults,\n resolveDataInfo,\n }: {\n logger?: PFrameInternal.Logger;\n localBlobProvider: LocalBlobProvider<TreeEntry>;\n remoteBlobProvider: RemoteBlobProvider<TreeEntry>;\n spillPath?: string;\n options?: AbstractPFrameDriverOps;\n resolveDataInfo: DataInfoResolver<PColumnData, TreeEntry>;\n }) {\n this.logger = logger;\n\n this.localBlobProvider = localBlobProvider;\n this.remoteBlobProvider = remoteBlobProvider;\n\n this.resolveDataInfo = resolveDataInfo;\n\n this.frameConcurrencyLimiter = new ConcurrencyLimitingExecutor(options.pFrameConcurrency);\n this.tableConcurrencyLimiter = new ConcurrencyLimitingExecutor(options.pTableConcurrency);\n\n this.pFrames = new PFramePool(\n this.localBlobProvider,\n this.remoteBlobProvider,\n this.logger,\n spillPath,\n );\n this.pTableDefs = new PTableDefPool(this.logger);\n this.pTables = new PTablePool(this.pFrames, this.pTableDefs, this.logger);\n\n this.pTableCachePerFrame = new PTableCachePerFrame(this.logger, options);\n this.pTableCachePlain = new PTableCachePlain(this.logger, options);\n }\n\n async dispose(): Promise<void> {\n return await this.remoteBlobProvider[Symbol.asyncDispose]();\n }\n\n async [Symbol.asyncDispose](): Promise<void> {\n return await this.dispose();\n }\n\n //\n // Internal / Config API Methods\n //\n\n public createPFrame(def: PFrameDef<PColumn<PColumnData>>): PoolEntry<PFrameHandle> {\n const ValueTypes = new Set(Object.values(ValueType));\n\n const supportedColumns = def.filter((column) => ValueTypes.has(column.spec.valueType));\n const uniqueColumns = uniqueBy(supportedColumns, (column) => column.id);\n const columns = uniqueColumns.map((c) =>\n mapPObjectData(c, (d) => this.resolveDataInfo(c.spec, d)),\n );\n\n return this.pFrames.acquire(columns);\n }\n\n public createPTable(rawDef: PTableDef<PColumn<PColumnData>>): PoolEntry<PTableHandle> {\n const pFrameEntry = this.createPFrame(extractAllColumns(rawDef.src));\n const sortedDef = sortPTableDef(\n migratePTableFilters(\n mapPTableDef(rawDef, (c) => c.id),\n this.logger,\n ),\n );\n\n const pTableEntry = this.pTableDefs.acquire({ def: sortedDef, pFrameHandle: pFrameEntry.key });\n if (logPFrames()) {\n this.logger(\n \"info\",\n `Create PTable call (pFrameHandle = ${pFrameEntry.key}; pTableHandle = ${pTableEntry.key})`,\n );\n }\n\n const unref = () => {\n pTableEntry.unref();\n pFrameEntry.unref();\n };\n return {\n key: pTableEntry.key,\n resource: pTableEntry.resource,\n unref,\n [Symbol.dispose]: unref,\n };\n }\n\n //\n // PFrame instance methods\n //\n\n public async findColumns(\n handle: PFrameHandle,\n request: FindColumnsRequest,\n ): Promise<FindColumnsResponse> {\n const iRequest: PFrameInternal.FindColumnsRequest = {\n ...request,\n compatibleWith:\n request.compatibleWith.length !== 0\n ? [\n {\n axesSpec: [\n ...new Map(\n request.compatibleWith.map((item) => [canonicalizeJson(item), item] as const),\n ).values(),\n ],\n qualifications: [],\n },\n ]\n : [],\n };\n\n const { pFramePromise } = this.pFrames.getByKey(handle);\n const pFrame = await pFramePromise;\n\n const response = await pFrame.findColumns(iRequest);\n return {\n hits: response.hits\n .filter(\n (h) =>\n // only exactly matching columns\n h.mappingVariants.length === 0 ||\n h.mappingVariants.some(\n (v) =>\n v.qualifications.forHit.length === 0 &&\n v.qualifications.forQueries.every((q) => q.length === 0),\n ),\n )\n .map((h) => h.hit),\n };\n }\n\n public async getColumnSpec(\n handle: PFrameHandle,\n columnId: PObjectId,\n ): Promise<PColumnSpec | null> {\n const { pFramePromise } = this.pFrames.getByKey(handle);\n const pFrame = await pFramePromise;\n return await pFrame.getColumnSpec(columnId);\n }\n\n public async listColumns(handle: PFrameHandle): Promise<PColumnIdAndSpec[]> {\n const { pFramePromise } = this.pFrames.getByKey(handle);\n const pFrame = await pFramePromise;\n return await pFrame.listColumns();\n }\n\n public async calculateTableData(\n handle: PFrameHandle,\n request: CalculateTableDataRequest<PObjectId>,\n range: TableRange | undefined,\n signal?: AbortSignal,\n ): Promise<CalculateTableDataResponse> {\n if (logPFrames()) {\n this.logger(\n \"info\",\n `Call calculateTableData, handle = ${handle}, request = ${JSON.stringify(request, bigintReplacer)}`,\n );\n }\n\n const table = this.pTables.acquire({\n pFrameHandle: handle,\n def: sortPTableDef(migratePTableFilters(request, this.logger)),\n });\n const { pTablePromise, disposeSignal } = table.resource;\n const pTable = await pTablePromise;\n\n const combinedSignal = AbortSignal.any([signal, disposeSignal].filter((s) => !!s));\n return await this.frameConcurrencyLimiter.run(async () => {\n try {\n // TODO: throw error when more then 150k rows is requested\n // after pf-plots migration to stream API\n\n const spec = pTable.getSpec();\n const data = await pTable.getData([...spec.keys()], {\n range,\n signal: combinedSignal,\n });\n\n const overallSize = await pTable.getFootprint({\n signal: combinedSignal,\n });\n this.pTableCachePerFrame.cache(table, overallSize);\n\n return spec.map((spec, i) => ({\n spec: spec,\n data: data[i],\n }));\n } catch (err: unknown) {\n table.unref();\n throw err;\n }\n });\n }\n\n public async getUniqueValues(\n handle: PFrameHandle,\n request: UniqueValuesRequest,\n signal?: AbortSignal,\n ): Promise<UniqueValuesResponse> {\n if (logPFrames()) {\n this.logger(\n \"info\",\n `Call getUniqueValues, handle = ${handle}, request = ${JSON.stringify(request, bigintReplacer)}`,\n );\n }\n\n const { pFramePromise, disposeSignal } = this.pFrames.getByKey(handle);\n const pFrame = await pFramePromise;\n\n const combinedSignal = AbortSignal.any([signal, disposeSignal].filter((s) => !!s));\n return await this.frameConcurrencyLimiter.run(async () => {\n return await pFrame.getUniqueValues(\n {\n ...request,\n filters: migrateFilters(request.filters, this.logger),\n },\n {\n signal: combinedSignal,\n },\n );\n });\n }\n\n //\n // PTable instance methods\n //\n\n public async getSpec(handle: PTableHandle): Promise<PTableColumnSpec[]> {\n const { def } = this.pTableDefs.getByKey(handle);\n using table = this.pTables.acquire(def);\n\n const { pTablePromise } = table.resource;\n const pTable = await pTablePromise;\n\n return pTable.getSpec();\n }\n\n public async getShape(handle: PTableHandle, signal?: AbortSignal): Promise<PTableShape> {\n const { def, disposeSignal: defDisposeSignal } = this.pTableDefs.getByKey(handle);\n const table = this.pTables.acquire(def);\n\n const { pTablePromise, disposeSignal } = table.resource;\n const pTable = await pTablePromise;\n\n const combinedSignal = AbortSignal.any([signal, disposeSignal].filter((s) => !!s));\n const { shape, overallSize } = await this.tableConcurrencyLimiter.run(async () => {\n const shape = await pTable.getShape({\n signal: combinedSignal,\n });\n\n const overallSize = await pTable.getFootprint({\n signal: combinedSignal,\n });\n\n return { shape, overallSize };\n });\n\n this.pTableCachePlain.cache(table, overallSize, defDisposeSignal);\n return shape;\n }\n\n public async getData(\n handle: PTableHandle,\n columnIndices: number[],\n range: TableRange | undefined,\n signal?: AbortSignal,\n ): Promise<PTableVector[]> {\n const { def, disposeSignal: defDisposeSignal } = this.pTableDefs.getByKey(handle);\n const table = this.pTables.acquire(def);\n\n const { pTablePromise, disposeSignal } = table.resource;\n const pTable = await pTablePromise;\n\n const combinedSignal = AbortSignal.any([signal, disposeSignal].filter((s) => !!s));\n const { data, overallSize } = await this.tableConcurrencyLimiter.run(async () => {\n const data = await pTable.getData(columnIndices, {\n range,\n signal: combinedSignal,\n });\n\n const overallSize = await pTable.getFootprint({\n signal: combinedSignal,\n });\n\n return { data, overallSize };\n });\n\n this.pTableCachePlain.cache(table, overallSize, defDisposeSignal);\n return data;\n }\n}\n\nfunction sortPTableDef(def: PTableDef<PObjectId>): PTableDef<PObjectId> {\n function cmpJoinEntries(lhs: JoinEntry<PObjectId>, rhs: JoinEntry<PObjectId>): number {\n if (lhs.type !== rhs.type) {\n return lhs.type < rhs.type ? -1 : 1;\n }\n const type = lhs.type;\n switch (type) {\n case \"column\":\n return lhs.column < (rhs as typeof lhs).column ? -1 : 1;\n case \"slicedColumn\":\n case \"artificialColumn\":\n return lhs.newId < (rhs as typeof lhs).newId ? -1 : 1;\n case \"inlineColumn\": {\n return lhs.column.id < (rhs as typeof lhs).column.id ? -1 : 1;\n }\n case \"inner\":\n case \"full\": {\n const rhsInner = rhs as typeof lhs;\n if (lhs.entries.length !== rhsInner.entries.length) {\n return lhs.entries.length - rhsInner.entries.length;\n }\n for (let i = 0; i < lhs.entries.length; i++) {\n const cmp = cmpJoinEntries(lhs.entries[i], rhsInner.entries[i]);\n if (cmp !== 0) {\n return cmp;\n }\n }\n return 0;\n }\n case \"outer\": {\n const rhsOuter = rhs as typeof lhs;\n const cmp = cmpJoinEntries(lhs.primary, rhsOuter.primary);\n if (cmp !== 0) {\n return cmp;\n }\n if (lhs.secondary.length !== rhsOuter.secondary.length) {\n return lhs.secondary.length - rhsOuter.secondary.length;\n }\n for (let i = 0; i < lhs.secondary.length; i++) {\n const cmp = cmpJoinEntries(lhs.secondary[i], rhsOuter.secondary[i]);\n if (cmp !== 0) {\n return cmp;\n }\n }\n return 0;\n }\n default:\n assertNever(type);\n }\n }\n function sortJoinEntry(entry: JoinEntry<PObjectId>): JoinEntry<PObjectId> {\n switch (entry.type) {\n case \"column\":\n case \"slicedColumn\":\n case \"inlineColumn\":\n return entry;\n case \"artificialColumn\": {\n const sortedAxesIndices = entry.axesIndices.toSorted((lhs, rhs) => lhs - rhs);\n return {\n ...entry,\n axesIndices: sortedAxesIndices,\n };\n }\n case \"inner\":\n case \"full\": {\n const sortedEntries = entry.entries.map(sortJoinEntry);\n sortedEntries.sort(cmpJoinEntries);\n return {\n ...entry,\n entries: sortedEntries,\n };\n }\n case \"outer\": {\n const sortedSecondary = entry.secondary.map(sortJoinEntry);\n sortedSecondary.sort(cmpJoinEntries);\n return {\n ...entry,\n primary: sortJoinEntry(entry.primary),\n secondary: sortedSecondary,\n };\n }\n default:\n assertNever(entry);\n }\n }\n function sortFilters(filters: PTableRecordFilter[]): PTableRecordFilter[] {\n return filters.toSorted((lhs, rhs) => {\n if (lhs.column.type === \"axis\" && rhs.column.type === \"axis\") {\n const lhsId = canonicalizeJson(getAxisId(lhs.column.id));\n const rhsId = canonicalizeJson(getAxisId(rhs.column.id));\n return lhsId < rhsId ? -1 : 1;\n } else if (lhs.column.type === \"column\" && rhs.column.type === \"column\") {\n return lhs.column.id < rhs.column.id ? -1 : 1;\n } else {\n return lhs.column.type === \"axis\" ? -1 : 1;\n }\n });\n }\n return {\n src: sortJoinEntry(def.src),\n partitionFilters: sortFilters(def.partitionFilters),\n filters: sortFilters(def.filters),\n sorting: def.sorting,\n };\n}\n\nfunction migrateFilters(\n filters: PTableRecordFilter[],\n logger: PFrameInternal.Logger,\n): PTableRecordFilter[] {\n const filtersV1 = [];\n const filtersV2: PTableRecordSingleValueFilterV2[] = [];\n for (const filter of filters) {\n if ((filter.type as unknown) === \"bySingleColumn\") {\n filtersV1.push(filter);\n filtersV2.push({\n ...filter,\n type: \"bySingleColumnV2\",\n });\n } else {\n filtersV2.push(filter);\n }\n }\n if (filtersV1.length > 0) {\n const filtersV1Json = JSON.stringify(filtersV1);\n logger(\n \"warn\",\n `type overwritten from 'bySingleColumn' to 'bySingleColumnV2' for filters: ${filtersV1Json}`,\n );\n }\n return filtersV2;\n}\n\nfunction migratePTableFilters<T>(\n def: Omit<PTableDef<T>, \"partitionFilters\"> | PTableDef<T>,\n logger: PFrameInternal.Logger,\n): PTableDef<T> {\n if (!(\"partitionFilters\" in def)) {\n // For old blocks assume all axes filters to be partition filters\n return {\n ...def,\n partitionFilters: migrateFilters(\n def.filters.filter((f) => f.column.type === \"axis\"),\n logger,\n ),\n filters: migrateFilters(\n def.filters.filter((f) => f.column.type === \"column\"),\n logger,\n ),\n };\n }\n return {\n ...def,\n partitionFilters: migrateFilters(def.partitionFilters, logger),\n filters: migrateFilters(def.filters, logger),\n };\n}\n"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- export * from './driver_decl';
2
- export * from './driver_impl';
3
- export * from './data_info_helpers';
4
- export * from './driver_double';
1
+ export * from "./driver_decl";
2
+ export * from "./driver_impl";
3
+ export * from "./data_info_helpers";
4
+ export * from "./driver_double";
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -31,14 +31,14 @@ class PFrameHolder {
31
31
  };
32
32
  const mapColumnData = (data) => {
33
33
  switch (data.type) {
34
- case 'Json':
34
+ case "Json":
35
35
  return { ...data };
36
- case 'JsonPartitioned':
36
+ case "JsonPartitioned":
37
37
  return {
38
38
  ...data,
39
39
  parts: esToolkit.mapValues(data.parts, makeLocalBlobId),
40
40
  };
41
- case 'BinaryPartitioned':
41
+ case "BinaryPartitioned":
42
42
  return {
43
43
  ...data,
44
44
  parts: esToolkit.mapValues(data.parts, (v) => ({
@@ -46,7 +46,7 @@ class PFrameHolder {
46
46
  values: makeLocalBlobId(v.values),
47
47
  })),
48
48
  };
49
- case 'ParquetPartitioned':
49
+ case "ParquetPartitioned":
50
50
  return {
51
51
  ...data,
52
52
  parts: esToolkit.mapValues(data.parts, (v) => ({
@@ -78,13 +78,13 @@ class PFrameHolder {
78
78
  .catch((err) => {
79
79
  this.dispose();
80
80
  pFrame.dispose();
81
- const error = new model.PFrameDriverError('PFrame creation failed asynchronously');
81
+ const error = new model.PFrameDriverError("PFrame creation failed asynchronously");
82
82
  error.cause = new Error(`PFrame cannot be created from columns: ${JSON.stringify(jsonifiedColumns)}`, { cause: model.ensureError(err) });
83
83
  throw error;
84
84
  });
85
85
  }
86
86
  catch (err) {
87
- const error = new model.PFrameDriverError('PFrame creation failed synchronously');
87
+ const error = new model.PFrameDriverError("PFrame creation failed synchronously");
88
88
  error.cause = new Error(`PFrame cannot be created from columns: ${JSON.stringify(jsonifiedColumns)}`, { cause: model.ensureError(err) });
89
89
  throw error;
90
90
  }
@@ -101,7 +101,9 @@ class PFrameHolder {
101
101
  this.dispose();
102
102
  void this.pFramePromise
103
103
  .then((pFrame) => pFrame.dispose())
104
- .catch(() => { });
104
+ .catch(() => {
105
+ /* mute error */
106
+ });
105
107
  }
106
108
  }
107
109
  class PFramePool extends tsHelpers.RefCountPoolBase {
@@ -121,8 +123,7 @@ class PFramePool extends tsHelpers.RefCountPoolBase {
121
123
  }
122
124
  createNewResource(params, key) {
123
125
  if (logging.logPFrames()) {
124
- this.logger('info', `PFrame creation (pFrameHandle = ${key}): `
125
- + `${JSON.stringify(params, model.bigintReplacer)}`);
126
+ this.logger("info", `PFrame creation (pFrameHandle = ${key}): ` + `${JSON.stringify(params, model.bigintReplacer)}`);
126
127
  }
127
128
  return new PFrameHolder(key, this.localBlobProvider, this.remoteBlobProvider, this.logger, this.spillPath, params);
128
129
  }
@@ -141,7 +142,7 @@ function stableKeyFromPFrameData(data) {
141
142
  let result;
142
143
  const type = r.type;
143
144
  switch (type) {
144
- case 'Json':
145
+ case "Json":
145
146
  result = {
146
147
  type: r.type,
147
148
  keyLength: r.keyLength,
@@ -151,7 +152,7 @@ function stableKeyFromPFrameData(data) {
151
152
  })),
152
153
  };
153
154
  break;
154
- case 'JsonPartitioned':
155
+ case "JsonPartitioned":
155
156
  result = {
156
157
  type: r.type,
157
158
  keyLength: r.partitionKeyLength,
@@ -161,7 +162,7 @@ function stableKeyFromPFrameData(data) {
161
162
  })),
162
163
  };
163
164
  break;
164
- case 'BinaryPartitioned':
165
+ case "BinaryPartitioned":
165
166
  result = {
166
167
  type: r.type,
167
168
  keyLength: r.partitionKeyLength,
@@ -171,26 +172,27 @@ function stableKeyFromPFrameData(data) {
171
172
  })),
172
173
  };
173
174
  break;
174
- case 'ParquetPartitioned':
175
+ case "ParquetPartitioned":
175
176
  result = {
176
177
  type: r.type,
177
178
  keyLength: r.partitionKeyLength,
178
179
  payload: Object.entries(r.parts).map(([part, info]) => ({
179
180
  key: part,
180
- value: info.dataDigest || [
181
- model.canonicalizeJson(info.data),
182
- JSON.stringify({ axes: info.axes, column: info.column }),
183
- ],
181
+ value: info.dataDigest ||
182
+ [
183
+ model.canonicalizeJson(info.data),
184
+ JSON.stringify({ axes: info.axes, column: info.column }),
185
+ ],
184
186
  })),
185
187
  };
186
188
  break;
187
189
  default:
188
190
  throw new model.PFrameDriverError(`unsupported resource type: ${JSON.stringify(type)}`);
189
191
  }
190
- result.payload.sort((lhs, rhs) => lhs.key < rhs.key ? -1 : 1);
192
+ result.payload.sort((lhs, rhs) => (lhs.key < rhs.key ? -1 : 1));
191
193
  return result;
192
194
  }));
193
- orderedData.sort((lhs, rhs) => lhs.id < rhs.id ? -1 : 1);
195
+ orderedData.sort((lhs, rhs) => (lhs.id < rhs.id ? -1 : 1));
194
196
  return plModelMiddleLayer.hashJson(orderedData);
195
197
  }
196
198
 
@@ -1 +1 @@
1
- {"version":3,"file":"pframe_pool.cjs","sources":["../src/pframe_pool.ts"],"sourcesContent":["import {\n assertNever,\n bigintReplacer,\n canonicalizeJson,\n ensureError,\n mapPObjectData,\n PFrameDriverError,\n type JsonSerializable,\n type PColumn,\n type PFrameHandle,\n} from '@platforma-sdk/model';\nimport { hashJson, PFrameInternal } from '@milaboratories/pl-model-middle-layer';\nimport {\n RefCountPoolBase,\n type PoolEntry,\n} from '@milaboratories/ts-helpers';\nimport { PFrameFactory } from '@milaboratories/pframes-rs-node';\nimport { mapValues } from 'es-toolkit';\nimport { logPFrames } from './logging';\n\nexport interface LocalBlobProvider<TreeEntry extends JsonSerializable> {\n acquire(params: TreeEntry): PoolEntry<PFrameInternal.PFrameBlobId>;\n makeDataSource(signal: AbortSignal): Omit<PFrameInternal.PFrameDataSourceV2, 'parquetServer'>;\n}\n\nexport interface RemoteBlobProvider<TreeEntry extends JsonSerializable> {\n acquire(params: TreeEntry): PoolEntry<PFrameInternal.PFrameBlobId>;\n httpServerInfo(): PFrameInternal.HttpServerInfo;\n}\n\nexport class PFrameHolder<TreeEntry extends JsonSerializable> implements Disposable {\n public readonly pFramePromise: Promise<PFrameInternal.PFrameV13>;\n private readonly abortController = new AbortController();\n\n private readonly localBlobs: PoolEntry<PFrameInternal.PFrameBlobId>[] = [];\n private readonly remoteBlobs: PoolEntry<PFrameInternal.PFrameBlobId>[] = [];\n\n constructor(\n frameId: PFrameInternal.PFrameId,\n private readonly localBlobProvider: LocalBlobProvider<TreeEntry>,\n private readonly remoteBlobProvider: RemoteBlobProvider<TreeEntry>,\n logger: PFrameInternal.Logger,\n private readonly spillPath: string,\n columns: PColumn<PFrameInternal.DataInfo<TreeEntry>>[],\n ) {\n const makeLocalBlobId = (blob: TreeEntry): PFrameInternal.PFrameBlobId => {\n const localBlob = this.localBlobProvider.acquire(blob);\n this.localBlobs.push(localBlob);\n return localBlob.key;\n };\n\n const makeRemoteBlobId = (blob: TreeEntry): PFrameInternal.PFrameBlobId => {\n const remoteBlob = this.remoteBlobProvider.acquire(blob);\n this.remoteBlobs.push(remoteBlob);\n return `${remoteBlob.key}${PFrameInternal.ParquetExtension}` as PFrameInternal.PFrameBlobId;\n };\n\n const mapColumnData = (\n data: PFrameInternal.DataInfo<TreeEntry>,\n ): PFrameInternal.DataInfo<PFrameInternal.PFrameBlobId> => {\n switch (data.type) {\n case 'Json':\n return { ...data };\n case 'JsonPartitioned':\n return {\n ...data,\n parts: mapValues(data.parts, makeLocalBlobId),\n };\n case 'BinaryPartitioned':\n return {\n ...data,\n parts: mapValues(data.parts, (v) => ({\n index: makeLocalBlobId(v.index),\n values: makeLocalBlobId(v.values),\n })),\n };\n case 'ParquetPartitioned':\n return {\n ...data,\n parts: mapValues(data.parts, (v) => ({\n ...v,\n data: makeRemoteBlobId(v.data),\n })),\n };\n default:\n assertNever(data);\n }\n };\n\n const jsonifiedColumns = columns.map((column) => ({\n ...column,\n data: mapColumnData(column.data),\n }));\n\n try {\n const pFrame = PFrameFactory.createPFrame({ frameId, spillPath: this.spillPath, logger });\n pFrame.setDataSource({\n ...this.localBlobProvider.makeDataSource(this.disposeSignal),\n parquetServer: this.remoteBlobProvider.httpServerInfo(),\n });\n\n const promises: Promise<void>[] = [];\n for (const column of jsonifiedColumns) {\n pFrame.addColumnSpec(column.id, column.spec);\n promises.push(pFrame.setColumnData(column.id, column.data, { signal: this.disposeSignal }));\n }\n\n this.pFramePromise = Promise.all(promises)\n .then(() => pFrame)\n .catch((err) => {\n this.dispose();\n pFrame.dispose();\n const error = new PFrameDriverError('PFrame creation failed asynchronously');\n error.cause = new Error(\n `PFrame cannot be created from columns: ${JSON.stringify(jsonifiedColumns)}`,\n { cause: ensureError(err) },\n );\n throw error;\n });\n } catch (err: unknown) {\n const error = new PFrameDriverError('PFrame creation failed synchronously');\n error.cause = new Error(\n `PFrame cannot be created from columns: ${JSON.stringify(jsonifiedColumns)}`,\n { cause: ensureError(err) },\n );\n throw error;\n }\n }\n\n public get disposeSignal(): AbortSignal {\n return this.abortController.signal;\n }\n\n private dispose(): void {\n this.abortController.abort();\n this.localBlobs.forEach((entry) => entry.unref());\n this.remoteBlobs.forEach((entry) => entry.unref());\n }\n\n [Symbol.dispose](): void {\n this.dispose();\n void this.pFramePromise\n .then((pFrame) => pFrame.dispose())\n .catch(() => { /* mute error */ });\n }\n}\n\nexport class PFramePool<TreeEntry extends JsonSerializable>\n extends RefCountPoolBase<\n PColumn<PFrameInternal.DataInfo<TreeEntry>>[],\n PFrameHandle,\n PFrameHolder<TreeEntry>> {\n constructor(\n private readonly localBlobProvider: LocalBlobProvider<TreeEntry>,\n private readonly remoteBlobProvider: RemoteBlobProvider<TreeEntry>,\n private readonly logger: PFrameInternal.Logger,\n private readonly spillPath: string,\n ) {\n super();\n }\n\n protected calculateParamsKey(params: PColumn<PFrameInternal.DataInfo<TreeEntry>>[]): PFrameHandle {\n return stableKeyFromPFrameData(params);\n }\n\n protected createNewResource(\n params: PColumn<PFrameInternal.DataInfo<TreeEntry>>[],\n key: PFrameHandle,\n ): PFrameHolder<TreeEntry> {\n if (logPFrames()) {\n this.logger('info',\n `PFrame creation (pFrameHandle = ${key}): `\n + `${JSON.stringify(params, bigintReplacer)}`,\n );\n }\n return new PFrameHolder(\n key,\n this.localBlobProvider,\n this.remoteBlobProvider,\n this.logger,\n this.spillPath,\n params,\n );\n }\n\n public getByKey(key: PFrameHandle): PFrameHolder<TreeEntry> {\n const resource = super.tryGetByKey(key);\n if (!resource) {\n const error = new PFrameDriverError(`Invalid PFrame handle`);\n error.cause = new Error(`PFrame with handle ${key} not found`);\n throw error;\n }\n return resource;\n }\n}\n\nfunction stableKeyFromPFrameData<TreeEntry extends JsonSerializable>(\n data: PColumn<PFrameInternal.DataInfo<TreeEntry>>[],\n): PFrameHandle {\n const orderedData = [...data].map((column) =>\n mapPObjectData(column, (r) => {\n let result: {\n type: string;\n keyLength: number;\n payload: {\n key: string;\n value: null | number | string | [string, string];\n }[];\n };\n const type = r.type;\n switch (type) {\n case 'Json':\n result = {\n type: r.type,\n keyLength: r.keyLength,\n payload: Object.entries(r.data).map(([part, value]) => ({\n key: part,\n value,\n })),\n };\n break;\n case 'JsonPartitioned':\n result = {\n type: r.type,\n keyLength: r.partitionKeyLength,\n payload: Object.entries(r.parts).map(([part, info]) => ({\n key: part,\n value: canonicalizeJson(info),\n })),\n };\n break;\n case 'BinaryPartitioned':\n result = {\n type: r.type,\n keyLength: r.partitionKeyLength,\n payload: Object.entries(r.parts).map(([part, info]) => ({\n key: part,\n value: [canonicalizeJson(info.index), canonicalizeJson(info.values)] as const,\n })),\n };\n break;\n case 'ParquetPartitioned':\n result = {\n type: r.type,\n keyLength: r.partitionKeyLength,\n payload: Object.entries(r.parts).map(([part, info]) => ({\n key: part,\n value: info.dataDigest || [\n canonicalizeJson(info.data),\n JSON.stringify({ axes: info.axes, column: info.column }),\n ] as const,\n })),\n };\n break;\n default:\n throw new PFrameDriverError(`unsupported resource type: ${JSON.stringify(type satisfies never)}`);\n }\n result.payload.sort((lhs, rhs) => lhs.key < rhs.key ? -1 : 1);\n return result;\n }),\n );\n orderedData.sort((lhs, rhs) => lhs.id < rhs.id ? -1 : 1);\n return hashJson(orderedData) as string as PFrameHandle;\n}\n"],"names":["PFrameInternal","mapValues","assertNever","PFrameFactory","PFrameDriverError","ensureError","RefCountPoolBase","logPFrames","bigintReplacer","mapPObjectData","canonicalizeJson","hashJson"],"mappings":"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"}
1
+ {"version":3,"file":"pframe_pool.cjs","sources":["../src/pframe_pool.ts"],"sourcesContent":["import {\n assertNever,\n bigintReplacer,\n canonicalizeJson,\n ensureError,\n mapPObjectData,\n PFrameDriverError,\n type JsonSerializable,\n type PColumn,\n type PFrameHandle,\n} from \"@platforma-sdk/model\";\nimport { hashJson, PFrameInternal } from \"@milaboratories/pl-model-middle-layer\";\nimport { RefCountPoolBase, type PoolEntry } from \"@milaboratories/ts-helpers\";\nimport { PFrameFactory } from \"@milaboratories/pframes-rs-node\";\nimport { mapValues } from \"es-toolkit\";\nimport { logPFrames } from \"./logging\";\n\nexport interface LocalBlobProvider<TreeEntry extends JsonSerializable> {\n acquire(params: TreeEntry): PoolEntry<PFrameInternal.PFrameBlobId>;\n makeDataSource(signal: AbortSignal): Omit<PFrameInternal.PFrameDataSourceV2, \"parquetServer\">;\n}\n\nexport interface RemoteBlobProvider<TreeEntry extends JsonSerializable> {\n acquire(params: TreeEntry): PoolEntry<PFrameInternal.PFrameBlobId>;\n httpServerInfo(): PFrameInternal.HttpServerInfo;\n}\n\nexport class PFrameHolder<TreeEntry extends JsonSerializable> implements Disposable {\n public readonly pFramePromise: Promise<PFrameInternal.PFrameV13>;\n private readonly abortController = new AbortController();\n\n private readonly localBlobs: PoolEntry<PFrameInternal.PFrameBlobId>[] = [];\n private readonly remoteBlobs: PoolEntry<PFrameInternal.PFrameBlobId>[] = [];\n\n constructor(\n frameId: PFrameInternal.PFrameId,\n private readonly localBlobProvider: LocalBlobProvider<TreeEntry>,\n private readonly remoteBlobProvider: RemoteBlobProvider<TreeEntry>,\n logger: PFrameInternal.Logger,\n private readonly spillPath: string,\n columns: PColumn<PFrameInternal.DataInfo<TreeEntry>>[],\n ) {\n const makeLocalBlobId = (blob: TreeEntry): PFrameInternal.PFrameBlobId => {\n const localBlob = this.localBlobProvider.acquire(blob);\n this.localBlobs.push(localBlob);\n return localBlob.key;\n };\n\n const makeRemoteBlobId = (blob: TreeEntry): PFrameInternal.PFrameBlobId => {\n const remoteBlob = this.remoteBlobProvider.acquire(blob);\n this.remoteBlobs.push(remoteBlob);\n return `${remoteBlob.key}${PFrameInternal.ParquetExtension}` as PFrameInternal.PFrameBlobId;\n };\n\n const mapColumnData = (\n data: PFrameInternal.DataInfo<TreeEntry>,\n ): PFrameInternal.DataInfo<PFrameInternal.PFrameBlobId> => {\n switch (data.type) {\n case \"Json\":\n return { ...data };\n case \"JsonPartitioned\":\n return {\n ...data,\n parts: mapValues(data.parts, makeLocalBlobId),\n };\n case \"BinaryPartitioned\":\n return {\n ...data,\n parts: mapValues(data.parts, (v) => ({\n index: makeLocalBlobId(v.index),\n values: makeLocalBlobId(v.values),\n })),\n };\n case \"ParquetPartitioned\":\n return {\n ...data,\n parts: mapValues(data.parts, (v) => ({\n ...v,\n data: makeRemoteBlobId(v.data),\n })),\n };\n default:\n assertNever(data);\n }\n };\n\n const jsonifiedColumns = columns.map((column) => ({\n ...column,\n data: mapColumnData(column.data),\n }));\n\n try {\n const pFrame = PFrameFactory.createPFrame({ frameId, spillPath: this.spillPath, logger });\n pFrame.setDataSource({\n ...this.localBlobProvider.makeDataSource(this.disposeSignal),\n parquetServer: this.remoteBlobProvider.httpServerInfo(),\n });\n\n const promises: Promise<void>[] = [];\n for (const column of jsonifiedColumns) {\n pFrame.addColumnSpec(column.id, column.spec);\n promises.push(pFrame.setColumnData(column.id, column.data, { signal: this.disposeSignal }));\n }\n\n this.pFramePromise = Promise.all(promises)\n .then(() => pFrame)\n .catch((err) => {\n this.dispose();\n pFrame.dispose();\n const error = new PFrameDriverError(\"PFrame creation failed asynchronously\");\n error.cause = new Error(\n `PFrame cannot be created from columns: ${JSON.stringify(jsonifiedColumns)}`,\n { cause: ensureError(err) },\n );\n throw error;\n });\n } catch (err: unknown) {\n const error = new PFrameDriverError(\"PFrame creation failed synchronously\");\n error.cause = new Error(\n `PFrame cannot be created from columns: ${JSON.stringify(jsonifiedColumns)}`,\n { cause: ensureError(err) },\n );\n throw error;\n }\n }\n\n public get disposeSignal(): AbortSignal {\n return this.abortController.signal;\n }\n\n private dispose(): void {\n this.abortController.abort();\n this.localBlobs.forEach((entry) => entry.unref());\n this.remoteBlobs.forEach((entry) => entry.unref());\n }\n\n [Symbol.dispose](): void {\n this.dispose();\n void this.pFramePromise\n .then((pFrame) => pFrame.dispose())\n .catch(() => {\n /* mute error */\n });\n }\n}\n\nexport class PFramePool<TreeEntry extends JsonSerializable> extends RefCountPoolBase<\n PColumn<PFrameInternal.DataInfo<TreeEntry>>[],\n PFrameHandle,\n PFrameHolder<TreeEntry>\n> {\n constructor(\n private readonly localBlobProvider: LocalBlobProvider<TreeEntry>,\n private readonly remoteBlobProvider: RemoteBlobProvider<TreeEntry>,\n private readonly logger: PFrameInternal.Logger,\n private readonly spillPath: string,\n ) {\n super();\n }\n\n protected calculateParamsKey(\n params: PColumn<PFrameInternal.DataInfo<TreeEntry>>[],\n ): PFrameHandle {\n return stableKeyFromPFrameData(params);\n }\n\n protected createNewResource(\n params: PColumn<PFrameInternal.DataInfo<TreeEntry>>[],\n key: PFrameHandle,\n ): PFrameHolder<TreeEntry> {\n if (logPFrames()) {\n this.logger(\n \"info\",\n `PFrame creation (pFrameHandle = ${key}): ` + `${JSON.stringify(params, bigintReplacer)}`,\n );\n }\n return new PFrameHolder(\n key,\n this.localBlobProvider,\n this.remoteBlobProvider,\n this.logger,\n this.spillPath,\n params,\n );\n }\n\n public getByKey(key: PFrameHandle): PFrameHolder<TreeEntry> {\n const resource = super.tryGetByKey(key);\n if (!resource) {\n const error = new PFrameDriverError(`Invalid PFrame handle`);\n error.cause = new Error(`PFrame with handle ${key} not found`);\n throw error;\n }\n return resource;\n }\n}\n\nfunction stableKeyFromPFrameData<TreeEntry extends JsonSerializable>(\n data: PColumn<PFrameInternal.DataInfo<TreeEntry>>[],\n): PFrameHandle {\n const orderedData = [...data].map((column) =>\n mapPObjectData(column, (r) => {\n let result: {\n type: string;\n keyLength: number;\n payload: {\n key: string;\n value: null | number | string | [string, string];\n }[];\n };\n const type = r.type;\n switch (type) {\n case \"Json\":\n result = {\n type: r.type,\n keyLength: r.keyLength,\n payload: Object.entries(r.data).map(([part, value]) => ({\n key: part,\n value,\n })),\n };\n break;\n case \"JsonPartitioned\":\n result = {\n type: r.type,\n keyLength: r.partitionKeyLength,\n payload: Object.entries(r.parts).map(([part, info]) => ({\n key: part,\n value: canonicalizeJson(info),\n })),\n };\n break;\n case \"BinaryPartitioned\":\n result = {\n type: r.type,\n keyLength: r.partitionKeyLength,\n payload: Object.entries(r.parts).map(([part, info]) => ({\n key: part,\n value: [canonicalizeJson(info.index), canonicalizeJson(info.values)] as const,\n })),\n };\n break;\n case \"ParquetPartitioned\":\n result = {\n type: r.type,\n keyLength: r.partitionKeyLength,\n payload: Object.entries(r.parts).map(([part, info]) => ({\n key: part,\n value:\n info.dataDigest ||\n ([\n canonicalizeJson(info.data),\n JSON.stringify({ axes: info.axes, column: info.column }),\n ] as const),\n })),\n };\n break;\n default:\n throw new PFrameDriverError(\n `unsupported resource type: ${JSON.stringify(type satisfies never)}`,\n );\n }\n result.payload.sort((lhs, rhs) => (lhs.key < rhs.key ? -1 : 1));\n return result;\n }),\n );\n orderedData.sort((lhs, rhs) => (lhs.id < rhs.id ? -1 : 1));\n return hashJson(orderedData) as string as PFrameHandle;\n}\n"],"names":["PFrameInternal","mapValues","assertNever","PFrameFactory","PFrameDriverError","ensureError","RefCountPoolBase","logPFrames","bigintReplacer","mapPObjectData","canonicalizeJson","hashJson"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import { type JsonSerializable, type PColumn, type PFrameHandle } from '@platforma-sdk/model';
2
- import { PFrameInternal } from '@milaboratories/pl-model-middle-layer';
3
- import { RefCountPoolBase, type PoolEntry } from '@milaboratories/ts-helpers';
1
+ import { type JsonSerializable, type PColumn, type PFrameHandle } from "@platforma-sdk/model";
2
+ import { PFrameInternal } from "@milaboratories/pl-model-middle-layer";
3
+ import { RefCountPoolBase, type PoolEntry } from "@milaboratories/ts-helpers";
4
4
  export interface LocalBlobProvider<TreeEntry extends JsonSerializable> {
5
5
  acquire(params: TreeEntry): PoolEntry<PFrameInternal.PFrameBlobId>;
6
- makeDataSource(signal: AbortSignal): Omit<PFrameInternal.PFrameDataSourceV2, 'parquetServer'>;
6
+ makeDataSource(signal: AbortSignal): Omit<PFrameInternal.PFrameDataSourceV2, "parquetServer">;
7
7
  }
8
8
  export interface RemoteBlobProvider<TreeEntry extends JsonSerializable> {
9
9
  acquire(params: TreeEntry): PoolEntry<PFrameInternal.PFrameBlobId>;
@@ -1 +1 @@
1
- {"version":3,"file":"pframe_pool.d.ts","sourceRoot":"","sources":["../src/pframe_pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,gBAAgB,EACrB,KAAK,OAAO,EACZ,KAAK,YAAY,EAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAY,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EACL,gBAAgB,EAChB,KAAK,SAAS,EACf,MAAM,4BAA4B,CAAC;AAKpC,MAAM,WAAW,iBAAiB,CAAC,SAAS,SAAS,gBAAgB;IACnE,OAAO,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;IACnE,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE,eAAe,CAAC,CAAC;CAC/F;AAED,MAAM,WAAW,kBAAkB,CAAC,SAAS,SAAS,gBAAgB;IACpE,OAAO,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;IACnE,cAAc,IAAI,cAAc,CAAC,cAAc,CAAC;CACjD;AAED,qBAAa,YAAY,CAAC,SAAS,SAAS,gBAAgB,CAAE,YAAW,UAAU;IAS/E,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IAEnC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAX5B,SAAgB,aAAa,EAAE,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IACjE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAyB;IAEzD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgD;IAC3E,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgD;gBAG1E,OAAO,EAAE,cAAc,CAAC,QAAQ,EACf,iBAAiB,EAAE,iBAAiB,CAAC,SAAS,CAAC,EAC/C,kBAAkB,EAAE,kBAAkB,CAAC,SAAS,CAAC,EAClE,MAAM,EAAE,cAAc,CAAC,MAAM,EACZ,SAAS,EAAE,MAAM,EAClC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE;IAsFxD,IAAW,aAAa,IAAI,WAAW,CAEtC;IAED,OAAO,CAAC,OAAO;IAMf,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;CAMzB;AAED,qBAAa,UAAU,CAAC,SAAS,SAAS,gBAAgB,CACxD,SAAQ,gBAAgB,CACtB,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,EAC7C,YAAY,EACZ,YAAY,CAAC,SAAS,CAAC,CAAC;IAExB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAHT,iBAAiB,EAAE,iBAAiB,CAAC,SAAS,CAAC,EAC/C,kBAAkB,EAAE,kBAAkB,CAAC,SAAS,CAAC,EACjD,MAAM,EAAE,cAAc,CAAC,MAAM,EAC7B,SAAS,EAAE,MAAM;IAKpC,SAAS,CAAC,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,YAAY;IAIjG,SAAS,CAAC,iBAAiB,CACzB,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,EACrD,GAAG,EAAE,YAAY,GAChB,YAAY,CAAC,SAAS,CAAC;IAiBnB,QAAQ,CAAC,GAAG,EAAE,YAAY,GAAG,YAAY,CAAC,SAAS,CAAC;CAS5D"}
1
+ {"version":3,"file":"pframe_pool.d.ts","sourceRoot":"","sources":["../src/pframe_pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,gBAAgB,EACrB,KAAK,OAAO,EACZ,KAAK,YAAY,EAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAY,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,KAAK,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAK9E,MAAM,WAAW,iBAAiB,CAAC,SAAS,SAAS,gBAAgB;IACnE,OAAO,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;IACnE,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE,eAAe,CAAC,CAAC;CAC/F;AAED,MAAM,WAAW,kBAAkB,CAAC,SAAS,SAAS,gBAAgB;IACpE,OAAO,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;IACnE,cAAc,IAAI,cAAc,CAAC,cAAc,CAAC;CACjD;AAED,qBAAa,YAAY,CAAC,SAAS,SAAS,gBAAgB,CAAE,YAAW,UAAU;IAS/E,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IAEnC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAX5B,SAAgB,aAAa,EAAE,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IACjE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAyB;IAEzD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgD;IAC3E,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgD;gBAG1E,OAAO,EAAE,cAAc,CAAC,QAAQ,EACf,iBAAiB,EAAE,iBAAiB,CAAC,SAAS,CAAC,EAC/C,kBAAkB,EAAE,kBAAkB,CAAC,SAAS,CAAC,EAClE,MAAM,EAAE,cAAc,CAAC,MAAM,EACZ,SAAS,EAAE,MAAM,EAClC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE;IAsFxD,IAAW,aAAa,IAAI,WAAW,CAEtC;IAED,OAAO,CAAC,OAAO;IAMf,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;CAQzB;AAED,qBAAa,UAAU,CAAC,SAAS,SAAS,gBAAgB,CAAE,SAAQ,gBAAgB,CAClF,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,EAC7C,YAAY,EACZ,YAAY,CAAC,SAAS,CAAC,CACxB;IAEG,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAHT,iBAAiB,EAAE,iBAAiB,CAAC,SAAS,CAAC,EAC/C,kBAAkB,EAAE,kBAAkB,CAAC,SAAS,CAAC,EACjD,MAAM,EAAE,cAAc,CAAC,MAAM,EAC7B,SAAS,EAAE,MAAM;IAKpC,SAAS,CAAC,kBAAkB,CAC1B,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,GACpD,YAAY;IAIf,SAAS,CAAC,iBAAiB,CACzB,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,EACrD,GAAG,EAAE,YAAY,GAChB,YAAY,CAAC,SAAS,CAAC;IAiBnB,QAAQ,CAAC,GAAG,EAAE,YAAY,GAAG,YAAY,CAAC,SAAS,CAAC;CAS5D"}