@milaboratories/pl-middle-layer 1.41.9 → 1.41.11

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,12 +1,15 @@
1
- import { DataInfo, JsonDataInfo, PColumnSpec, PColumnValue, PColumnValues, PObjectId, PObjectSpec } from '@platforma-sdk/model';
1
+ import { JsonDataInfo, ParquetChunk, PColumnSpec, PColumnValue, PColumnValues, PObjectId, PObjectSpec } from '@platforma-sdk/model';
2
2
  import { PlTreeNodeAccessor, ResourceInfo } from '@milaboratories/pl-tree';
3
+ import { PFrameInternal } from '@milaboratories/pl-model-middle-layer';
3
4
  import { ResourceType } from '@milaboratories/pl-client';
4
- export declare function allBlobs<B>(data: DataInfo<B>): Generator<B>;
5
- export declare function mapBlobs<B1, B2>(data: DataInfo<B1>, mapping: (blob: B1) => B2): DataInfo<B2>;
5
+ export declare function allBlobs<B>(data: PFrameInternal.DataInfo<B>): Generator<B>;
6
+ export declare function mapBlobs<B1, B2>(data: PFrameInternal.DataInfo<B1>, mapping: (blob: B1) => B2): PFrameInternal.DataInfo<B2>;
6
7
  export declare const PColumnDataJsonPartitioned: ResourceType;
7
8
  export declare const PColumnDataJsonSuperPartitioned: ResourceType;
8
9
  export declare const PColumnDataBinaryPartitioned: ResourceType;
9
10
  export declare const PColumnDataBinarySuperPartitioned: ResourceType;
11
+ export declare const PColumnDataParquetPartitioned: ResourceType;
12
+ export declare const PColumnDataParquetSuperPartitioned: ResourceType;
10
13
  export declare const PColumnDataJson: ResourceType;
11
14
  export type PColumnDataJsonResourceValue = {
12
15
  keyLength: number;
@@ -19,7 +22,8 @@ export type PColumnDataSuperPartitionedResourceValue = {
19
22
  superPartitionKeyLength: number;
20
23
  partitionKeyLength: number;
21
24
  };
22
- export declare function parseDataInfoResource(data: PlTreeNodeAccessor): DataInfo<ResourceInfo>;
25
+ export declare function parseDataInfoResource(data: PlTreeNodeAccessor): PFrameInternal.DataInfo<ResourceInfo>;
26
+ export declare function traverseParquetPartitionedResource(resource: PlTreeNodeAccessor): ParquetChunk<ResourceInfo>;
23
27
  export declare function makeDataInfoFromPColumnValues(spec: PColumnSpec, data: PColumnValues): JsonDataInfo;
24
28
  export declare function deriveLegacyPObjectId(spec: PObjectSpec, data: PlTreeNodeAccessor): PObjectId;
25
29
  export declare function deriveGlobalPObjectId(blockId: string, exportName: string): PObjectId;
@@ -1 +1 @@
1
- {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../src/pool/data.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAe,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAS,SAAS,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACzJ,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAYhF,wBAAiB,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAgB5D;AAYD,wBAAgB,QAAQ,CAAC,EAAE,EAAE,EAAE,EAC7B,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,EAClB,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,GACxB,QAAQ,CAAC,EAAE,CAAC,CAiBd;AAED,eAAO,MAAM,0BAA0B,kDAAmD,CAAC;AAC3F,eAAO,MAAM,+BAA+B,kDAG3C,CAAC;AACF,eAAO,MAAM,4BAA4B,kDAAqD,CAAC;AAC/F,eAAO,MAAM,iCAAiC,kDAG7C,CAAC;AACF,eAAO,MAAM,eAAe,kDAAwC,CAAC;AAErE,MAAM,MAAM,4BAA4B,GAAG;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,mCAAmC,GAAG;IAChD,kBAAkB,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,wCAAwC,GAAG;IACrD,uBAAuB,EAAE,MAAM,CAAC;IAChC,kBAAkB,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,kBAAkB,GACvB,QAAQ,CAAC,YAAY,CAAC,CAkJxB;AAED,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,WAAW,EACjB,IAAI,EAAE,aAAa,GAClB,YAAY,CAcd;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,GAAG,SAAS,CAK5F;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,CAEpF;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,CAEzF"}
1
+ {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../src/pool/data.ts"],"names":[],"mappings":";AAAA,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,YAAY,EAGjB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,aAAa,EAElB,KAAK,SAAS,EACd,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAWhF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAE5E,wBAAiB,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAmB3E;AAYD,wBAAgB,QAAQ,CAAC,EAAE,EAAE,EAAE,EAC7B,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,EACjC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,GACxB,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,CA4B7B;AAED,eAAO,MAAM,0BAA0B,kDAAmD,CAAC;AAC3F,eAAO,MAAM,+BAA+B,kDAG3C,CAAC;AACF,eAAO,MAAM,4BAA4B,kDAAqD,CAAC;AAC/F,eAAO,MAAM,iCAAiC,kDAG7C,CAAC;AACF,eAAO,MAAM,6BAA6B,kDAAsD,CAAC;AACjG,eAAO,MAAM,kCAAkC,kDAG9C,CAAC;AACF,eAAO,MAAM,eAAe,kDAAwC,CAAC;AAErE,MAAM,MAAM,4BAA4B,GAAG;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,mCAAmC,GAAG;IAChD,kBAAkB,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,wCAAwC,GAAG;IACrD,uBAAuB,EAAE,MAAM,CAAC;IAChC,kBAAkB,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,kBAAkB,GACvB,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC,CA0LvC;AAED,wBAAgB,kCAAkC,CAAC,QAAQ,EAAE,kBAAkB,GAAG,YAAY,CAAC,YAAY,CAAC,CAc3G;AAED,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,WAAW,EACjB,IAAI,EAAE,aAAa,GAClB,YAAY,CAcd;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,GAAG,SAAS,CAK5F;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,CAEpF;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,CAEzF"}
@@ -1 +1 @@
1
- {"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../src/pool/driver.ts"],"names":[],"mappings":"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"}
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.41.9",
3
+ "version": "1.41.11",
4
4
  "description": "Pl Middle Layer",
5
5
  "engines": {
6
6
  "node": ">=20.16.0"
@@ -22,31 +22,31 @@
22
22
  "keywords": [],
23
23
  "license": "UNLICENSED",
24
24
  "dependencies": {
25
- "@milaboratories/pframes-rs-node": "1.0.55",
25
+ "@milaboratories/pframes-rs-node": "1.0.57",
26
26
  "canonicalize": "~2.1.0",
27
27
  "denque": "^2.1.0",
28
28
  "lru-cache": "^11.1.0",
29
29
  "quickjs-emscripten": "0.31.0",
30
- "undici": "~7.10.0",
30
+ "undici": "~7.13.0",
31
31
  "utility-types": "^3.11.0",
32
- "yaml": "^2.7.0",
32
+ "yaml": "^2.8.0",
33
33
  "zod": "~3.23.8",
34
- "remeda": "^2.22.6",
34
+ "remeda": "^2.28.0",
35
35
  "@milaboratories/computable": "^2.6.3",
36
- "@platforma-sdk/block-tools": "^2.5.80",
37
- "@milaboratories/pl-http": "^1.1.4",
36
+ "@milaboratories/pl-http": "^1.1.5",
38
37
  "@milaboratories/resolve-helper": "^1.1.0",
39
- "@milaboratories/pl-drivers": "^1.8.2",
40
- "@milaboratories/pl-client": "^2.11.6",
41
- "@milaboratories/pl-model-middle-layer": "~1.8.6",
42
- "@milaboratories/pl-model-common": "~1.19.3",
38
+ "@milaboratories/pl-client": "^2.11.7",
39
+ "@milaboratories/pl-drivers": "^1.9.0",
40
+ "@milaboratories/pl-model-middle-layer": "~1.8.7",
41
+ "@milaboratories/pl-model-common": "~1.19.5",
42
+ "@platforma-sdk/block-tools": "^2.5.81",
43
43
  "@milaboratories/pl-tree": "~1.7.5",
44
- "@milaboratories/ts-helpers": "^1.4.3",
45
- "@platforma-sdk/workflow-tengo": "4.17.1",
46
- "@platforma-sdk/model": "~1.42.10",
44
+ "@platforma-sdk/model": "~1.42.15",
47
45
  "@milaboratories/pl-model-backend": "~1.1.2",
46
+ "@platforma-sdk/workflow-tengo": "4.17.1",
47
+ "@milaboratories/ts-helpers": "^1.4.3",
48
+ "@milaboratories/pl-errors": "^1.1.14",
48
49
  "@milaboratories/pl-config": "^1.6.3",
49
- "@milaboratories/pl-errors": "^1.1.13",
50
50
  "@milaboratories/pl-deployments": "^2.4.7"
51
51
  },
52
52
  "devDependencies": {
package/src/pool/data.ts CHANGED
@@ -1,4 +1,17 @@
1
- import type { BinaryChunk, DataInfo, JsonDataInfo, PColumnSpec, PColumnValue, PColumnValues, PlRef, PObjectId, PObjectSpec } from '@platforma-sdk/model';
1
+ import {
2
+ PFrameDriverError,
3
+ type BinaryChunk,
4
+ type JsonDataInfo,
5
+ type ParquetChunk,
6
+ type ParquetChunkMapping,
7
+ type ParquetChunkMetadata,
8
+ type PColumnSpec,
9
+ type PColumnValue,
10
+ type PColumnValues,
11
+ type PlRef,
12
+ type PObjectId,
13
+ type PObjectSpec,
14
+ } from '@platforma-sdk/model';
2
15
  import type { PlTreeNodeAccessor, ResourceInfo } from '@milaboratories/pl-tree';
3
16
  import { assertNever } from '@milaboratories/ts-helpers';
4
17
  import canonicalize from 'canonicalize';
@@ -10,20 +23,24 @@ import {
10
23
  } from '@milaboratories/pl-client';
11
24
  import type { Writable } from 'utility-types';
12
25
  import { createHash } from 'node:crypto';
26
+ import type { PFrameInternal } from '@milaboratories/pl-model-middle-layer';
13
27
 
14
- export function* allBlobs<B>(data: DataInfo<B>): Generator<B> {
28
+ export function* allBlobs<B>(data: PFrameInternal.DataInfo<B>): Generator<B> {
15
29
  switch (data.type) {
16
30
  case 'Json':
17
31
  return;
18
32
  case 'JsonPartitioned':
19
- for (const [, blob] of Object.entries(data.parts)) yield blob;
33
+ for (const blob of Object.values(data.parts)) yield blob;
20
34
  return;
21
35
  case 'BinaryPartitioned':
22
- for (const [, { index, values }] of Object.entries(data.parts)) {
36
+ for (const { index, values } of Object.values(data.parts)) {
23
37
  yield index;
24
38
  yield values;
25
39
  }
26
40
  return;
41
+ case 'ParquetPartitioned':
42
+ for (const { data: blob } of Object.values(data.parts)) yield blob;
43
+ return;
27
44
  default:
28
45
  assertNever(data);
29
46
  }
@@ -40,14 +57,17 @@ function mapValues<T extends object, TResult>(
40
57
  }
41
58
 
42
59
  export function mapBlobs<B1, B2>(
43
- data: DataInfo<B1>,
60
+ data: PFrameInternal.DataInfo<B1>,
44
61
  mapping: (blob: B1) => B2,
45
- ): DataInfo<B2> {
62
+ ): PFrameInternal.DataInfo<B2> {
46
63
  switch (data.type) {
47
64
  case 'Json':
48
65
  return { ...data };
49
66
  case 'JsonPartitioned':
50
- return { ...data, parts: mapValues(data.parts, mapping) };
67
+ return {
68
+ ...data,
69
+ parts: mapValues(data.parts, mapping),
70
+ };
51
71
  case 'BinaryPartitioned':
52
72
  return {
53
73
  ...data,
@@ -56,6 +76,14 @@ export function mapBlobs<B1, B2>(
56
76
  values: mapping(v.values),
57
77
  })),
58
78
  };
79
+ case 'ParquetPartitioned':
80
+ return {
81
+ ...data,
82
+ parts: mapValues(data.parts, (v) => ({
83
+ ...v,
84
+ data: mapping(v.data),
85
+ })),
86
+ };
59
87
  default:
60
88
  assertNever(data);
61
89
  }
@@ -71,6 +99,11 @@ export const PColumnDataBinarySuperPartitioned = resourceType(
71
99
  'PColumnData/Partitioned/BinaryPartitioned',
72
100
  '1',
73
101
  );
102
+ export const PColumnDataParquetPartitioned = resourceType('PColumnData/ParquetPartitioned', '1');
103
+ export const PColumnDataParquetSuperPartitioned = resourceType(
104
+ 'PColumnData/Partitioned/ParquetPartitioned',
105
+ '1',
106
+ );
74
107
  export const PColumnDataJson = resourceType('PColumnData/Json', '1');
75
108
 
76
109
  export type PColumnDataJsonResourceValue = {
@@ -89,12 +122,12 @@ export type PColumnDataSuperPartitionedResourceValue = {
89
122
 
90
123
  export function parseDataInfoResource(
91
124
  data: PlTreeNodeAccessor,
92
- ): DataInfo<ResourceInfo> {
93
- if (!data.getIsReadyOrError()) throw new Error('Data not ready.');
125
+ ): PFrameInternal.DataInfo<ResourceInfo> {
126
+ if (!data.getIsReadyOrError()) throw new PFrameDriverError('Data not ready.');
94
127
 
95
128
  const resourceData = data.getDataAsJson();
96
129
  if (resourceData === undefined)
97
- throw new Error('unexpected data info structure, no resource data');
130
+ throw new PFrameDriverError('unexpected data info structure, no resource data');
98
131
 
99
132
  if (resourceTypesEqual(data.resourceType, PColumnDataJson)) {
100
133
  const dataContent = resourceData as PColumnDataJsonResourceValue;
@@ -125,7 +158,7 @@ export function parseDataInfoResource(
125
158
  for (const superKey of data.listInputFields()) {
126
159
  const superPart = data.traverse({ field: superKey, errorIfFieldNotSet: true });
127
160
  const keys = superPart.listInputFields();
128
- if (keys === undefined) throw new Error(`no partition keys for super key ${superKey}`);
161
+ if (keys === undefined) throw new PFrameDriverError(`no partition keys for super key ${superKey}`);
129
162
 
130
163
  for (const key of keys) {
131
164
  const partKey = JSON.stringify([
@@ -166,13 +199,13 @@ export function parseDataInfoResource(
166
199
  parts[partKey] = part;
167
200
  }
168
201
  part.values = data.traverse({ field, errorIfFieldNotSet: true }).resourceInfo;
169
- } else throw new Error(`unrecognized part field name: ${field}`);
202
+ } else throw new PFrameDriverError(`unrecognized part field name: ${field}`);
170
203
  }
171
204
 
172
205
  // structure validation
173
206
  for (const [key, part] of Object.entries(parts)) {
174
- if (part.index === undefined) throw new Error(`no index for part ${key}`);
175
- if (part.values === undefined) throw new Error(`no values for part ${key}`);
207
+ if (part.index === undefined) throw new PFrameDriverError(`no index for part ${key}`);
208
+ if (part.values === undefined) throw new PFrameDriverError(`no values for part ${key}`);
176
209
  }
177
210
 
178
211
  return {
@@ -190,7 +223,7 @@ export function parseDataInfoResource(
190
223
  for (const superKey of data.listInputFields()) {
191
224
  const superData = data.traverse({ field: superKey, errorIfFieldNotSet: true });
192
225
  const keys = superData.listInputFields();
193
- if (keys === undefined) throw new Error(`no partition keys for super key ${superKey}`);
226
+ if (keys === undefined) throw new PFrameDriverError(`no partition keys for super key ${superKey}`);
194
227
 
195
228
  for (const field of keys) {
196
229
  if (field.endsWith('.index')) {
@@ -223,7 +256,7 @@ export function parseDataInfoResource(
223
256
  field,
224
257
  errorIfFieldNotSet: true,
225
258
  }).resourceInfo;
226
- } else throw new Error(`unrecognized part field name: ${field}`);
259
+ } else throw new PFrameDriverError(`unrecognized part field name: ${field}`);
227
260
  }
228
261
  }
229
262
 
@@ -232,9 +265,65 @@ export function parseDataInfoResource(
232
265
  partitionKeyLength: meta.superPartitionKeyLength + meta.partitionKeyLength,
233
266
  parts: parts as Record<string, BinaryChunk<ResourceInfo>>,
234
267
  };
268
+ } else if (resourceTypesEqual(data.resourceType, PColumnDataParquetPartitioned)) {
269
+ const meta = resourceData as PColumnDataPartitionedResourceValue;
270
+
271
+ const parts: Record<string, ParquetChunk<ResourceInfo>> = {};
272
+ for (const key of data.listInputFields()) {
273
+ const resource = data.traverse({ field: key, assertFieldType: 'Input', errorIfFieldNotSet: true });
274
+
275
+ parts[key] = traverseParquetPartitionedResource(resource);
276
+ }
277
+
278
+ return {
279
+ type: 'ParquetPartitioned',
280
+ partitionKeyLength: meta.partitionKeyLength,
281
+ parts,
282
+ };
283
+ } else if (resourceTypesEqual(data.resourceType, PColumnDataParquetSuperPartitioned)) {
284
+ const meta = resourceData as PColumnDataSuperPartitionedResourceValue;
285
+
286
+ const parts: Record<string, ParquetChunk<ResourceInfo>> = {};
287
+ for (const superKey of data.listInputFields()) {
288
+ const superPart = data.traverse({ field: superKey, errorIfFieldNotSet: true });
289
+ const keys = superPart.listInputFields();
290
+ if (keys === undefined) throw new PFrameDriverError(`no partition keys for super key ${superKey}`);
291
+
292
+ for (const key of keys) {
293
+ const resource = data.traverse({ field: key, errorIfFieldNotSet: true });
294
+
295
+ const partKey = JSON.stringify([
296
+ ...JSON.parse(superKey) as PColumnValue[],
297
+ ...JSON.parse(key) as PColumnValue[],
298
+ ]);
299
+ parts[partKey] = traverseParquetPartitionedResource(resource);
300
+ }
301
+ }
302
+
303
+ return {
304
+ type: 'ParquetPartitioned',
305
+ partitionKeyLength: meta.superPartitionKeyLength + meta.partitionKeyLength,
306
+ parts,
307
+ };
235
308
  }
236
309
 
237
- throw new Error(`unsupported resource type: ${resourceTypeToString(data.resourceType)}`);
310
+ throw new PFrameDriverError(`unsupported resource type: ${resourceTypeToString(data.resourceType)}`);
311
+ }
312
+
313
+ export function traverseParquetPartitionedResource(resource: PlTreeNodeAccessor): ParquetChunk<ResourceInfo> {
314
+ const blob = resource.traverse(
315
+ { field: 'blob', assertFieldType: 'Service', errorIfFieldNotSet: true },
316
+ ).resourceInfo;
317
+ const partInfo = resource.getDataAsJson() as ParquetChunkMetadata;
318
+ const mapping = resource.traverse(
319
+ { field: 'mapping', assertFieldType: 'Service', errorIfFieldNotSet: true },
320
+ ).getDataAsJson() as ParquetChunkMapping;
321
+
322
+ return {
323
+ data: blob,
324
+ ...partInfo,
325
+ ...mapping,
326
+ };
238
327
  }
239
328
 
240
329
  export function makeDataInfoFromPColumnValues(
@@ -245,7 +334,7 @@ export function makeDataInfoFromPColumnValues(
245
334
  const jsonData: Record<string, PColumnValue> = {};
246
335
  for (const { key, val } of data) {
247
336
  if (key.length !== keyLength)
248
- throw new Error(`inline column key length ${key.length} differs from axes count ${keyLength}`);
337
+ throw new PFrameDriverError(`inline column key length ${key.length} differs from axes count ${keyLength}`);
249
338
  jsonData[JSON.stringify(key)] = val;
250
339
  }
251
340
 
@@ -46,7 +46,7 @@ import {
46
46
  import { LRUCache } from 'lru-cache';
47
47
  import type { PollResource } from './ref_count_pool';
48
48
  import { RefCountResourcePool } from './ref_count_pool';
49
- import { allBlobs, makeDataInfoFromPColumnValues, mapBlobs, parseDataInfoResource } from './data';
49
+ import { allBlobs, makeDataInfoFromPColumnValues, mapBlobs, parseDataInfoResource, traverseParquetPartitionedResource } from './data';
50
50
  import { createHash } from 'node:crypto';
51
51
  import type { MiLogger } from '@milaboratories/ts-helpers';
52
52
  import { assertNever, emptyDir, ConcurrencyLimitingExecutor } from '@milaboratories/ts-helpers';
@@ -62,7 +62,7 @@ function blobKey(res: ResourceInfo): string {
62
62
  return String(res.id);
63
63
  }
64
64
 
65
- type InternalPFrameData = PFrameDef<DataInfo<ResourceInfo>>;
65
+ type InternalPFrameData = PFrameDef<PFrameInternal.DataInfo<ResourceInfo>>;
66
66
 
67
67
  const valueTypes: ValueType[] = ['Int', 'Long', 'Float', 'Double', 'String', 'Bytes'] as const;
68
68
 
@@ -537,14 +537,16 @@ export class PFrameDriver implements InternalPFrameDriver {
537
537
  def: PFrameDef<PColumnDataUniversal>,
538
538
  ctx: ComputableCtx,
539
539
  ): PFrameHandle {
540
- const internalData = def
540
+ const internalData: InternalPFrameData = def
541
541
  .filter((c) => valueTypes.find((t) => t === c.spec.valueType))
542
542
  .map((c) =>
543
543
  mapPObjectData(c, (d) =>
544
544
  isPlTreeNodeAccessor(d)
545
545
  ? parseDataInfoResource(d)
546
546
  : isDataInfo(d)
547
- ? mapDataInfo(d, (a) => a.resourceInfo)
547
+ ? d.type === 'ParquetPartitioned'
548
+ ? mapDataInfo(d, (a) => traverseParquetPartitionedResource(a))
549
+ : mapDataInfo(d, (a) => a.resourceInfo)
548
550
  : makeDataInfoFromPColumnValues(c.spec, d),
549
551
  ),
550
552
  );
@@ -782,7 +784,7 @@ function stableKeyFromFullPTableDef(data: FullPTableDef): string {
782
784
  return hash.digest().toString('hex');
783
785
  }
784
786
 
785
- function stableKeyFromPFrameData(data: PColumn<DataInfo<ResourceInfo>>[]): string {
787
+ function stableKeyFromPFrameData(data: PColumn<PFrameInternal.DataInfo<ResourceInfo>>[]): string {
786
788
  const orderedData = [...data].map((column) =>
787
789
  mapPObjectData(column, (r) => {
788
790
  let result: {
@@ -825,6 +827,19 @@ function stableKeyFromPFrameData(data: PColumn<DataInfo<ResourceInfo>>[]): strin
825
827
  })),
826
828
  };
827
829
  break;
830
+ case 'ParquetPartitioned':
831
+ result = {
832
+ type: r.type,
833
+ keyLength: r.partitionKeyLength,
834
+ payload: Object.entries(r.parts).map(([part, info]) => ({
835
+ key: part,
836
+ value: info.dataDigest || [
837
+ blobKey(info.data),
838
+ JSON.stringify({ axes: info.axes, column: info.column }),
839
+ ] as const,
840
+ })),
841
+ };
842
+ break;
828
843
  default:
829
844
  throw new PFrameDriverError(`unsupported resource type: ${JSON.stringify(type satisfies never)}`);
830
845
  }