@milaboratories/pframes-rs-node 1.1.37 → 1.1.38

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,5 +1,5 @@
1
1
  import { AddonSymbol } from "./addon.js";
2
- import { dump, hashColumnId, hashCreateTableRequestColumnId, hashCreateTableV2RequestColumnId, hashFilterColumnId, hashSortingColumnId, hashTableColumnId, hashUniqueValuesRequestColumnId } from "./dump.js";
2
+ import { dump, hashAddColumnEntry, hashColumnId, hashDataQuery, hashUniqueValuesRequestColumnId } from "./dump.js";
3
3
  import { ulid } from "ulid";
4
4
  import { AbortError, PFrameError, ensureError, isAbortError } from "@milaboratories/pl-model-common";
5
5
  import { PerfTimer } from "@milaboratories/helpers";
@@ -36,26 +36,32 @@ var PFrame = class {
36
36
  throw error;
37
37
  }
38
38
  }
39
- addColumnSpec(columnId, columnSpec) {
39
+ async addColumns(columns, ops) {
40
40
  const requestId = ulid();
41
41
  dump([`${this.id}`, `${requestId}.json`], {
42
42
  timeStamp: Date.now(),
43
- requestType: "addColumnSpec",
44
- requestData: {
45
- columnId: hashColumnId(columnId),
46
- columnSpec
47
- }
43
+ requestType: "addColumns",
44
+ requestData: { columns: columns.map(hashAddColumnEntry) }
48
45
  }, this.#logger);
49
- dump([
50
- `${this.id}`,
51
- `data`,
52
- `${hashColumnId(columnId)}.spec`
53
- ], { ...columnSpec }, this.#logger);
46
+ for (const column of columns) {
47
+ const hashedId = hashColumnId(column.id);
48
+ dump([
49
+ `${this.id}`,
50
+ `data`,
51
+ `${hashedId}.typespec`
52
+ ], { ...column.typeSpec }, this.#logger);
53
+ dump([
54
+ `${this.id}`,
55
+ `data`,
56
+ `${hashedId}.datainfo`
57
+ ], { ...column.data }, this.#logger);
58
+ }
54
59
  try {
55
- return AddonSymbol.pFrameAddColumnSpec(this.#frame, columnId, columnSpec);
60
+ ops?.signal?.throwIfAborted();
61
+ return await AddonSymbol.pFrameAddColumns(this.#frame, columns, ops?.signal);
56
62
  } catch (err) {
57
- const error = new PFrameError(`PFrame addColumnSpec request failed`);
58
- error.cause = /* @__PURE__ */ new Error(`PFrame ${this.id} addColumnSpec request ${requestId} failed, columnId: ${JSON.stringify(columnId)}, columnSpec: ${JSON.stringify(columnSpec)}, error:\n${ensureError(err)}`);
63
+ const error = new PFrameError(`PFrame addColumns request failed`);
64
+ error.cause = /* @__PURE__ */ new Error(`PFrame ${this.id} addColumns request ${requestId} failed, columns: ${JSON.stringify(columns)}, error:\n${ensureError(err)}`);
59
65
  throw error;
60
66
  }
61
67
  }
@@ -107,30 +113,6 @@ var PFrame = class {
107
113
  throw error;
108
114
  }
109
115
  }
110
- setColumnData(columnId, dataInfo, ops) {
111
- const requestId = ulid();
112
- dump([`${this.id}`, `${requestId}.json`], {
113
- timeStamp: Date.now(),
114
- requestType: "setColumnData",
115
- requestData: {
116
- columnId: hashColumnId(columnId),
117
- dataInfo
118
- }
119
- }, this.#logger);
120
- dump([
121
- `${this.id}`,
122
- `data`,
123
- `${hashColumnId(columnId)}.datainfo`
124
- ], { ...dataInfo }, this.#logger);
125
- try {
126
- ops?.signal?.throwIfAborted();
127
- return AddonSymbol.pFrameSetColumnData(this.#frame, columnId, dataInfo, ops?.signal);
128
- } catch (err) {
129
- const error = new PFrameError(`PFrame setColumnData request failed`);
130
- error.cause = /* @__PURE__ */ new Error(`PFrame ${this.id} setColumnData request ${requestId} failed, columnId: ${JSON.stringify(columnId)}, dataInfo: ${JSON.stringify(dataInfo)}, error:\n${ensureError(err)}`);
131
- throw error;
132
- }
133
- }
134
116
  dispose() {
135
117
  const requestId = ulid();
136
118
  dump([`${this.id}`, `${requestId}.json`], {
@@ -149,117 +131,28 @@ var PFrame = class {
149
131
  [Symbol.dispose]() {
150
132
  this.dispose();
151
133
  }
152
- async findColumns(request) {
153
- const requestId = ulid();
154
- dump([`${this.id}`, `${requestId}.json`], {
155
- timeStamp: Date.now(),
156
- requestType: "findColumns",
157
- requestData: request
158
- }, this.#logger);
134
+ createTable(tableId, dataQuery) {
159
135
  const timer = PerfTimer.start();
160
- try {
161
- return await AddonSymbol.pFrameFindColumns(this.#frame, request);
162
- } catch (err) {
163
- const error = new PFrameError(`PFrame findColumns request failed`);
164
- error.cause = /* @__PURE__ */ new Error(`PFrame ${this.id} findColumns request ${requestId} failed, request: ${JSON.stringify(request)}, error:\n${ensureError(err)}`);
165
- throw error;
166
- } finally {
167
- this.#logger("info", `PFrame ${this.id} findColumns request ${requestId} took ${timer.elapsed()}`);
168
- }
169
- }
170
- async deleteColumn(request) {
171
- const requestId = ulid();
172
- dump([`${this.id}`, `${requestId}.json`], {
173
- timeStamp: Date.now(),
174
- requestType: "deleteColumn",
175
- requestData: request
176
- }, this.#logger);
177
- const timer = PerfTimer.start();
178
- try {
179
- return await AddonSymbol.pFrameDeleteColumn(this.#frame, request);
180
- } catch (err) {
181
- const error = new PFrameError(`PFrame deleteColumn request failed`);
182
- error.cause = /* @__PURE__ */ new Error(`PFrame ${this.id} deleteColumn request ${requestId} failed, request: ${JSON.stringify(request)}, error:\n${ensureError(err)}`);
183
- throw error;
184
- } finally {
185
- this.#logger("info", `PFrame ${this.id} deleteColumn request ${requestId} took ${timer.elapsed()}`);
186
- }
187
- }
188
- async getColumnSpec(columnId) {
189
- const requestId = ulid();
190
- dump([`${this.id}`, `${requestId}.json`], {
191
- timeStamp: Date.now(),
192
- requestType: "getColumnSpec",
193
- requestData: { columnId: hashColumnId(columnId) }
194
- }, this.#logger);
195
- try {
196
- return await AddonSymbol.pFrameGetColumnSpec(this.#frame, columnId);
197
- } catch (err) {
198
- const error = new PFrameError(`PFrame getColumnSpec request failed`);
199
- error.cause = /* @__PURE__ */ new Error(`PFrame ${this.id} getColumnSpec request ${requestId} failed, columnId: ${JSON.stringify(columnId)}, error:\n${ensureError(err)}`);
200
- throw error;
201
- }
202
- }
203
- async listColumns() {
204
- const requestId = ulid();
205
- dump([`${this.id}`, `${requestId}.json`], {
206
- timeStamp: Date.now(),
207
- requestType: "listColumns"
208
- }, this.#logger);
209
- try {
210
- return await AddonSymbol.pFrameListColumns(this.#frame);
211
- } catch (err) {
212
- const error = new PFrameError(`PFrame listColumns request failed`);
213
- error.cause = /* @__PURE__ */ new Error(`PFrame ${this.id} listColumns request ${requestId} failed, error:\n${ensureError(err)}`);
214
- throw error;
215
- }
216
- }
217
- createTable(requestId, request) {
218
136
  const dumpData = {
219
137
  timeStamp: Date.now(),
220
138
  requestType: "createTable",
221
- requestData: hashCreateTableRequestColumnId(request)
139
+ requestData: hashDataQuery(dataQuery)
222
140
  };
223
- dump([`${this.id}`, `${requestId}.json`], dumpData, this.#logger);
141
+ dump([`${this.id}`, `${tableId}.json`], dumpData, this.#logger);
224
142
  dump([
225
143
  `${this.id}`,
226
- `${requestId}`,
227
- `${requestId}.json`
144
+ `${tableId}`,
145
+ `${tableId}.json`
228
146
  ], dumpData, this.#logger);
229
- const timer = PerfTimer.start();
230
147
  try {
231
- const boxed = AddonSymbol.pFrameCreateTable(this.#frame, requestId, request);
232
- return new PTable(this, requestId, boxed, this.#logger);
148
+ const boxed = AddonSymbol.pFrameCreateTable(this.#frame, tableId, dataQuery);
149
+ return new PTable(this, tableId, boxed, this.#logger);
233
150
  } catch (err) {
234
151
  const error = new PFrameError(`PFrame createTable request failed`);
235
- error.cause = /* @__PURE__ */ new Error(`PFrame ${this.id} createTable request ${requestId} failed, request: ${JSON.stringify(request)}, error:\n${ensureError(err)}`);
152
+ error.cause = /* @__PURE__ */ new Error(`PFrame ${this.id} createTable request ${tableId} failed, error:\n${ensureError(err)}`);
236
153
  throw error;
237
154
  } finally {
238
- this.#logger("info", `PFrame ${this.id} createTable request ${requestId} took ${timer.elapsed()}`);
239
- }
240
- }
241
- createTableV2(requestId, request) {
242
- const timer = PerfTimer.start();
243
- const dumpData = {
244
- timeStamp: Date.now(),
245
- requestType: "createTableV2",
246
- requestData: hashCreateTableV2RequestColumnId(request)
247
- };
248
- dump([`${this.id}`, `${requestId}.json`], dumpData, this.#logger);
249
- dump([
250
- `${this.id}`,
251
- `${requestId}`,
252
- `${requestId}.json`
253
- ], dumpData, this.#logger);
254
- try {
255
- const boxed = AddonSymbol.pFrameCreateTableV2(this.#frame, requestId, request);
256
- return new PTable(this, requestId, boxed, this.#logger);
257
- } catch (err) {
258
- const error = new PFrameError(`PFrame createTableV2 request failed`);
259
- error.cause = /* @__PURE__ */ new Error(`PFrame ${this.id} createTableV2 request ${requestId} failed, error:\n${ensureError(err)}`);
260
- throw error;
261
- } finally {
262
- this.#logger("info", `PFrame ${this.id} createTableV2 request ${requestId} took ${timer.elapsed()}`);
155
+ this.#logger("info", `PFrame ${this.id} createTable request ${tableId} took ${timer.elapsed()}`);
263
156
  }
264
157
  }
265
158
  async getUniqueValues(request, ops) {
@@ -284,7 +177,7 @@ var PFrame = class {
284
177
  }
285
178
  }
286
179
  };
287
- var PTable = class PTable {
180
+ var PTable = class {
288
181
  #frame;
289
182
  #table;
290
183
  #id;
@@ -299,43 +192,6 @@ var PTable = class PTable {
299
192
  this.#logger = logger;
300
193
  this.#logger("info", `PTable ${this.id} created`);
301
194
  }
302
- getSpec() {
303
- const requestId = ulid();
304
- dump([
305
- `${this.#frame.id}`,
306
- `${this.id}`,
307
- `${requestId}.json`
308
- ], {
309
- timeStamp: Date.now(),
310
- requestType: "getSpec"
311
- }, this.#logger);
312
- try {
313
- return AddonSymbol.pTableGetSpec(this.#table);
314
- } catch (err) {
315
- const error = new PFrameError(`PTable getSpec request failed`);
316
- error.cause = /* @__PURE__ */ new Error(`PTable ${this.id} getSpec request ${requestId} failed, error:\n${ensureError(err)}`);
317
- throw error;
318
- }
319
- }
320
- getColumnIndices(columnIds) {
321
- const requestId = ulid();
322
- dump([
323
- `${this.#frame.id}`,
324
- `${this.id}`,
325
- `${requestId}.json`
326
- ], {
327
- timeStamp: Date.now(),
328
- requestType: "getColumnIndices",
329
- requestData: { columnIds: columnIds.map(hashTableColumnId) }
330
- }, this.#logger);
331
- try {
332
- return AddonSymbol.pTableGetColumnIndices(this.#table, columnIds);
333
- } catch (err) {
334
- const error = new PFrameError(`PTable getColumnIndices request failed`);
335
- error.cause = /* @__PURE__ */ new Error(`PTable ${this.id} getColumnIndices request ${requestId} failed, columnIds: ${JSON.stringify(columnIds)}, error:\n${ensureError(err)}`);
336
- throw error;
337
- }
338
- }
339
195
  async getFootprint(ops) {
340
196
  const requestId = ulid();
341
197
  dump([
@@ -348,7 +204,7 @@ var PTable = class PTable {
348
204
  }, this.#logger);
349
205
  try {
350
206
  ops?.signal?.throwIfAborted();
351
- return await AddonSymbol.pTableGetFootprint(this.#table, ops?.signal);
207
+ return await AddonSymbol.pTableGetFootprint(this.#table, ops?.withPredecessors ?? false, ops?.signal);
352
208
  } catch (err) {
353
209
  if (isAbortError(err)) throw new AbortError(`PTable ${this.id} getFootprint request ${requestId} cancelled`);
354
210
  const error = new PFrameError(`PTable getFootprint request failed`);
@@ -411,56 +267,6 @@ var PTable = class PTable {
411
267
  this.#logger("info", `PTable ${this.id} getData request ${requestId} finished, took ${timer.elapsed()} (${rowCount} rows)`);
412
268
  }
413
269
  }
414
- filter(requestId, request) {
415
- const dumpData = {
416
- timeStamp: Date.now(),
417
- table: this.id,
418
- requestType: "filter",
419
- requestData: { filters: request.map(hashFilterColumnId) }
420
- };
421
- dump([`${this.#frame.id}`, `${requestId}.json`], dumpData, this.#logger);
422
- dump([
423
- `${this.#frame.id}`,
424
- `${requestId}`,
425
- `${requestId}.json`
426
- ], dumpData, this.#logger);
427
- const timer = PerfTimer.start();
428
- try {
429
- const boxed = AddonSymbol.pTableFilter(this.#table, requestId, request);
430
- return new PTable(this.#frame, requestId, boxed, this.#logger);
431
- } catch (err) {
432
- const error = new PFrameError(`PTable filter request failed`);
433
- error.cause = /* @__PURE__ */ new Error(`PTable ${this.id} filter request ${requestId} failed, request: ${JSON.stringify(request)}, error:\n${ensureError(err)}`);
434
- throw error;
435
- } finally {
436
- this.#logger("info", `PTable ${this.id} filter request ${requestId} took ${timer.elapsed()}`);
437
- }
438
- }
439
- sort(requestId, request) {
440
- const dumpData = {
441
- timeStamp: Date.now(),
442
- table: this.id,
443
- requestType: "sort",
444
- requestData: request.map(hashSortingColumnId)
445
- };
446
- dump([`${this.#frame.id}`, `${requestId}.json`], dumpData, this.#logger);
447
- dump([
448
- `${this.#frame.id}`,
449
- `${requestId}`,
450
- `${requestId}.json`
451
- ], dumpData, this.#logger);
452
- const timer = PerfTimer.start();
453
- try {
454
- const boxed = AddonSymbol.pTableSort(this.#table, requestId, request);
455
- return new PTable(this.#frame, requestId, boxed, this.#logger);
456
- } catch (err) {
457
- const error = new PFrameError(`PTable sort request failed`);
458
- error.cause = /* @__PURE__ */ new Error(`PTable ${this.id} sort request ${requestId} failed, request: ${JSON.stringify(request)}, error:\n${ensureError(err)}`);
459
- throw error;
460
- } finally {
461
- this.#logger("info", `PTable ${this.id} sort request ${requestId} took ${timer.elapsed()}`);
462
- }
463
- }
464
270
  dispose() {
465
271
  const requestId = ulid();
466
272
  dump([
@@ -1 +1 @@
1
- {"version":3,"file":"wrapper.js","names":["#frame","#id","#logger","#table"],"sources":["../export/wrapper.ts"],"sourcesContent":["import { ulid } from \"ulid\";\nimport {\n AbortError,\n type PColumnInfo,\n type PColumnSpec,\n PFrameError,\n type PObjectId,\n type PTableColumnId,\n type PTableColumnSpec,\n type PTableRecordFilter,\n type PTableShape,\n type PTableSorting,\n type PTableVector,\n type TableRange,\n type UniqueValuesRequest,\n type UniqueValuesResponse,\n type DataQuery,\n ensureError,\n isAbortError,\n} from \"@milaboratories/pl-model-common\";\nimport type { PFrameInternal } from \"@milaboratories/pl-model-middle-layer\";\nimport { PerfTimer } from \"@milaboratories/helpers\";\nimport type { NodeFrameSymbol, NodeTableSymbol } from \"./addon-def\";\nimport { AddonSymbol } from \"./addon\";\nimport {\n dump,\n hashColumnId,\n hashTableColumnId,\n hashFilterColumnId,\n hashUniqueValuesRequestColumnId,\n hashSortingColumnId,\n hashCreateTableRequestColumnId,\n hashCreateTableV2RequestColumnId,\n} from \"./dump\";\n\nexport async function pprofDump(): Promise<Uint8Array> {\n try {\n return await AddonSymbol.pprofDump();\n } catch (err: unknown) {\n const error = new PFrameError(`PFrame pprofDump failed`);\n error.cause = ensureError(err);\n throw error;\n }\n}\n\nexport class PFrame implements PFrameInternal.PFrameV13 {\n readonly #frame: NodeFrameSymbol;\n\n readonly #id: PFrameInternal.PFrameId;\n\n get id(): PFrameInternal.PFrameId {\n return this.#id;\n }\n\n readonly #logger: PFrameInternal.Logger;\n\n constructor(options: PFrameInternal.PFrameOptionsV2) {\n this.#id = options.frameId;\n this.#logger = options.logger ?? (() => {});\n\n dump(\n [`${this.id}`, `${this.id}.json`],\n {\n timeStamp: Date.now(),\n requestType: \"create\",\n },\n this.#logger,\n );\n\n try {\n this.#frame = AddonSymbol.pFrameCreate(options.spillPath, options.logger);\n this.#logger(\"info\", `PFrame ${this.id} created`);\n } catch (err: unknown) {\n const error = new PFrameError(`PFrame creation failed`);\n error.cause = new Error(\n `PFrame ${this.id} creation failed, ` +\n `logger: ${this.#logger?.toString()}, ` +\n `error:\\n` +\n `${ensureError(err)}`,\n );\n throw error;\n }\n }\n\n addColumnSpec(columnId: PObjectId, columnSpec: PColumnSpec): void {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: \"addColumnSpec\",\n requestData: {\n columnId: hashColumnId(columnId),\n columnSpec,\n },\n },\n this.#logger,\n );\n\n dump(\n [`${this.id}`, `data`, `${hashColumnId(columnId)}.spec`],\n {\n ...columnSpec,\n },\n this.#logger,\n );\n\n try {\n return AddonSymbol.pFrameAddColumnSpec(this.#frame, columnId, columnSpec);\n } catch (err: unknown) {\n const error = new PFrameError(`PFrame addColumnSpec request failed`);\n error.cause = new Error(\n `PFrame ${this.id} addColumnSpec request ${requestId} failed, ` +\n `columnId: ${JSON.stringify(columnId)}, ` +\n `columnSpec: ${JSON.stringify(columnSpec)}, ` +\n `error:\\n` +\n `${ensureError(err)}`,\n );\n throw error;\n }\n }\n\n setDataSource(dataSource: PFrameInternal.PFrameDataSourceV2): void {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: \"setDataSource\",\n },\n this.#logger,\n );\n\n const wrappedDataSource = {\n preloadBlob: async (blobIds: PFrameInternal.PFrameBlobId[]): Promise<void> => {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: \"preloadBlob\",\n requestData: {\n blobIds,\n },\n },\n this.#logger,\n );\n\n this.#logger(\n \"info\",\n `PFrame ${this.id} preloadBlob started, blobIds: ${JSON.stringify(blobIds)}`,\n );\n const timer = PerfTimer.start();\n try {\n return await dataSource.preloadBlob(blobIds);\n } finally {\n this.#logger(\n \"info\",\n `PFrame ${this.id} preloadBlob finished, took ${timer.elapsed()} (${blobIds.length} blobs)`,\n );\n }\n },\n resolveBlobContent: async (blobId: PFrameInternal.PFrameBlobId): Promise<Uint8Array> => {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: \"resolveBlobContent\",\n requestData: {\n blobId,\n },\n },\n this.#logger,\n );\n\n const blob = await dataSource.resolveBlobContent(blobId);\n this.#logger(\"info\", `PFrame ${this.id} resolved blob ${blobId}`);\n dump([`${this.id}`, `data`, `${blobId}`], blob, this.#logger);\n\n return blob;\n },\n parquetServer: dataSource.parquetServer,\n };\n\n try {\n return AddonSymbol.pFrameSetDataSource(this.#frame, wrappedDataSource);\n } catch (err: unknown) {\n const error = new PFrameError(`PFrame setDataSource request failed`);\n error.cause = new Error(\n `PFrame ${this.id} setDataSource request ${requestId} failed, ` +\n `dataSource: ${dataSource.toString()}, ` +\n `error:\\n` +\n `${ensureError(err)}`,\n );\n throw error;\n }\n }\n\n setColumnData(\n columnId: PObjectId,\n dataInfo: PFrameInternal.DataInfo<PFrameInternal.PFrameBlobId>,\n ops?: {\n signal?: AbortSignal;\n },\n ): Promise<void> {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: \"setColumnData\",\n requestData: {\n columnId: hashColumnId(columnId),\n dataInfo,\n },\n },\n this.#logger,\n );\n\n dump(\n [`${this.id}`, `data`, `${hashColumnId(columnId)}.datainfo`],\n {\n ...dataInfo,\n },\n this.#logger,\n );\n\n try {\n ops?.signal?.throwIfAborted();\n return AddonSymbol.pFrameSetColumnData(this.#frame, columnId, dataInfo, ops?.signal);\n } catch (err: unknown) {\n const error = new PFrameError(`PFrame setColumnData request failed`);\n error.cause = new Error(\n `PFrame ${this.id} setColumnData request ${requestId} failed, ` +\n `columnId: ${JSON.stringify(columnId)}, ` +\n `dataInfo: ${JSON.stringify(dataInfo)}, ` +\n `error:\\n` +\n `${ensureError(err)}`,\n );\n throw error;\n }\n }\n\n dispose(): void {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: \"dispose\",\n },\n this.#logger,\n );\n\n try {\n AddonSymbol.pFrameDispose(this.#frame);\n this.#logger(\"info\", `PFrame ${this.id} disposed`);\n } catch (err: unknown) {\n const error = new PFrameError(`PFrame dispose request failed`);\n error.cause = new Error(\n `PFrame ${this.id} dispose request ${requestId} failed, ` +\n `error:\\n` +\n `${ensureError(err)}`,\n );\n throw error;\n }\n }\n\n [Symbol.dispose](): void {\n this.dispose();\n }\n\n async findColumns(\n request: PFrameInternal.FindColumnsRequest,\n ): Promise<PFrameInternal.FindColumnsResponse> {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: \"findColumns\",\n requestData: request,\n },\n this.#logger,\n );\n\n const timer = PerfTimer.start();\n try {\n return await AddonSymbol.pFrameFindColumns(this.#frame, request);\n } catch (err: unknown) {\n const error = new PFrameError(`PFrame findColumns request failed`);\n error.cause = new Error(\n `PFrame ${this.id} findColumns request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${ensureError(err)}`,\n );\n throw error;\n } finally {\n this.#logger(\n \"info\",\n `PFrame ${this.id} findColumns request ${requestId} took ${timer.elapsed()}`,\n );\n }\n }\n\n async deleteColumn(\n request: PFrameInternal.DeleteColumnFromColumnsRequest,\n ): Promise<PFrameInternal.DeleteColumnFromColumnsResponse> {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: \"deleteColumn\",\n requestData: request,\n },\n this.#logger,\n );\n\n const timer = PerfTimer.start();\n try {\n return await AddonSymbol.pFrameDeleteColumn(this.#frame, request);\n } catch (err: unknown) {\n const error = new PFrameError(`PFrame deleteColumn request failed`);\n error.cause = new Error(\n `PFrame ${this.id} deleteColumn request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${ensureError(err)}`,\n );\n throw error;\n } finally {\n this.#logger(\n \"info\",\n `PFrame ${this.id} deleteColumn request ${requestId} took ${timer.elapsed()}`,\n );\n }\n }\n\n async getColumnSpec(columnId: PObjectId): Promise<PColumnSpec | null> {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: \"getColumnSpec\",\n requestData: {\n columnId: hashColumnId(columnId),\n },\n },\n this.#logger,\n );\n\n try {\n return await AddonSymbol.pFrameGetColumnSpec(this.#frame, columnId);\n } catch (err: unknown) {\n const error = new PFrameError(`PFrame getColumnSpec request failed`);\n error.cause = new Error(\n `PFrame ${this.id} getColumnSpec request ${requestId} failed, ` +\n `columnId: ${JSON.stringify(columnId)}, ` +\n `error:\\n` +\n `${ensureError(err)}`,\n );\n throw error;\n }\n }\n\n async listColumns(): Promise<PColumnInfo[]> {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: \"listColumns\",\n },\n this.#logger,\n );\n\n try {\n return await AddonSymbol.pFrameListColumns(this.#frame);\n } catch (err: unknown) {\n const error = new PFrameError(`PFrame listColumns request failed`);\n error.cause = new Error(\n `PFrame ${this.id} listColumns request ${requestId} failed, ` +\n `error:\\n` +\n `${ensureError(err)}`,\n );\n throw error;\n }\n }\n\n createTable(\n requestId: PFrameInternal.PTableId,\n request: PFrameInternal.CreateTableRequestV4,\n ): PTable {\n const dumpData = {\n timeStamp: Date.now(),\n requestType: \"createTable\",\n requestData: hashCreateTableRequestColumnId(request),\n };\n dump([`${this.id}`, `${requestId}.json`], dumpData, this.#logger);\n dump([`${this.id}`, `${requestId}`, `${requestId}.json`], dumpData, this.#logger);\n\n const timer = PerfTimer.start();\n try {\n const boxed = AddonSymbol.pFrameCreateTable(this.#frame, requestId, request);\n return new PTable(this, requestId, boxed, this.#logger);\n } catch (err: unknown) {\n const error = new PFrameError(`PFrame createTable request failed`);\n error.cause = new Error(\n `PFrame ${this.id} createTable request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${ensureError(err)}`,\n );\n throw error;\n } finally {\n this.#logger(\n \"info\",\n `PFrame ${this.id} createTable request ${requestId} took ${timer.elapsed()}`,\n );\n }\n }\n\n createTableV2(\n requestId: PFrameInternal.PTableId,\n request: {\n tableSpec: PTableColumnSpec[];\n dataQuery: DataQuery;\n },\n ): PTable {\n const timer = PerfTimer.start();\n const dumpData = {\n timeStamp: Date.now(),\n requestType: \"createTableV2\",\n requestData: hashCreateTableV2RequestColumnId(request),\n };\n dump([`${this.id}`, `${requestId}.json`], dumpData, this.#logger);\n dump([`${this.id}`, `${requestId}`, `${requestId}.json`], dumpData, this.#logger);\n\n try {\n const boxed = AddonSymbol.pFrameCreateTableV2(this.#frame, requestId, request);\n return new PTable(this, requestId, boxed, this.#logger);\n } catch (err: unknown) {\n const error = new PFrameError(`PFrame createTableV2 request failed`);\n error.cause = new Error(\n `PFrame ${this.id} createTableV2 request ${requestId} failed, ` +\n `error:\\n` +\n `${ensureError(err)}`,\n );\n throw error;\n } finally {\n this.#logger(\n \"info\",\n `PFrame ${this.id} createTableV2 request ${requestId} took ${timer.elapsed()}`,\n );\n }\n }\n\n async getUniqueValues(\n request: UniqueValuesRequest,\n ops?: {\n signal?: AbortSignal;\n },\n ): Promise<UniqueValuesResponse> {\n const requestId = ulid() as PFrameInternal.PTableId;\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: \"getUniqueValues\",\n requestData: hashUniqueValuesRequestColumnId(request),\n },\n this.#logger,\n );\n\n this.#logger(\"info\", `PFrame ${this.id} getUniqueValues request ${requestId} started`);\n const timer = PerfTimer.start();\n try {\n ops?.signal?.throwIfAborted();\n return await AddonSymbol.pFrameGetUniqueValues(this.#frame, requestId, request, ops?.signal);\n } catch (err: unknown) {\n if (isAbortError(err)) {\n throw new AbortError(`PFrame ${this.id} getUniqueValues request ${requestId} cancelled`);\n }\n const error = new PFrameError(`PFrame getUniqueValues request failed`);\n error.cause = new Error(\n `PFrame ${this.id} getUniqueValues request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${ensureError(err)}`,\n );\n throw error;\n } finally {\n this.#logger(\n \"info\",\n `PFrame ${this.id} getUniqueValues request ${requestId} finished, took ${timer.elapsed()}`,\n );\n }\n }\n}\n\nclass PTable implements PFrameInternal.PTableV8 {\n readonly #frame: PFrame;\n readonly #table: NodeTableSymbol;\n\n readonly #id: string;\n\n get id(): string {\n return this.#id;\n }\n\n readonly #logger: PFrameInternal.Logger;\n\n constructor(frame: PFrame, id: string, table: NodeTableSymbol, logger: PFrameInternal.Logger) {\n this.#frame = frame;\n this.#table = table;\n this.#id = id;\n this.#logger = logger;\n this.#logger(\"info\", `PTable ${this.id} created`);\n }\n\n getSpec(): PTableColumnSpec[] {\n const requestId = ulid();\n dump(\n [`${this.#frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: \"getSpec\",\n },\n this.#logger,\n );\n\n try {\n return AddonSymbol.pTableGetSpec(this.#table);\n } catch (err: unknown) {\n const error = new PFrameError(`PTable getSpec request failed`);\n error.cause = new Error(\n `PTable ${this.id} getSpec request ${requestId} failed, ` +\n `error:\\n` +\n `${ensureError(err)}`,\n );\n throw error;\n }\n }\n\n getColumnIndices(columnIds: PTableColumnId[]): number[] {\n const requestId = ulid();\n dump(\n [`${this.#frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: \"getColumnIndices\",\n requestData: {\n columnIds: columnIds.map(hashTableColumnId),\n },\n },\n this.#logger,\n );\n\n try {\n return AddonSymbol.pTableGetColumnIndices(this.#table, columnIds);\n } catch (err: unknown) {\n const error = new PFrameError(`PTable getColumnIndices request failed`);\n error.cause = new Error(\n `PTable ${this.id} getColumnIndices request ${requestId} failed, ` +\n `columnIds: ${JSON.stringify(columnIds)}, ` +\n `error:\\n` +\n `${ensureError(err)}`,\n );\n throw error;\n }\n }\n\n async getFootprint(ops?: { signal?: AbortSignal }): Promise<number> {\n const requestId = ulid();\n dump(\n [`${this.#frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: \"getFootprint\",\n },\n this.#logger,\n );\n\n try {\n ops?.signal?.throwIfAborted();\n return await AddonSymbol.pTableGetFootprint(this.#table, ops?.signal);\n } catch (err: unknown) {\n if (isAbortError(err)) {\n throw new AbortError(`PTable ${this.id} getFootprint request ${requestId} cancelled`);\n }\n const error = new PFrameError(`PTable getFootprint request failed`);\n error.cause = new Error(\n `PTable ${this.id} getFootprint request ${requestId} failed, ` +\n `error:\\n` +\n `${ensureError(err)}`,\n );\n throw error;\n }\n }\n\n async getShape(ops?: { signal?: AbortSignal }): Promise<PTableShape> {\n const requestId = ulid();\n dump(\n [`${this.#frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: \"getShape\",\n },\n this.#logger,\n );\n\n this.#logger(\"info\", `PTable ${this.id} getShape request ${requestId} started`);\n const timer = PerfTimer.start();\n try {\n ops?.signal?.throwIfAborted();\n return await AddonSymbol.pTableGetShape(this.#table, ops?.signal);\n } catch (err: unknown) {\n if (isAbortError(err)) {\n throw new AbortError(`PTable ${this.id} getShape request ${requestId} cancelled`);\n }\n const error = new PFrameError(`PTable getShape request failed`);\n error.cause = new Error(\n `PTable ${this.id} getShape request ${requestId} failed, ` +\n `error:\\n` +\n `${ensureError(err)}`,\n );\n throw error;\n } finally {\n this.#logger(\n \"info\",\n `PTable ${this.id} getShape request ${requestId} finished, took ${timer.elapsed()}`,\n );\n }\n }\n\n async getData(\n columnIndices: number[],\n ops?: {\n range?: TableRange | undefined;\n signal?: AbortSignal | undefined;\n },\n ): Promise<PTableVector[]> {\n const requestId = ulid() as PFrameInternal.PTableId;\n dump(\n [`${this.#frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: \"getData\",\n requestData: {\n columnIndices,\n range: ops?.range ?? null,\n },\n },\n this.#logger,\n );\n\n this.#logger(\"info\", `PTable ${this.id} getData request ${requestId} started`);\n let rowCount = 0;\n const timer = PerfTimer.start();\n try {\n ops?.signal?.throwIfAborted();\n const result = await AddonSymbol.pTableGetData(\n this.#table,\n requestId,\n columnIndices,\n ops?.range,\n ops?.signal,\n );\n rowCount = result[0].data.length;\n return result;\n } catch (err: unknown) {\n if (isAbortError(err)) {\n throw new AbortError(`PTable ${this.id} getData request ${requestId} cancelled`);\n }\n const error = new PFrameError(`PTable getData request failed`);\n error.cause = new Error(\n `PTable ${this.id} getData request ${requestId} failed, ` +\n `columnIndices: ${JSON.stringify(columnIndices)}, ` +\n `range: ${ops?.range ? JSON.stringify(ops.range) : undefined}, ` +\n `error:\\n` +\n `${ensureError(err)}`,\n );\n throw error;\n } finally {\n this.#logger(\n \"info\",\n `PTable ${this.id} getData request ${requestId} finished, took ${timer.elapsed()} (${rowCount} rows)`,\n );\n }\n }\n\n filter(requestId: PFrameInternal.PTableId, request: PTableRecordFilter[]): PTable {\n const dumpData = {\n timeStamp: Date.now(),\n table: this.id,\n requestType: \"filter\",\n requestData: {\n filters: request.map(hashFilterColumnId),\n },\n };\n dump([`${this.#frame.id}`, `${requestId}.json`], dumpData, this.#logger);\n dump([`${this.#frame.id}`, `${requestId}`, `${requestId}.json`], dumpData, this.#logger);\n\n const timer = PerfTimer.start();\n try {\n const boxed = AddonSymbol.pTableFilter(this.#table, requestId, request);\n return new PTable(this.#frame, requestId, boxed, this.#logger);\n } catch (err: unknown) {\n const error = new PFrameError(`PTable filter request failed`);\n error.cause = new Error(\n `PTable ${this.id} filter request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${ensureError(err)}`,\n );\n throw error;\n } finally {\n this.#logger(\"info\", `PTable ${this.id} filter request ${requestId} took ${timer.elapsed()}`);\n }\n }\n\n sort(requestId: PFrameInternal.PTableId, request: PTableSorting[]): PTable {\n const dumpData = {\n timeStamp: Date.now(),\n table: this.id,\n requestType: \"sort\",\n requestData: request.map(hashSortingColumnId),\n };\n dump([`${this.#frame.id}`, `${requestId}.json`], dumpData, this.#logger);\n dump([`${this.#frame.id}`, `${requestId}`, `${requestId}.json`], dumpData, this.#logger);\n\n const timer = PerfTimer.start();\n try {\n const boxed = AddonSymbol.pTableSort(this.#table, requestId, request);\n return new PTable(this.#frame, requestId, boxed, this.#logger);\n } catch (err: unknown) {\n const error = new PFrameError(`PTable sort request failed`);\n error.cause = new Error(\n `PTable ${this.id} sort request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${ensureError(err)}`,\n );\n throw error;\n } finally {\n this.#logger(\"info\", `PTable ${this.id} sort request ${requestId} took ${timer.elapsed()}`);\n }\n }\n\n dispose() {\n const requestId = ulid();\n dump(\n [`${this.#frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: \"dispose\",\n },\n this.#logger,\n );\n\n try {\n AddonSymbol.pTableDispose(this.#table);\n this.#logger(\"info\", `PTable ${this.id} disposed`);\n } catch (err: unknown) {\n const error = new PFrameError(`PTable dispose request failed`);\n error.cause = new Error(\n `PTable ${this.id} dispose request ${requestId} failed, ` +\n `error:\\n` +\n `${ensureError(err)}`,\n );\n throw error;\n }\n }\n\n [Symbol.dispose]() {\n this.dispose();\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"wrapper.js","names":["#frame","#id","#logger","#table"],"sources":["../export/wrapper.ts"],"sourcesContent":["import { ulid } from \"ulid\";\nimport {\n AbortError,\n PFrameError,\n type PTableShape,\n type PTableVector,\n type TableRange,\n type UniqueValuesResponse,\n type DataQuery,\n ensureError,\n isAbortError,\n} from \"@milaboratories/pl-model-common\";\nimport type { PFrameInternal } from \"@milaboratories/pl-model-middle-layer\";\nimport { PerfTimer } from \"@milaboratories/helpers\";\nimport type { NodeFrameSymbol, NodeTableSymbol } from \"./addon-def\";\nimport { AddonSymbol } from \"./addon\";\nimport {\n dump,\n hashColumnId,\n hashAddColumnEntry,\n hashUniqueValuesRequestColumnId,\n hashDataQuery,\n} from \"./dump\";\n\nexport async function pprofDump(): Promise<Uint8Array> {\n try {\n return await AddonSymbol.pprofDump();\n } catch (err: unknown) {\n const error = new PFrameError(`PFrame pprofDump failed`);\n error.cause = ensureError(err);\n throw error;\n }\n}\n\nexport class PFrame implements PFrameInternal.PFrameV14 {\n readonly #frame: NodeFrameSymbol;\n\n readonly #id: PFrameInternal.PFrameId;\n\n get id(): PFrameInternal.PFrameId {\n return this.#id;\n }\n\n readonly #logger: PFrameInternal.Logger;\n\n constructor(options: PFrameInternal.PFrameOptionsV2) {\n this.#id = options.frameId;\n this.#logger = options.logger ?? (() => {});\n\n dump(\n [`${this.id}`, `${this.id}.json`],\n {\n timeStamp: Date.now(),\n requestType: \"create\",\n },\n this.#logger,\n );\n\n try {\n this.#frame = AddonSymbol.pFrameCreate(options.spillPath, options.logger);\n this.#logger(\"info\", `PFrame ${this.id} created`);\n } catch (err: unknown) {\n const error = new PFrameError(`PFrame creation failed`);\n error.cause = new Error(\n `PFrame ${this.id} creation failed, ` +\n `logger: ${this.#logger?.toString()}, ` +\n `error:\\n` +\n `${ensureError(err)}`,\n );\n throw error;\n }\n }\n\n async addColumns(\n columns: PFrameInternal.AddColumnEntry[],\n ops?: {\n signal?: AbortSignal;\n },\n ): Promise<void> {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: \"addColumns\",\n requestData: {\n columns: columns.map(hashAddColumnEntry),\n },\n },\n this.#logger,\n );\n\n for (const column of columns) {\n const hashedId = hashColumnId(column.id);\n // Data layer is spec-name-independent: only the structural `typeSpec`\n // is dumped to `.typespec` (the full `PColumnSpec` no longer reaches node).\n dump([`${this.id}`, `data`, `${hashedId}.typespec`], { ...column.typeSpec }, this.#logger);\n dump([`${this.id}`, `data`, `${hashedId}.datainfo`], { ...column.data }, this.#logger);\n }\n\n try {\n ops?.signal?.throwIfAborted();\n return await AddonSymbol.pFrameAddColumns(this.#frame, columns, ops?.signal);\n } catch (err: unknown) {\n const error = new PFrameError(`PFrame addColumns request failed`);\n error.cause = new Error(\n `PFrame ${this.id} addColumns request ${requestId} failed, ` +\n `columns: ${JSON.stringify(columns)}, ` +\n `error:\\n` +\n `${ensureError(err)}`,\n );\n throw error;\n }\n }\n\n setDataSource(dataSource: PFrameInternal.PFrameDataSourceV2): void {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: \"setDataSource\",\n },\n this.#logger,\n );\n\n const wrappedDataSource = {\n preloadBlob: async (blobIds: PFrameInternal.PFrameBlobId[]): Promise<void> => {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: \"preloadBlob\",\n requestData: {\n blobIds,\n },\n },\n this.#logger,\n );\n\n this.#logger(\n \"info\",\n `PFrame ${this.id} preloadBlob started, blobIds: ${JSON.stringify(blobIds)}`,\n );\n const timer = PerfTimer.start();\n try {\n return await dataSource.preloadBlob(blobIds);\n } finally {\n this.#logger(\n \"info\",\n `PFrame ${this.id} preloadBlob finished, took ${timer.elapsed()} (${blobIds.length} blobs)`,\n );\n }\n },\n resolveBlobContent: async (blobId: PFrameInternal.PFrameBlobId): Promise<Uint8Array> => {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: \"resolveBlobContent\",\n requestData: {\n blobId,\n },\n },\n this.#logger,\n );\n\n const blob = await dataSource.resolveBlobContent(blobId);\n this.#logger(\"info\", `PFrame ${this.id} resolved blob ${blobId}`);\n dump([`${this.id}`, `data`, `${blobId}`], blob, this.#logger);\n\n return blob;\n },\n parquetServer: dataSource.parquetServer,\n };\n\n try {\n return AddonSymbol.pFrameSetDataSource(this.#frame, wrappedDataSource);\n } catch (err: unknown) {\n const error = new PFrameError(`PFrame setDataSource request failed`);\n error.cause = new Error(\n `PFrame ${this.id} setDataSource request ${requestId} failed, ` +\n `dataSource: ${dataSource.toString()}, ` +\n `error:\\n` +\n `${ensureError(err)}`,\n );\n throw error;\n }\n }\n\n dispose(): void {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: \"dispose\",\n },\n this.#logger,\n );\n\n try {\n AddonSymbol.pFrameDispose(this.#frame);\n this.#logger(\"info\", `PFrame ${this.id} disposed`);\n } catch (err: unknown) {\n const error = new PFrameError(`PFrame dispose request failed`);\n error.cause = new Error(\n `PFrame ${this.id} dispose request ${requestId} failed, ` +\n `error:\\n` +\n `${ensureError(err)}`,\n );\n throw error;\n }\n }\n\n [Symbol.dispose](): void {\n this.dispose();\n }\n\n createTable(tableId: PFrameInternal.PTableId, dataQuery: DataQuery): PTable {\n const timer = PerfTimer.start();\n const dumpData = {\n timeStamp: Date.now(),\n requestType: \"createTable\",\n requestData: hashDataQuery(dataQuery),\n };\n dump([`${this.id}`, `${tableId}.json`], dumpData, this.#logger);\n dump([`${this.id}`, `${tableId}`, `${tableId}.json`], dumpData, this.#logger);\n\n try {\n const boxed = AddonSymbol.pFrameCreateTable(this.#frame, tableId, dataQuery);\n return new PTable(this, tableId, boxed, this.#logger);\n } catch (err: unknown) {\n const error = new PFrameError(`PFrame createTable request failed`);\n error.cause = new Error(\n `PFrame ${this.id} createTable request ${tableId} failed, ` +\n `error:\\n` +\n `${ensureError(err)}`,\n );\n throw error;\n } finally {\n this.#logger(\n \"info\",\n `PFrame ${this.id} createTable request ${tableId} took ${timer.elapsed()}`,\n );\n }\n }\n\n async getUniqueValues(\n request: PFrameInternal.UniqueValuesRequestV2,\n ops?: {\n signal?: AbortSignal;\n },\n ): Promise<UniqueValuesResponse> {\n const requestId = ulid() as PFrameInternal.PTableId;\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: \"getUniqueValues\",\n requestData: hashUniqueValuesRequestColumnId(request),\n },\n this.#logger,\n );\n\n this.#logger(\"info\", `PFrame ${this.id} getUniqueValues request ${requestId} started`);\n const timer = PerfTimer.start();\n try {\n ops?.signal?.throwIfAborted();\n return await AddonSymbol.pFrameGetUniqueValues(this.#frame, requestId, request, ops?.signal);\n } catch (err: unknown) {\n if (isAbortError(err)) {\n throw new AbortError(`PFrame ${this.id} getUniqueValues request ${requestId} cancelled`);\n }\n const error = new PFrameError(`PFrame getUniqueValues request failed`);\n error.cause = new Error(\n `PFrame ${this.id} getUniqueValues request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${ensureError(err)}`,\n );\n throw error;\n } finally {\n this.#logger(\n \"info\",\n `PFrame ${this.id} getUniqueValues request ${requestId} finished, took ${timer.elapsed()}`,\n );\n }\n }\n}\n\nclass PTable implements PFrameInternal.PTableV9 {\n readonly #frame: PFrame;\n readonly #table: NodeTableSymbol;\n\n readonly #id: string;\n\n get id(): string {\n return this.#id;\n }\n\n readonly #logger: PFrameInternal.Logger;\n\n constructor(frame: PFrame, id: string, table: NodeTableSymbol, logger: PFrameInternal.Logger) {\n this.#frame = frame;\n this.#table = table;\n this.#id = id;\n this.#logger = logger;\n this.#logger(\"info\", `PTable ${this.id} created`);\n }\n\n async getFootprint(ops?: { withPredecessors?: boolean; signal?: AbortSignal }): Promise<number> {\n const requestId = ulid();\n dump(\n [`${this.#frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: \"getFootprint\",\n },\n this.#logger,\n );\n\n try {\n ops?.signal?.throwIfAborted();\n return await AddonSymbol.pTableGetFootprint(\n this.#table,\n ops?.withPredecessors ?? false,\n ops?.signal,\n );\n } catch (err: unknown) {\n if (isAbortError(err)) {\n throw new AbortError(`PTable ${this.id} getFootprint request ${requestId} cancelled`);\n }\n const error = new PFrameError(`PTable getFootprint request failed`);\n error.cause = new Error(\n `PTable ${this.id} getFootprint request ${requestId} failed, ` +\n `error:\\n` +\n `${ensureError(err)}`,\n );\n throw error;\n }\n }\n\n async getShape(ops?: { signal?: AbortSignal }): Promise<PTableShape> {\n const requestId = ulid();\n dump(\n [`${this.#frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: \"getShape\",\n },\n this.#logger,\n );\n\n this.#logger(\"info\", `PTable ${this.id} getShape request ${requestId} started`);\n const timer = PerfTimer.start();\n try {\n ops?.signal?.throwIfAborted();\n return await AddonSymbol.pTableGetShape(this.#table, ops?.signal);\n } catch (err: unknown) {\n if (isAbortError(err)) {\n throw new AbortError(`PTable ${this.id} getShape request ${requestId} cancelled`);\n }\n const error = new PFrameError(`PTable getShape request failed`);\n error.cause = new Error(\n `PTable ${this.id} getShape request ${requestId} failed, ` +\n `error:\\n` +\n `${ensureError(err)}`,\n );\n throw error;\n } finally {\n this.#logger(\n \"info\",\n `PTable ${this.id} getShape request ${requestId} finished, took ${timer.elapsed()}`,\n );\n }\n }\n\n async getData(\n columnIndices: number[],\n ops?: {\n range?: TableRange | undefined;\n signal?: AbortSignal | undefined;\n },\n ): Promise<PTableVector[]> {\n const requestId = ulid() as PFrameInternal.PTableId;\n dump(\n [`${this.#frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: \"getData\",\n requestData: {\n columnIndices,\n range: ops?.range ?? null,\n },\n },\n this.#logger,\n );\n\n this.#logger(\"info\", `PTable ${this.id} getData request ${requestId} started`);\n let rowCount = 0;\n const timer = PerfTimer.start();\n try {\n ops?.signal?.throwIfAborted();\n const result = await AddonSymbol.pTableGetData(\n this.#table,\n requestId,\n columnIndices,\n ops?.range,\n ops?.signal,\n );\n rowCount = result[0].data.length;\n return result;\n } catch (err: unknown) {\n if (isAbortError(err)) {\n throw new AbortError(`PTable ${this.id} getData request ${requestId} cancelled`);\n }\n const error = new PFrameError(`PTable getData request failed`);\n error.cause = new Error(\n `PTable ${this.id} getData request ${requestId} failed, ` +\n `columnIndices: ${JSON.stringify(columnIndices)}, ` +\n `range: ${ops?.range ? JSON.stringify(ops.range) : undefined}, ` +\n `error:\\n` +\n `${ensureError(err)}`,\n );\n throw error;\n } finally {\n this.#logger(\n \"info\",\n `PTable ${this.id} getData request ${requestId} finished, took ${timer.elapsed()} (${rowCount} rows)`,\n );\n }\n }\n\n dispose() {\n const requestId = ulid();\n dump(\n [`${this.#frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: \"dispose\",\n },\n this.#logger,\n );\n\n try {\n AddonSymbol.pTableDispose(this.#table);\n this.#logger(\"info\", `PTable ${this.id} disposed`);\n } catch (err: unknown) {\n const error = new PFrameError(`PTable dispose request failed`);\n error.cause = new Error(\n `PTable ${this.id} dispose request ${requestId} failed, ` +\n `error:\\n` +\n `${ensureError(err)}`,\n );\n throw error;\n }\n }\n\n [Symbol.dispose]() {\n this.dispose();\n }\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@milaboratories/pframes-rs-node",
3
- "version": "1.1.37",
3
+ "version": "1.1.38",
4
4
  "description": "PFrames - Node.js Native Addon",
5
5
  "homepage": "https://github.com/milaboratory/pframes-rs#readme",
6
6
  "license": "UNLICENSED",
@@ -38,13 +38,13 @@
38
38
  "dependencies": {
39
39
  "@mapbox/node-pre-gyp": "2.0.3",
40
40
  "@milaboratories/helpers": "1.14.1",
41
- "@milaboratories/pl-model-common": "1.36.0",
41
+ "@milaboratories/pl-model-common": "1.42.0",
42
42
  "ulid": "3.0.2",
43
- "@milaboratories/pframes-rs-serv": "1.1.37"
43
+ "@milaboratories/pframes-rs-serv": "1.1.38"
44
44
  },
45
45
  "devDependencies": {
46
46
  "@milaboratories/build-configs": "2.0.0",
47
- "@milaboratories/pl-model-middle-layer": "1.18.5",
47
+ "@milaboratories/pl-model-middle-layer": "1.24.0",
48
48
  "@milaboratories/ts-builder": "1.3.2",
49
49
  "@milaboratories/ts-configs": "1.2.3",
50
50
  "@types/node": "22.19.13",