@milaboratories/pframes-rs-node 1.1.36 → 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.
- package/export/addon-def.ts +9 -52
- package/export/dump.ts +27 -112
- package/export/export.ts +2 -2
- package/export/wrapper.ts +39 -356
- package/export_dist/dump.cjs +17 -81
- package/export_dist/dump.cjs.map +1 -1
- package/export_dist/dump.js +16 -77
- package/export_dist/dump.js.map +1 -1
- package/export_dist/export.cjs.map +1 -1
- package/export_dist/export.d.ts +1 -1
- package/export_dist/export.js.map +1 -1
- package/export_dist/wrapper.cjs +31 -225
- package/export_dist/wrapper.cjs.map +1 -1
- package/export_dist/wrapper.js +32 -226
- package/export_dist/wrapper.js.map +1 -1
- package/package.json +4 -4
package/export_dist/dump.js
CHANGED
|
@@ -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
|
|
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
|
-
...
|
|
18
|
-
|
|
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,
|
|
110
|
+
export { dump, hashAddColumnEntry, hashColumnId, hashDataQuery, hashUniqueValuesRequestColumnId };
|
|
172
111
|
|
|
173
112
|
//# sourceMappingURL=dump.js.map
|
package/export_dist/dump.js.map
CHANGED
|
@@ -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 {
|
|
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.
|
|
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"}
|
package/export_dist/export.d.ts
CHANGED
|
@@ -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.
|
|
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.
|
|
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"}
|
package/export_dist/wrapper.cjs
CHANGED
|
@@ -37,26 +37,32 @@ var PFrame = class {
|
|
|
37
37
|
throw error;
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
|
-
|
|
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: "
|
|
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
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
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
|
-
|
|
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
|
|
59
|
-
error.cause = /* @__PURE__ */ new Error(`PFrame ${this.id}
|
|
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
|
-
|
|
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.
|
|
140
|
+
requestData: require_dump.hashDataQuery(dataQuery)
|
|
223
141
|
};
|
|
224
|
-
require_dump.dump([`${this.id}`, `${
|
|
142
|
+
require_dump.dump([`${this.id}`, `${tableId}.json`], dumpData, this.#logger);
|
|
225
143
|
require_dump.dump([
|
|
226
144
|
`${this.id}`,
|
|
227
|
-
`${
|
|
228
|
-
`${
|
|
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,
|
|
233
|
-
return new PTable(this,
|
|
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 ${
|
|
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 ${
|
|
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
|
|
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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"}
|