@milaboratories/pframes-rs-node 1.1.37 → 1.1.39

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.
@@ -5,82 +5,17 @@ import { promises } from "node:fs";
5
5
  function hashColumnId(columnId) {
6
6
  return createHash("sha256").update(columnId).digest("hex");
7
7
  }
8
- function hashTableColumnId(tableId) {
9
- if (tableId.type === "column") return {
10
- ...tableId,
11
- id: hashColumnId(tableId.id)
12
- };
13
- return tableId;
14
- }
15
- function hashFilterColumnId(filter) {
8
+ function hashAddColumnEntry(entry) {
16
9
  return {
17
- ...filter,
18
- column: hashTableColumnId(filter.column)
10
+ ...entry,
11
+ id: hashColumnId(entry.id)
19
12
  };
20
13
  }
21
14
  function hashUniqueValuesRequestColumnId(request) {
22
15
  return {
23
16
  ...request,
24
- columnId: hashColumnId(request.columnId),
25
- filters: request.filters.map(hashFilterColumnId)
26
- };
27
- }
28
- function hashSortingColumnId(sorting) {
29
- return {
30
- ...sorting,
31
- column: hashTableColumnId(sorting.column)
32
- };
33
- }
34
- function hashJoinEntryColumnId(entry) {
35
- const type = entry.type;
36
- switch (type) {
37
- case "column": return {
38
- ...entry,
39
- columnId: hashColumnId(entry.columnId)
40
- };
41
- case "slicedColumn": return {
42
- ...entry,
43
- columnId: hashColumnId(entry.columnId),
44
- newId: hashColumnId(entry.newId)
45
- };
46
- case "artificialColumn": return {
47
- ...entry,
48
- columnId: hashColumnId(entry.columnId),
49
- newId: hashColumnId(entry.newId)
50
- };
51
- case "inlineColumn": return {
52
- ...entry,
53
- newId: hashColumnId(entry.newId)
54
- };
55
- case "inner": return {
56
- ...entry,
57
- entries: entry.entries.map(hashJoinEntryColumnId)
58
- };
59
- case "full": return {
60
- ...entry,
61
- entries: entry.entries.map(hashJoinEntryColumnId)
62
- };
63
- case "outer": return {
64
- ...entry,
65
- primary: hashJoinEntryColumnId(entry.primary),
66
- secondary: entry.secondary.map(hashJoinEntryColumnId)
67
- };
68
- default: throw new Error(`Unsupported join entry type: ${type}`);
69
- }
70
- }
71
- function hashCreateTableRequestColumnId(request) {
72
- return {
73
- ...request,
74
- src: hashJoinEntryColumnId(request.src),
75
- filters: request.filters.map(hashFilterColumnId)
76
- };
77
- }
78
- function hashTableColumnSpec(spec) {
79
- if (spec.type === "column") return {
80
- ...spec,
81
- id: hashColumnId(spec.id)
17
+ columnId: hashColumnId(request.columnId)
82
18
  };
83
- return spec;
84
19
  }
85
20
  function hashDataQuery(query) {
86
21
  switch (query.type) {
@@ -145,15 +80,19 @@ function hashDataQuery(query) {
145
80
  ...query,
146
81
  input: hashDataQuery(query.input)
147
82
  };
83
+ case "transformColumns": return {
84
+ ...query,
85
+ input: hashDataQuery(query.input),
86
+ columns: query.columns.map((entry) => entry.specOverride ? {
87
+ ...entry,
88
+ specOverride: {
89
+ ...entry.specOverride,
90
+ id: hashColumnId(entry.specOverride.id)
91
+ }
92
+ } : entry)
93
+ };
148
94
  }
149
95
  }
150
- function hashCreateTableV2RequestColumnId(request) {
151
- return {
152
- ...request,
153
- tableSpec: request.tableSpec.map(hashTableColumnSpec),
154
- dataQuery: hashDataQuery(request.dataQuery)
155
- };
156
- }
157
96
  async function dump(relativePath, data, logger) {
158
97
  if (!process.env.MI_DUMP_PFRAMES_RS) return;
159
98
  try {
@@ -168,6 +107,6 @@ async function dump(relativePath, data, logger) {
168
107
  }
169
108
  }
170
109
  //#endregion
171
- export { dump, hashColumnId, hashCreateTableRequestColumnId, hashCreateTableV2RequestColumnId, hashFilterColumnId, hashSortingColumnId, hashTableColumnId, hashUniqueValuesRequestColumnId };
110
+ export { dump, hashAddColumnEntry, hashColumnId, hashDataQuery, hashUniqueValuesRequestColumnId };
172
111
 
173
112
  //# sourceMappingURL=dump.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dump.js","names":["fs"],"sources":["../export/dump.ts"],"sourcesContent":["import { createHash } from \"node:crypto\";\nimport { promises as fs } from \"node:fs\";\nimport { join } from \"node:path\";\nimport type { PFrameInternal } from \"@milaboratories/pl-model-middle-layer\";\nimport type {\n PObjectId,\n PTableColumnId,\n PTableColumnSpec,\n PTableRecordFilter,\n PTableSorting,\n UniqueValuesRequest,\n DataQuery,\n} from \"@milaboratories/pl-model-common\";\n\nexport function hashColumnId(columnId: PObjectId): PObjectId {\n return createHash(\"sha256\").update(columnId).digest(\"hex\") as PObjectId;\n}\n\nexport function hashTableColumnId(tableId: PTableColumnId): PTableColumnId {\n if (tableId.type === \"column\") {\n return {\n ...tableId,\n id: hashColumnId(tableId.id),\n };\n }\n return tableId;\n}\n\nexport function hashFilterColumnId(filter: PTableRecordFilter): PTableRecordFilter {\n return {\n ...filter,\n column: hashTableColumnId(filter.column),\n };\n}\n\nexport function hashUniqueValuesRequestColumnId(request: UniqueValuesRequest): UniqueValuesRequest {\n return {\n ...request,\n columnId: hashColumnId(request.columnId),\n filters: request.filters.map(hashFilterColumnId),\n };\n}\n\nexport function hashSortingColumnId(sorting: PTableSorting): PTableSorting {\n return {\n ...sorting,\n column: hashTableColumnId(sorting.column),\n };\n}\n\nfunction hashJoinEntryColumnId(entry: PFrameInternal.JoinEntryV4): PFrameInternal.JoinEntryV4 {\n const type = entry.type;\n switch (type) {\n case \"column\":\n return {\n ...entry,\n columnId: hashColumnId(entry.columnId),\n };\n case \"slicedColumn\":\n return {\n ...entry,\n columnId: hashColumnId(entry.columnId),\n newId: hashColumnId(entry.newId),\n };\n case \"artificialColumn\":\n return {\n ...entry,\n columnId: hashColumnId(entry.columnId),\n newId: hashColumnId(entry.newId),\n };\n case \"inlineColumn\":\n return {\n ...entry,\n newId: hashColumnId(entry.newId),\n };\n case \"inner\":\n return {\n ...entry,\n entries: entry.entries.map(hashJoinEntryColumnId),\n };\n case \"full\":\n return {\n ...entry,\n entries: entry.entries.map(hashJoinEntryColumnId),\n };\n case \"outer\":\n return {\n ...entry,\n primary: hashJoinEntryColumnId(entry.primary),\n secondary: entry.secondary.map(hashJoinEntryColumnId),\n };\n default:\n throw new Error(`Unsupported join entry type: ${type}`);\n }\n}\n\nexport function hashCreateTableRequestColumnId(\n request: PFrameInternal.CreateTableRequestV4,\n): PFrameInternal.CreateTableRequestV4 {\n return {\n ...request,\n src: hashJoinEntryColumnId(request.src),\n filters: request.filters.map(hashFilterColumnId),\n };\n}\n\nfunction hashTableColumnSpec(spec: PTableColumnSpec): PTableColumnSpec {\n if (spec.type === \"column\") {\n return {\n ...spec,\n id: hashColumnId(spec.id),\n };\n }\n return spec;\n}\n\nfunction hashDataQuery(query: DataQuery): DataQuery {\n switch (query.type) {\n case \"column\":\n return {\n ...query,\n column: hashColumnId(query.column),\n };\n case \"inlineColumn\":\n return {\n ...query,\n spec: {\n ...query.spec,\n id: hashColumnId(query.spec.id),\n },\n };\n case \"sparseToDenseColumn\":\n return {\n ...query,\n column: hashColumnId(query.column),\n ...(query.specOverride\n ? {\n specOverride: {\n ...query.specOverride,\n id: hashColumnId(query.specOverride.id),\n },\n }\n : {}),\n };\n case \"innerJoin\":\n case \"fullJoin\":\n return {\n ...query,\n entries: query.entries.map((e) => ({\n ...e,\n entry: hashDataQuery(e.entry),\n })),\n };\n case \"outerJoin\":\n return {\n ...query,\n primary: {\n ...query.primary,\n entry: hashDataQuery(query.primary.entry),\n },\n secondary: query.secondary.map((e) => ({\n ...e,\n entry: hashDataQuery(e.entry),\n })),\n };\n case \"linkerJoin\":\n return {\n ...query,\n linker: {\n ...query.linker,\n column: hashColumnId(query.linker.column),\n },\n secondary: query.secondary.map((e) => ({\n ...e,\n entry: hashDataQuery(e.entry),\n })),\n };\n case \"sliceAxes\":\n return {\n ...query,\n input: hashDataQuery(query.input),\n };\n case \"sort\":\n return {\n ...query,\n input: hashDataQuery(query.input),\n };\n case \"filter\":\n return {\n ...query,\n input: hashDataQuery(query.input),\n };\n }\n}\n\nexport function hashCreateTableV2RequestColumnId(request: {\n tableSpec: PTableColumnSpec[];\n dataQuery: DataQuery;\n}): {\n tableSpec: PTableColumnSpec[];\n dataQuery: DataQuery;\n} {\n return {\n ...request,\n tableSpec: request.tableSpec.map(hashTableColumnSpec),\n dataQuery: hashDataQuery(request.dataQuery),\n };\n}\n\nexport async function dump(\n relativePath: string[],\n data: { [key: string]: string | number | boolean | object } | Uint8Array,\n logger?: PFrameInternal.Logger,\n): Promise<void> {\n if (!process.env.MI_DUMP_PFRAMES_RS) return;\n try {\n const relativeUri = relativePath.map((part) => encodeURIComponent(part));\n const fileDir = join(process.env.MI_DUMP_PFRAMES_RS, ...relativeUri.slice(0, -1));\n await fs.mkdir(fileDir, { recursive: true });\n\n const filePath = join(process.env.MI_DUMP_PFRAMES_RS, ...relativeUri);\n const fileData = ArrayBuffer.isView(data) ? data : JSON.stringify(data, null, 2);\n await fs.writeFile(filePath, fileData, { flag: \"wx\" });\n } catch (error: unknown) {\n logger?.(\"info\", `error while dumping PFrames data: ${error}`);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"dump.js","names":["fs"],"sources":["../export/dump.ts"],"sourcesContent":["import { createHash } from \"node:crypto\";\nimport { promises as fs } from \"node:fs\";\nimport { join } from \"node:path\";\nimport type { PFrameInternal } from \"@milaboratories/pl-model-middle-layer\";\nimport type { PObjectId, DataQuery } from \"@milaboratories/pl-model-common\";\n\nexport function hashColumnId(columnId: PObjectId): PObjectId {\n return createHash(\"sha256\").update(columnId).digest(\"hex\") as PObjectId;\n}\n\nexport function hashAddColumnEntry(\n entry: PFrameInternal.AddColumnEntry,\n): PFrameInternal.AddColumnEntry {\n return {\n ...entry,\n id: hashColumnId(entry.id),\n };\n}\n\nexport function hashUniqueValuesRequestColumnId(\n request: PFrameInternal.UniqueValuesRequestV2,\n): PFrameInternal.UniqueValuesRequestV2 {\n // V2 filters are index-based (no column ids), so only `columnId` is rewritten.\n return {\n ...request,\n columnId: hashColumnId(request.columnId),\n };\n}\n\nexport function hashDataQuery(query: DataQuery): DataQuery {\n switch (query.type) {\n case \"column\":\n return {\n ...query,\n column: hashColumnId(query.column),\n };\n case \"inlineColumn\":\n return {\n ...query,\n spec: {\n ...query.spec,\n id: hashColumnId(query.spec.id),\n },\n };\n case \"sparseToDenseColumn\":\n return {\n ...query,\n column: hashColumnId(query.column),\n ...(query.specOverride\n ? {\n specOverride: {\n ...query.specOverride,\n id: hashColumnId(query.specOverride.id),\n },\n }\n : {}),\n };\n case \"innerJoin\":\n case \"fullJoin\":\n return {\n ...query,\n entries: query.entries.map((e) => ({\n ...e,\n entry: hashDataQuery(e.entry),\n })),\n };\n case \"outerJoin\":\n return {\n ...query,\n primary: {\n ...query.primary,\n entry: hashDataQuery(query.primary.entry),\n },\n secondary: query.secondary.map((e) => ({\n ...e,\n entry: hashDataQuery(e.entry),\n })),\n };\n case \"linkerJoin\":\n return {\n ...query,\n linker: {\n ...query.linker,\n column: hashColumnId(query.linker.column),\n },\n secondary: query.secondary.map((e) => ({\n ...e,\n entry: hashDataQuery(e.entry),\n })),\n };\n case \"sliceAxes\":\n return {\n ...query,\n input: hashDataQuery(query.input),\n };\n case \"sort\":\n return {\n ...query,\n input: hashDataQuery(query.input),\n };\n case \"filter\":\n return {\n ...query,\n input: hashDataQuery(query.input),\n };\n case \"transformColumns\":\n return {\n ...query,\n input: hashDataQuery(query.input),\n columns: query.columns.map((entry) =>\n entry.specOverride\n ? {\n ...entry,\n specOverride: {\n ...entry.specOverride,\n id: hashColumnId(entry.specOverride.id),\n },\n }\n : entry,\n ) as typeof query.columns,\n };\n }\n}\n\nexport async function dump(\n relativePath: string[],\n data: { [key: string]: string | number | boolean | object } | Uint8Array,\n logger?: PFrameInternal.Logger,\n): Promise<void> {\n if (!process.env.MI_DUMP_PFRAMES_RS) return;\n try {\n const relativeUri = relativePath.map((part) => encodeURIComponent(part));\n const fileDir = join(process.env.MI_DUMP_PFRAMES_RS, ...relativeUri.slice(0, -1));\n await fs.mkdir(fileDir, { recursive: true });\n\n const filePath = join(process.env.MI_DUMP_PFRAMES_RS, ...relativeUri);\n const fileData = ArrayBuffer.isView(data) ? data : JSON.stringify(data, null, 2);\n await fs.writeFile(filePath, fileData, { flag: \"wx\" });\n } catch (error: unknown) {\n logger?.(\"info\", `error while dumping PFrames data: ${error}`);\n }\n}\n"],"mappings":";;;;AAMA,SAAgB,aAAa,UAAgC;AAC3D,QAAO,WAAW,SAAS,CAAC,OAAO,SAAS,CAAC,OAAO,MAAM;;AAG5D,SAAgB,mBACd,OAC+B;AAC/B,QAAO;EACL,GAAG;EACH,IAAI,aAAa,MAAM,GAAG;EAC3B;;AAGH,SAAgB,gCACd,SACsC;AAEtC,QAAO;EACL,GAAG;EACH,UAAU,aAAa,QAAQ,SAAS;EACzC;;AAGH,SAAgB,cAAc,OAA6B;AACzD,SAAQ,MAAM,MAAd;EACE,KAAK,SACH,QAAO;GACL,GAAG;GACH,QAAQ,aAAa,MAAM,OAAO;GACnC;EACH,KAAK,eACH,QAAO;GACL,GAAG;GACH,MAAM;IACJ,GAAG,MAAM;IACT,IAAI,aAAa,MAAM,KAAK,GAAG;IAChC;GACF;EACH,KAAK,sBACH,QAAO;GACL,GAAG;GACH,QAAQ,aAAa,MAAM,OAAO;GAClC,GAAI,MAAM,eACN,EACE,cAAc;IACZ,GAAG,MAAM;IACT,IAAI,aAAa,MAAM,aAAa,GAAG;IACxC,EACF,GACD,EAAE;GACP;EACH,KAAK;EACL,KAAK,WACH,QAAO;GACL,GAAG;GACH,SAAS,MAAM,QAAQ,KAAK,OAAO;IACjC,GAAG;IACH,OAAO,cAAc,EAAE,MAAM;IAC9B,EAAE;GACJ;EACH,KAAK,YACH,QAAO;GACL,GAAG;GACH,SAAS;IACP,GAAG,MAAM;IACT,OAAO,cAAc,MAAM,QAAQ,MAAM;IAC1C;GACD,WAAW,MAAM,UAAU,KAAK,OAAO;IACrC,GAAG;IACH,OAAO,cAAc,EAAE,MAAM;IAC9B,EAAE;GACJ;EACH,KAAK,aACH,QAAO;GACL,GAAG;GACH,QAAQ;IACN,GAAG,MAAM;IACT,QAAQ,aAAa,MAAM,OAAO,OAAO;IAC1C;GACD,WAAW,MAAM,UAAU,KAAK,OAAO;IACrC,GAAG;IACH,OAAO,cAAc,EAAE,MAAM;IAC9B,EAAE;GACJ;EACH,KAAK,YACH,QAAO;GACL,GAAG;GACH,OAAO,cAAc,MAAM,MAAM;GAClC;EACH,KAAK,OACH,QAAO;GACL,GAAG;GACH,OAAO,cAAc,MAAM,MAAM;GAClC;EACH,KAAK,SACH,QAAO;GACL,GAAG;GACH,OAAO,cAAc,MAAM,MAAM;GAClC;EACH,KAAK,mBACH,QAAO;GACL,GAAG;GACH,OAAO,cAAc,MAAM,MAAM;GACjC,SAAS,MAAM,QAAQ,KAAK,UAC1B,MAAM,eACF;IACE,GAAG;IACH,cAAc;KACZ,GAAG,MAAM;KACT,IAAI,aAAa,MAAM,aAAa,GAAG;KACxC;IACF,GACD,MACL;GACF;;;AAIP,eAAsB,KACpB,cACA,MACA,QACe;AACf,KAAI,CAAC,QAAQ,IAAI,mBAAoB;AACrC,KAAI;EACF,MAAM,cAAc,aAAa,KAAK,SAAS,mBAAmB,KAAK,CAAC;EACxE,MAAM,UAAU,KAAK,QAAQ,IAAI,oBAAoB,GAAG,YAAY,MAAM,GAAG,GAAG,CAAC;AACjF,QAAMA,SAAG,MAAM,SAAS,EAAE,WAAW,MAAM,CAAC;EAE5C,MAAM,WAAW,KAAK,QAAQ,IAAI,oBAAoB,GAAG,YAAY;EACrE,MAAM,WAAW,YAAY,OAAO,KAAK,GAAG,OAAO,KAAK,UAAU,MAAM,MAAM,EAAE;AAChF,QAAMA,SAAG,UAAU,UAAU,UAAU,EAAE,MAAM,MAAM,CAAC;UAC/C,OAAgB;AACvB,WAAS,QAAQ,qCAAqC,QAAQ"}
@@ -1 +1 @@
1
- {"version":3,"file":"export.cjs","names":["PFrame","pprofDump"],"sources":["../export/export.ts"],"sourcesContent":["import type { PFrameInternal } from \"@milaboratories/pl-model-middle-layer\";\nimport { PFrame, pprofDump } from \"./wrapper\";\n\nexport const PFrameFactory: PFrameInternal.PFrameFactoryV4 = {\n createPFrame: (options: PFrameInternal.PFrameOptionsV2): PFrameInternal.PFrameV13 => {\n return new PFrame(options);\n },\n pprofDump: async (): Promise<Uint8Array> => {\n return await pprofDump();\n },\n};\n"],"mappings":";;AAGA,MAAa,gBAAgD;CAC3D,eAAe,YAAsE;AACnF,SAAO,IAAIA,gBAAAA,OAAO,QAAQ;;CAE5B,WAAW,YAAiC;AAC1C,SAAO,MAAMC,gBAAAA,WAAW;;CAE3B"}
1
+ {"version":3,"file":"export.cjs","names":["PFrame","pprofDump"],"sources":["../export/export.ts"],"sourcesContent":["import type { PFrameInternal } from \"@milaboratories/pl-model-middle-layer\";\nimport { PFrame, pprofDump } from \"./wrapper\";\n\nexport const PFrameFactory: PFrameInternal.PFrameFactoryV5 = {\n createPFrame: (options: PFrameInternal.PFrameOptionsV2): PFrameInternal.PFrameV14 => {\n return new PFrame(options);\n },\n pprofDump: async (): Promise<Uint8Array> => {\n return await pprofDump();\n },\n};\n"],"mappings":";;AAGA,MAAa,gBAAgD;CAC3D,eAAe,YAAsE;AACnF,SAAO,IAAIA,gBAAAA,OAAO,QAAQ;;CAE5B,WAAW,YAAiC;AAC1C,SAAO,MAAMC,gBAAAA,WAAW;;CAE3B"}
@@ -1,7 +1,7 @@
1
1
  import { PFrameInternal } from "@milaboratories/pl-model-middle-layer";
2
2
 
3
3
  //#region export/export.d.ts
4
- declare const PFrameFactory: PFrameInternal.PFrameFactoryV4;
4
+ declare const PFrameFactory: PFrameInternal.PFrameFactoryV5;
5
5
  //#endregion
6
6
  export { PFrameFactory };
7
7
  //# sourceMappingURL=export.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"export.js","names":[],"sources":["../export/export.ts"],"sourcesContent":["import type { PFrameInternal } from \"@milaboratories/pl-model-middle-layer\";\nimport { PFrame, pprofDump } from \"./wrapper\";\n\nexport const PFrameFactory: PFrameInternal.PFrameFactoryV4 = {\n createPFrame: (options: PFrameInternal.PFrameOptionsV2): PFrameInternal.PFrameV13 => {\n return new PFrame(options);\n },\n pprofDump: async (): Promise<Uint8Array> => {\n return await pprofDump();\n },\n};\n"],"mappings":";;AAGA,MAAa,gBAAgD;CAC3D,eAAe,YAAsE;AACnF,SAAO,IAAI,OAAO,QAAQ;;CAE5B,WAAW,YAAiC;AAC1C,SAAO,MAAM,WAAW;;CAE3B"}
1
+ {"version":3,"file":"export.js","names":[],"sources":["../export/export.ts"],"sourcesContent":["import type { PFrameInternal } from \"@milaboratories/pl-model-middle-layer\";\nimport { PFrame, pprofDump } from \"./wrapper\";\n\nexport const PFrameFactory: PFrameInternal.PFrameFactoryV5 = {\n createPFrame: (options: PFrameInternal.PFrameOptionsV2): PFrameInternal.PFrameV14 => {\n return new PFrame(options);\n },\n pprofDump: async (): Promise<Uint8Array> => {\n return await pprofDump();\n },\n};\n"],"mappings":";;AAGA,MAAa,gBAAgD;CAC3D,eAAe,YAAsE;AACnF,SAAO,IAAI,OAAO,QAAQ;;CAE5B,WAAW,YAAiC;AAC1C,SAAO,MAAM,WAAW;;CAE3B"}
@@ -37,26 +37,32 @@ var PFrame = class {
37
37
  throw error;
38
38
  }
39
39
  }
40
- addColumnSpec(columnId, columnSpec) {
40
+ async addColumns(columns, ops) {
41
41
  const requestId = (0, ulid.ulid)();
42
42
  require_dump.dump([`${this.id}`, `${requestId}.json`], {
43
43
  timeStamp: Date.now(),
44
- requestType: "addColumnSpec",
45
- requestData: {
46
- columnId: require_dump.hashColumnId(columnId),
47
- columnSpec
48
- }
44
+ requestType: "addColumns",
45
+ requestData: { columns: columns.map(require_dump.hashAddColumnEntry) }
49
46
  }, this.#logger);
50
- require_dump.dump([
51
- `${this.id}`,
52
- `data`,
53
- `${require_dump.hashColumnId(columnId)}.spec`
54
- ], { ...columnSpec }, this.#logger);
47
+ for (const column of columns) {
48
+ const hashedId = require_dump.hashColumnId(column.id);
49
+ require_dump.dump([
50
+ `${this.id}`,
51
+ `data`,
52
+ `${hashedId}.typespec`
53
+ ], { ...column.typeSpec }, this.#logger);
54
+ require_dump.dump([
55
+ `${this.id}`,
56
+ `data`,
57
+ `${hashedId}.datainfo`
58
+ ], { ...column.data }, this.#logger);
59
+ }
55
60
  try {
56
- return require_addon.AddonSymbol.pFrameAddColumnSpec(this.#frame, columnId, columnSpec);
61
+ ops?.signal?.throwIfAborted();
62
+ return await require_addon.AddonSymbol.pFrameAddColumns(this.#frame, columns, ops?.signal);
57
63
  } catch (err) {
58
- const error = new _milaboratories_pl_model_common.PFrameError(`PFrame addColumnSpec request failed`);
59
- error.cause = /* @__PURE__ */ new Error(`PFrame ${this.id} addColumnSpec request ${requestId} failed, columnId: ${JSON.stringify(columnId)}, columnSpec: ${JSON.stringify(columnSpec)}, error:\n${(0, _milaboratories_pl_model_common.ensureError)(err)}`);
64
+ const error = new _milaboratories_pl_model_common.PFrameError(`PFrame addColumns request failed`);
65
+ error.cause = /* @__PURE__ */ new Error(`PFrame ${this.id} addColumns request ${requestId} failed, columns: ${JSON.stringify(columns)}, error:\n${(0, _milaboratories_pl_model_common.ensureError)(err)}`);
60
66
  throw error;
61
67
  }
62
68
  }
@@ -108,30 +114,6 @@ var PFrame = class {
108
114
  throw error;
109
115
  }
110
116
  }
111
- setColumnData(columnId, dataInfo, ops) {
112
- const requestId = (0, ulid.ulid)();
113
- require_dump.dump([`${this.id}`, `${requestId}.json`], {
114
- timeStamp: Date.now(),
115
- requestType: "setColumnData",
116
- requestData: {
117
- columnId: require_dump.hashColumnId(columnId),
118
- dataInfo
119
- }
120
- }, this.#logger);
121
- require_dump.dump([
122
- `${this.id}`,
123
- `data`,
124
- `${require_dump.hashColumnId(columnId)}.datainfo`
125
- ], { ...dataInfo }, this.#logger);
126
- try {
127
- ops?.signal?.throwIfAborted();
128
- return require_addon.AddonSymbol.pFrameSetColumnData(this.#frame, columnId, dataInfo, ops?.signal);
129
- } catch (err) {
130
- const error = new _milaboratories_pl_model_common.PFrameError(`PFrame setColumnData request failed`);
131
- error.cause = /* @__PURE__ */ new Error(`PFrame ${this.id} setColumnData request ${requestId} failed, columnId: ${JSON.stringify(columnId)}, dataInfo: ${JSON.stringify(dataInfo)}, error:\n${(0, _milaboratories_pl_model_common.ensureError)(err)}`);
132
- throw error;
133
- }
134
- }
135
117
  dispose() {
136
118
  const requestId = (0, ulid.ulid)();
137
119
  require_dump.dump([`${this.id}`, `${requestId}.json`], {
@@ -150,117 +132,28 @@ var PFrame = class {
150
132
  [Symbol.dispose]() {
151
133
  this.dispose();
152
134
  }
153
- async findColumns(request) {
154
- const requestId = (0, ulid.ulid)();
155
- require_dump.dump([`${this.id}`, `${requestId}.json`], {
156
- timeStamp: Date.now(),
157
- requestType: "findColumns",
158
- requestData: request
159
- }, this.#logger);
135
+ createTable(tableId, dataQuery) {
160
136
  const timer = _milaboratories_helpers.PerfTimer.start();
161
- try {
162
- return await require_addon.AddonSymbol.pFrameFindColumns(this.#frame, request);
163
- } catch (err) {
164
- const error = new _milaboratories_pl_model_common.PFrameError(`PFrame findColumns request failed`);
165
- error.cause = /* @__PURE__ */ new Error(`PFrame ${this.id} findColumns request ${requestId} failed, request: ${JSON.stringify(request)}, error:\n${(0, _milaboratories_pl_model_common.ensureError)(err)}`);
166
- throw error;
167
- } finally {
168
- this.#logger("info", `PFrame ${this.id} findColumns request ${requestId} took ${timer.elapsed()}`);
169
- }
170
- }
171
- async deleteColumn(request) {
172
- const requestId = (0, ulid.ulid)();
173
- require_dump.dump([`${this.id}`, `${requestId}.json`], {
174
- timeStamp: Date.now(),
175
- requestType: "deleteColumn",
176
- requestData: request
177
- }, this.#logger);
178
- const timer = _milaboratories_helpers.PerfTimer.start();
179
- try {
180
- return await require_addon.AddonSymbol.pFrameDeleteColumn(this.#frame, request);
181
- } catch (err) {
182
- const error = new _milaboratories_pl_model_common.PFrameError(`PFrame deleteColumn request failed`);
183
- error.cause = /* @__PURE__ */ new Error(`PFrame ${this.id} deleteColumn request ${requestId} failed, request: ${JSON.stringify(request)}, error:\n${(0, _milaboratories_pl_model_common.ensureError)(err)}`);
184
- throw error;
185
- } finally {
186
- this.#logger("info", `PFrame ${this.id} deleteColumn request ${requestId} took ${timer.elapsed()}`);
187
- }
188
- }
189
- async getColumnSpec(columnId) {
190
- const requestId = (0, ulid.ulid)();
191
- require_dump.dump([`${this.id}`, `${requestId}.json`], {
192
- timeStamp: Date.now(),
193
- requestType: "getColumnSpec",
194
- requestData: { columnId: require_dump.hashColumnId(columnId) }
195
- }, this.#logger);
196
- try {
197
- return await require_addon.AddonSymbol.pFrameGetColumnSpec(this.#frame, columnId);
198
- } catch (err) {
199
- const error = new _milaboratories_pl_model_common.PFrameError(`PFrame getColumnSpec request failed`);
200
- error.cause = /* @__PURE__ */ new Error(`PFrame ${this.id} getColumnSpec request ${requestId} failed, columnId: ${JSON.stringify(columnId)}, error:\n${(0, _milaboratories_pl_model_common.ensureError)(err)}`);
201
- throw error;
202
- }
203
- }
204
- async listColumns() {
205
- const requestId = (0, ulid.ulid)();
206
- require_dump.dump([`${this.id}`, `${requestId}.json`], {
207
- timeStamp: Date.now(),
208
- requestType: "listColumns"
209
- }, this.#logger);
210
- try {
211
- return await require_addon.AddonSymbol.pFrameListColumns(this.#frame);
212
- } catch (err) {
213
- const error = new _milaboratories_pl_model_common.PFrameError(`PFrame listColumns request failed`);
214
- error.cause = /* @__PURE__ */ new Error(`PFrame ${this.id} listColumns request ${requestId} failed, error:\n${(0, _milaboratories_pl_model_common.ensureError)(err)}`);
215
- throw error;
216
- }
217
- }
218
- createTable(requestId, request) {
219
137
  const dumpData = {
220
138
  timeStamp: Date.now(),
221
139
  requestType: "createTable",
222
- requestData: require_dump.hashCreateTableRequestColumnId(request)
140
+ requestData: require_dump.hashDataQuery(dataQuery)
223
141
  };
224
- require_dump.dump([`${this.id}`, `${requestId}.json`], dumpData, this.#logger);
142
+ require_dump.dump([`${this.id}`, `${tableId}.json`], dumpData, this.#logger);
225
143
  require_dump.dump([
226
144
  `${this.id}`,
227
- `${requestId}`,
228
- `${requestId}.json`
145
+ `${tableId}`,
146
+ `${tableId}.json`
229
147
  ], dumpData, this.#logger);
230
- const timer = _milaboratories_helpers.PerfTimer.start();
231
148
  try {
232
- const boxed = require_addon.AddonSymbol.pFrameCreateTable(this.#frame, requestId, request);
233
- return new PTable(this, requestId, boxed, this.#logger);
149
+ const boxed = require_addon.AddonSymbol.pFrameCreateTable(this.#frame, tableId, dataQuery);
150
+ return new PTable(this, tableId, boxed, this.#logger);
234
151
  } catch (err) {
235
152
  const error = new _milaboratories_pl_model_common.PFrameError(`PFrame createTable request failed`);
236
- error.cause = /* @__PURE__ */ new Error(`PFrame ${this.id} createTable request ${requestId} failed, request: ${JSON.stringify(request)}, error:\n${(0, _milaboratories_pl_model_common.ensureError)(err)}`);
153
+ error.cause = /* @__PURE__ */ new Error(`PFrame ${this.id} createTable request ${tableId} failed, error:\n${(0, _milaboratories_pl_model_common.ensureError)(err)}`);
237
154
  throw error;
238
155
  } finally {
239
- this.#logger("info", `PFrame ${this.id} createTable request ${requestId} took ${timer.elapsed()}`);
240
- }
241
- }
242
- createTableV2(requestId, request) {
243
- const timer = _milaboratories_helpers.PerfTimer.start();
244
- const dumpData = {
245
- timeStamp: Date.now(),
246
- requestType: "createTableV2",
247
- requestData: require_dump.hashCreateTableV2RequestColumnId(request)
248
- };
249
- require_dump.dump([`${this.id}`, `${requestId}.json`], dumpData, this.#logger);
250
- require_dump.dump([
251
- `${this.id}`,
252
- `${requestId}`,
253
- `${requestId}.json`
254
- ], dumpData, this.#logger);
255
- try {
256
- const boxed = require_addon.AddonSymbol.pFrameCreateTableV2(this.#frame, requestId, request);
257
- return new PTable(this, requestId, boxed, this.#logger);
258
- } catch (err) {
259
- const error = new _milaboratories_pl_model_common.PFrameError(`PFrame createTableV2 request failed`);
260
- error.cause = /* @__PURE__ */ new Error(`PFrame ${this.id} createTableV2 request ${requestId} failed, error:\n${(0, _milaboratories_pl_model_common.ensureError)(err)}`);
261
- throw error;
262
- } finally {
263
- this.#logger("info", `PFrame ${this.id} createTableV2 request ${requestId} took ${timer.elapsed()}`);
156
+ this.#logger("info", `PFrame ${this.id} createTable request ${tableId} took ${timer.elapsed()}`);
264
157
  }
265
158
  }
266
159
  async getUniqueValues(request, ops) {
@@ -285,7 +178,7 @@ var PFrame = class {
285
178
  }
286
179
  }
287
180
  };
288
- var PTable = class PTable {
181
+ var PTable = class {
289
182
  #frame;
290
183
  #table;
291
184
  #id;
@@ -300,43 +193,6 @@ var PTable = class PTable {
300
193
  this.#logger = logger;
301
194
  this.#logger("info", `PTable ${this.id} created`);
302
195
  }
303
- getSpec() {
304
- const requestId = (0, ulid.ulid)();
305
- require_dump.dump([
306
- `${this.#frame.id}`,
307
- `${this.id}`,
308
- `${requestId}.json`
309
- ], {
310
- timeStamp: Date.now(),
311
- requestType: "getSpec"
312
- }, this.#logger);
313
- try {
314
- return require_addon.AddonSymbol.pTableGetSpec(this.#table);
315
- } catch (err) {
316
- const error = new _milaboratories_pl_model_common.PFrameError(`PTable getSpec request failed`);
317
- error.cause = /* @__PURE__ */ new Error(`PTable ${this.id} getSpec request ${requestId} failed, error:\n${(0, _milaboratories_pl_model_common.ensureError)(err)}`);
318
- throw error;
319
- }
320
- }
321
- getColumnIndices(columnIds) {
322
- const requestId = (0, ulid.ulid)();
323
- require_dump.dump([
324
- `${this.#frame.id}`,
325
- `${this.id}`,
326
- `${requestId}.json`
327
- ], {
328
- timeStamp: Date.now(),
329
- requestType: "getColumnIndices",
330
- requestData: { columnIds: columnIds.map(require_dump.hashTableColumnId) }
331
- }, this.#logger);
332
- try {
333
- return require_addon.AddonSymbol.pTableGetColumnIndices(this.#table, columnIds);
334
- } catch (err) {
335
- const error = new _milaboratories_pl_model_common.PFrameError(`PTable getColumnIndices request failed`);
336
- error.cause = /* @__PURE__ */ new Error(`PTable ${this.id} getColumnIndices request ${requestId} failed, columnIds: ${JSON.stringify(columnIds)}, error:\n${(0, _milaboratories_pl_model_common.ensureError)(err)}`);
337
- throw error;
338
- }
339
- }
340
196
  async getFootprint(ops) {
341
197
  const requestId = (0, ulid.ulid)();
342
198
  require_dump.dump([
@@ -349,7 +205,7 @@ var PTable = class PTable {
349
205
  }, this.#logger);
350
206
  try {
351
207
  ops?.signal?.throwIfAborted();
352
- return await require_addon.AddonSymbol.pTableGetFootprint(this.#table, ops?.signal);
208
+ return await require_addon.AddonSymbol.pTableGetFootprint(this.#table, ops?.withPredecessors ?? false, ops?.signal);
353
209
  } catch (err) {
354
210
  if ((0, _milaboratories_pl_model_common.isAbortError)(err)) throw new _milaboratories_pl_model_common.AbortError(`PTable ${this.id} getFootprint request ${requestId} cancelled`);
355
211
  const error = new _milaboratories_pl_model_common.PFrameError(`PTable getFootprint request failed`);
@@ -412,56 +268,6 @@ var PTable = class PTable {
412
268
  this.#logger("info", `PTable ${this.id} getData request ${requestId} finished, took ${timer.elapsed()} (${rowCount} rows)`);
413
269
  }
414
270
  }
415
- filter(requestId, request) {
416
- const dumpData = {
417
- timeStamp: Date.now(),
418
- table: this.id,
419
- requestType: "filter",
420
- requestData: { filters: request.map(require_dump.hashFilterColumnId) }
421
- };
422
- require_dump.dump([`${this.#frame.id}`, `${requestId}.json`], dumpData, this.#logger);
423
- require_dump.dump([
424
- `${this.#frame.id}`,
425
- `${requestId}`,
426
- `${requestId}.json`
427
- ], dumpData, this.#logger);
428
- const timer = _milaboratories_helpers.PerfTimer.start();
429
- try {
430
- const boxed = require_addon.AddonSymbol.pTableFilter(this.#table, requestId, request);
431
- return new PTable(this.#frame, requestId, boxed, this.#logger);
432
- } catch (err) {
433
- const error = new _milaboratories_pl_model_common.PFrameError(`PTable filter request failed`);
434
- error.cause = /* @__PURE__ */ new Error(`PTable ${this.id} filter request ${requestId} failed, request: ${JSON.stringify(request)}, error:\n${(0, _milaboratories_pl_model_common.ensureError)(err)}`);
435
- throw error;
436
- } finally {
437
- this.#logger("info", `PTable ${this.id} filter request ${requestId} took ${timer.elapsed()}`);
438
- }
439
- }
440
- sort(requestId, request) {
441
- const dumpData = {
442
- timeStamp: Date.now(),
443
- table: this.id,
444
- requestType: "sort",
445
- requestData: request.map(require_dump.hashSortingColumnId)
446
- };
447
- require_dump.dump([`${this.#frame.id}`, `${requestId}.json`], dumpData, this.#logger);
448
- require_dump.dump([
449
- `${this.#frame.id}`,
450
- `${requestId}`,
451
- `${requestId}.json`
452
- ], dumpData, this.#logger);
453
- const timer = _milaboratories_helpers.PerfTimer.start();
454
- try {
455
- const boxed = require_addon.AddonSymbol.pTableSort(this.#table, requestId, request);
456
- return new PTable(this.#frame, requestId, boxed, this.#logger);
457
- } catch (err) {
458
- const error = new _milaboratories_pl_model_common.PFrameError(`PTable sort request failed`);
459
- error.cause = /* @__PURE__ */ new Error(`PTable ${this.id} sort request ${requestId} failed, request: ${JSON.stringify(request)}, error:\n${(0, _milaboratories_pl_model_common.ensureError)(err)}`);
460
- throw error;
461
- } finally {
462
- this.#logger("info", `PTable ${this.id} sort request ${requestId} took ${timer.elapsed()}`);
463
- }
464
- }
465
271
  dispose() {
466
272
  const requestId = (0, ulid.ulid)();
467
273
  require_dump.dump([
@@ -1 +1 @@
1
- {"version":3,"file":"wrapper.cjs","names":["AddonSymbol","PFrameError","#frame","#id","#logger","hashColumnId","PerfTimer","hashCreateTableRequestColumnId","hashCreateTableV2RequestColumnId","hashUniqueValuesRequestColumnId","AbortError","#table","hashTableColumnId","hashFilterColumnId","hashSortingColumnId"],"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.cjs","names":["AddonSymbol","PFrameError","#frame","#id","#logger","hashAddColumnEntry","hashColumnId","PerfTimer","hashDataQuery","hashUniqueValuesRequestColumnId","AbortError","#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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"}