@milaboratories/pframes-rs-node 1.1.3 → 1.1.4
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/README.md +3 -3
- package/export/addon-def.ts +26 -33
- package/export/addon.ts +6 -8
- package/export/dump.ts +37 -48
- package/export/export.ts +4 -6
- package/export/index.ts +2 -2
- package/export/node-pre-gyp.d.ts +1 -1
- package/export/tests/pframes.test.ts +239 -307
- package/export/tests/setup.ts +6 -15
- package/export/wrapper.ts +145 -210
- package/package.json +43 -41
- package/export_dist/addon-def.d.ts +0 -40
- package/export_dist/addon-def.d.ts.map +0 -1
- package/export_dist/addon.cjs +0 -24
- package/export_dist/addon.cjs.map +0 -1
- package/export_dist/addon.d.ts +0 -4
- package/export_dist/addon.d.ts.map +0 -1
- package/export_dist/addon.js +0 -21
- package/export_dist/addon.js.map +0 -1
- package/export_dist/dump.cjs +0 -115
- package/export_dist/dump.cjs.map +0 -1
- package/export_dist/dump.d.ts +0 -12
- package/export_dist/dump.d.ts.map +0 -1
- package/export_dist/dump.js +0 -107
- package/export_dist/dump.js.map +0 -1
- package/export_dist/export.cjs +0 -15
- package/export_dist/export.cjs.map +0 -1
- package/export_dist/export.d.ts +0 -3
- package/export_dist/export.d.ts.map +0 -1
- package/export_dist/export.js +0 -13
- package/export_dist/export.js.map +0 -1
- package/export_dist/index.cjs +0 -13
- package/export_dist/index.cjs.map +0 -1
- package/export_dist/index.d.ts +0 -3
- package/export_dist/index.d.ts.map +0 -1
- package/export_dist/index.js +0 -3
- package/export_dist/index.js.map +0 -1
- package/export_dist/tests/pframes.test.d.ts +0 -2
- package/export_dist/tests/pframes.test.d.ts.map +0 -1
- package/export_dist/tests/setup.d.ts +0 -2
- package/export_dist/tests/setup.d.ts.map +0 -1
- package/export_dist/wrapper.cjs +0 -542
- package/export_dist/wrapper.cjs.map +0 -1
- package/export_dist/wrapper.d.ts +0 -51
- package/export_dist/wrapper.d.ts.map +0 -1
- package/export_dist/wrapper.js +0 -539
- package/export_dist/wrapper.js.map +0 -1
package/export/wrapper.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ulid } from
|
|
1
|
+
import { ulid } from "ulid";
|
|
2
2
|
import {
|
|
3
3
|
AbortError,
|
|
4
4
|
type PColumnInfo,
|
|
@@ -16,12 +16,12 @@ import {
|
|
|
16
16
|
type UniqueValuesResponse,
|
|
17
17
|
type QueryData,
|
|
18
18
|
ensureError,
|
|
19
|
-
isAbortError
|
|
20
|
-
} from
|
|
21
|
-
import type { PFrameInternal } from
|
|
22
|
-
import { PerfTimer } from
|
|
23
|
-
import type { NodeFrameSymbol, NodeTableSymbol } from
|
|
24
|
-
import { AddonSymbol } from
|
|
19
|
+
isAbortError,
|
|
20
|
+
} from "@milaboratories/pl-model-common";
|
|
21
|
+
import type { PFrameInternal } from "@milaboratories/pl-model-middle-layer";
|
|
22
|
+
import { PerfTimer } from "@milaboratories/helpers";
|
|
23
|
+
import type { NodeFrameSymbol, NodeTableSymbol } from "./addon-def";
|
|
24
|
+
import { AddonSymbol } from "./addon";
|
|
25
25
|
import {
|
|
26
26
|
dump,
|
|
27
27
|
hashColumnId,
|
|
@@ -29,8 +29,8 @@ import {
|
|
|
29
29
|
hashFilterColumnId,
|
|
30
30
|
hashUniqueValuesRequestColumnId,
|
|
31
31
|
hashSortingColumnId,
|
|
32
|
-
hashCreateTableRequestColumnId
|
|
33
|
-
} from
|
|
32
|
+
hashCreateTableRequestColumnId,
|
|
33
|
+
} from "./dump";
|
|
34
34
|
|
|
35
35
|
export async function pprofDump(): Promise<Uint8Array> {
|
|
36
36
|
try {
|
|
@@ -61,21 +61,21 @@ export class PFrame implements PFrameInternal.PFrameV13 {
|
|
|
61
61
|
[`${this.id}`, `${this.id}.json`],
|
|
62
62
|
{
|
|
63
63
|
timeStamp: Date.now(),
|
|
64
|
-
requestType:
|
|
64
|
+
requestType: "create",
|
|
65
65
|
},
|
|
66
|
-
this.#logger
|
|
66
|
+
this.#logger,
|
|
67
67
|
);
|
|
68
68
|
|
|
69
69
|
try {
|
|
70
70
|
this.#frame = AddonSymbol.pFrameCreate(options.spillPath, options.logger);
|
|
71
|
-
this.#logger(
|
|
71
|
+
this.#logger("info", `PFrame ${this.id} created`);
|
|
72
72
|
} catch (err: unknown) {
|
|
73
73
|
const error = new PFrameError(`PFrame creation failed`);
|
|
74
74
|
error.cause = new Error(
|
|
75
75
|
`PFrame ${this.id} creation failed, ` +
|
|
76
76
|
`logger: ${this.#logger?.toString()}, ` +
|
|
77
77
|
`error:\n` +
|
|
78
|
-
`${ensureError(err)}
|
|
78
|
+
`${ensureError(err)}`,
|
|
79
79
|
);
|
|
80
80
|
throw error;
|
|
81
81
|
}
|
|
@@ -87,21 +87,21 @@ export class PFrame implements PFrameInternal.PFrameV13 {
|
|
|
87
87
|
[`${this.id}`, `${requestId}.json`],
|
|
88
88
|
{
|
|
89
89
|
timeStamp: Date.now(),
|
|
90
|
-
requestType:
|
|
90
|
+
requestType: "addColumnSpec",
|
|
91
91
|
requestData: {
|
|
92
92
|
columnId: hashColumnId(columnId),
|
|
93
|
-
columnSpec
|
|
94
|
-
}
|
|
93
|
+
columnSpec,
|
|
94
|
+
},
|
|
95
95
|
},
|
|
96
|
-
this.#logger
|
|
96
|
+
this.#logger,
|
|
97
97
|
);
|
|
98
98
|
|
|
99
99
|
dump(
|
|
100
100
|
[`${this.id}`, `data`, `${hashColumnId(columnId)}.spec`],
|
|
101
101
|
{
|
|
102
|
-
...columnSpec
|
|
102
|
+
...columnSpec,
|
|
103
103
|
},
|
|
104
|
-
this.#logger
|
|
104
|
+
this.#logger,
|
|
105
105
|
);
|
|
106
106
|
|
|
107
107
|
try {
|
|
@@ -113,7 +113,7 @@ export class PFrame implements PFrameInternal.PFrameV13 {
|
|
|
113
113
|
`columnId: ${JSON.stringify(columnId)}, ` +
|
|
114
114
|
`columnSpec: ${JSON.stringify(columnSpec)}, ` +
|
|
115
115
|
`error:\n` +
|
|
116
|
-
`${ensureError(err)}
|
|
116
|
+
`${ensureError(err)}`,
|
|
117
117
|
);
|
|
118
118
|
throw error;
|
|
119
119
|
}
|
|
@@ -125,65 +125,61 @@ export class PFrame implements PFrameInternal.PFrameV13 {
|
|
|
125
125
|
[`${this.id}`, `${requestId}.json`],
|
|
126
126
|
{
|
|
127
127
|
timeStamp: Date.now(),
|
|
128
|
-
requestType:
|
|
128
|
+
requestType: "setDataSource",
|
|
129
129
|
},
|
|
130
|
-
this.#logger
|
|
130
|
+
this.#logger,
|
|
131
131
|
);
|
|
132
132
|
|
|
133
133
|
const wrappedDataSource = {
|
|
134
|
-
preloadBlob: async (
|
|
135
|
-
blobIds: PFrameInternal.PFrameBlobId[]
|
|
136
|
-
): Promise<void> => {
|
|
134
|
+
preloadBlob: async (blobIds: PFrameInternal.PFrameBlobId[]): Promise<void> => {
|
|
137
135
|
const requestId = ulid();
|
|
138
136
|
dump(
|
|
139
137
|
[`${this.id}`, `${requestId}.json`],
|
|
140
138
|
{
|
|
141
139
|
timeStamp: Date.now(),
|
|
142
|
-
requestType:
|
|
140
|
+
requestType: "preloadBlob",
|
|
143
141
|
requestData: {
|
|
144
|
-
blobIds
|
|
145
|
-
}
|
|
142
|
+
blobIds,
|
|
143
|
+
},
|
|
146
144
|
},
|
|
147
|
-
this.#logger
|
|
145
|
+
this.#logger,
|
|
148
146
|
);
|
|
149
147
|
|
|
150
148
|
this.#logger(
|
|
151
|
-
|
|
152
|
-
`PFrame ${this.id} preloadBlob started, blobIds: ${JSON.stringify(blobIds)}
|
|
149
|
+
"info",
|
|
150
|
+
`PFrame ${this.id} preloadBlob started, blobIds: ${JSON.stringify(blobIds)}`,
|
|
153
151
|
);
|
|
154
152
|
const timer = PerfTimer.start();
|
|
155
153
|
try {
|
|
156
154
|
return await dataSource.preloadBlob(blobIds);
|
|
157
155
|
} finally {
|
|
158
156
|
this.#logger(
|
|
159
|
-
|
|
160
|
-
`PFrame ${this.id} preloadBlob finished, took ${timer.elapsed()} (${blobIds.length} blobs)
|
|
157
|
+
"info",
|
|
158
|
+
`PFrame ${this.id} preloadBlob finished, took ${timer.elapsed()} (${blobIds.length} blobs)`,
|
|
161
159
|
);
|
|
162
160
|
}
|
|
163
161
|
},
|
|
164
|
-
resolveBlobContent: async (
|
|
165
|
-
blobId: PFrameInternal.PFrameBlobId
|
|
166
|
-
): Promise<Uint8Array> => {
|
|
162
|
+
resolveBlobContent: async (blobId: PFrameInternal.PFrameBlobId): Promise<Uint8Array> => {
|
|
167
163
|
const requestId = ulid();
|
|
168
164
|
dump(
|
|
169
165
|
[`${this.id}`, `${requestId}.json`],
|
|
170
166
|
{
|
|
171
167
|
timeStamp: Date.now(),
|
|
172
|
-
requestType:
|
|
168
|
+
requestType: "resolveBlobContent",
|
|
173
169
|
requestData: {
|
|
174
|
-
blobId
|
|
175
|
-
}
|
|
170
|
+
blobId,
|
|
171
|
+
},
|
|
176
172
|
},
|
|
177
|
-
this.#logger
|
|
173
|
+
this.#logger,
|
|
178
174
|
);
|
|
179
175
|
|
|
180
176
|
const blob = await dataSource.resolveBlobContent(blobId);
|
|
181
|
-
this.#logger(
|
|
177
|
+
this.#logger("info", `PFrame ${this.id} resolved blob ${blobId}`);
|
|
182
178
|
dump([`${this.id}`, `data`, `${blobId}`], blob, this.#logger);
|
|
183
179
|
|
|
184
180
|
return blob;
|
|
185
181
|
},
|
|
186
|
-
parquetServer: dataSource.parquetServer
|
|
182
|
+
parquetServer: dataSource.parquetServer,
|
|
187
183
|
};
|
|
188
184
|
|
|
189
185
|
try {
|
|
@@ -194,7 +190,7 @@ export class PFrame implements PFrameInternal.PFrameV13 {
|
|
|
194
190
|
`PFrame ${this.id} setDataSource request ${requestId} failed, ` +
|
|
195
191
|
`dataSource: ${dataSource.toString()}, ` +
|
|
196
192
|
`error:\n` +
|
|
197
|
-
`${ensureError(err)}
|
|
193
|
+
`${ensureError(err)}`,
|
|
198
194
|
);
|
|
199
195
|
throw error;
|
|
200
196
|
}
|
|
@@ -205,38 +201,33 @@ export class PFrame implements PFrameInternal.PFrameV13 {
|
|
|
205
201
|
dataInfo: PFrameInternal.DataInfo<PFrameInternal.PFrameBlobId>,
|
|
206
202
|
ops?: {
|
|
207
203
|
signal?: AbortSignal;
|
|
208
|
-
}
|
|
204
|
+
},
|
|
209
205
|
): Promise<void> {
|
|
210
206
|
const requestId = ulid();
|
|
211
207
|
dump(
|
|
212
208
|
[`${this.id}`, `${requestId}.json`],
|
|
213
209
|
{
|
|
214
210
|
timeStamp: Date.now(),
|
|
215
|
-
requestType:
|
|
211
|
+
requestType: "setColumnData",
|
|
216
212
|
requestData: {
|
|
217
213
|
columnId: hashColumnId(columnId),
|
|
218
|
-
dataInfo
|
|
219
|
-
}
|
|
214
|
+
dataInfo,
|
|
215
|
+
},
|
|
220
216
|
},
|
|
221
|
-
this.#logger
|
|
217
|
+
this.#logger,
|
|
222
218
|
);
|
|
223
219
|
|
|
224
220
|
dump(
|
|
225
221
|
[`${this.id}`, `data`, `${hashColumnId(columnId)}.datainfo`],
|
|
226
222
|
{
|
|
227
|
-
...dataInfo
|
|
223
|
+
...dataInfo,
|
|
228
224
|
},
|
|
229
|
-
this.#logger
|
|
225
|
+
this.#logger,
|
|
230
226
|
);
|
|
231
227
|
|
|
232
228
|
try {
|
|
233
229
|
ops?.signal?.throwIfAborted();
|
|
234
|
-
return AddonSymbol.pFrameSetColumnData(
|
|
235
|
-
this.#frame,
|
|
236
|
-
columnId,
|
|
237
|
-
dataInfo,
|
|
238
|
-
ops?.signal
|
|
239
|
-
);
|
|
230
|
+
return AddonSymbol.pFrameSetColumnData(this.#frame, columnId, dataInfo, ops?.signal);
|
|
240
231
|
} catch (err: unknown) {
|
|
241
232
|
const error = new PFrameError(`PFrame setColumnData request failed`);
|
|
242
233
|
error.cause = new Error(
|
|
@@ -244,7 +235,7 @@ export class PFrame implements PFrameInternal.PFrameV13 {
|
|
|
244
235
|
`columnId: ${JSON.stringify(columnId)}, ` +
|
|
245
236
|
`dataInfo: ${JSON.stringify(dataInfo)}, ` +
|
|
246
237
|
`error:\n` +
|
|
247
|
-
`${ensureError(err)}
|
|
238
|
+
`${ensureError(err)}`,
|
|
248
239
|
);
|
|
249
240
|
throw error;
|
|
250
241
|
}
|
|
@@ -256,20 +247,20 @@ export class PFrame implements PFrameInternal.PFrameV13 {
|
|
|
256
247
|
[`${this.id}`, `${requestId}.json`],
|
|
257
248
|
{
|
|
258
249
|
timeStamp: Date.now(),
|
|
259
|
-
requestType:
|
|
250
|
+
requestType: "dispose",
|
|
260
251
|
},
|
|
261
|
-
this.#logger
|
|
252
|
+
this.#logger,
|
|
262
253
|
);
|
|
263
254
|
|
|
264
255
|
try {
|
|
265
256
|
AddonSymbol.pFrameDispose(this.#frame);
|
|
266
|
-
this.#logger(
|
|
257
|
+
this.#logger("info", `PFrame ${this.id} disposed`);
|
|
267
258
|
} catch (err: unknown) {
|
|
268
259
|
const error = new PFrameError(`PFrame dispose request failed`);
|
|
269
260
|
error.cause = new Error(
|
|
270
261
|
`PFrame ${this.id} dispose request ${requestId} failed, ` +
|
|
271
262
|
`error:\n` +
|
|
272
|
-
`${ensureError(err)}
|
|
263
|
+
`${ensureError(err)}`,
|
|
273
264
|
);
|
|
274
265
|
throw error;
|
|
275
266
|
}
|
|
@@ -280,17 +271,17 @@ export class PFrame implements PFrameInternal.PFrameV13 {
|
|
|
280
271
|
}
|
|
281
272
|
|
|
282
273
|
async findColumns(
|
|
283
|
-
request: PFrameInternal.FindColumnsRequest
|
|
274
|
+
request: PFrameInternal.FindColumnsRequest,
|
|
284
275
|
): Promise<PFrameInternal.FindColumnsResponse> {
|
|
285
276
|
const requestId = ulid();
|
|
286
277
|
dump(
|
|
287
278
|
[`${this.id}`, `${requestId}.json`],
|
|
288
279
|
{
|
|
289
280
|
timeStamp: Date.now(),
|
|
290
|
-
requestType:
|
|
291
|
-
requestData: request
|
|
281
|
+
requestType: "findColumns",
|
|
282
|
+
requestData: request,
|
|
292
283
|
},
|
|
293
|
-
this.#logger
|
|
284
|
+
this.#logger,
|
|
294
285
|
);
|
|
295
286
|
|
|
296
287
|
const timer = PerfTimer.start();
|
|
@@ -302,29 +293,29 @@ export class PFrame implements PFrameInternal.PFrameV13 {
|
|
|
302
293
|
`PFrame ${this.id} findColumns request ${requestId} failed, ` +
|
|
303
294
|
`request: ${JSON.stringify(request)}, ` +
|
|
304
295
|
`error:\n` +
|
|
305
|
-
`${ensureError(err)}
|
|
296
|
+
`${ensureError(err)}`,
|
|
306
297
|
);
|
|
307
298
|
throw error;
|
|
308
299
|
} finally {
|
|
309
300
|
this.#logger(
|
|
310
|
-
|
|
311
|
-
`PFrame ${this.id} findColumns request ${requestId} took ${timer.elapsed()}
|
|
301
|
+
"info",
|
|
302
|
+
`PFrame ${this.id} findColumns request ${requestId} took ${timer.elapsed()}`,
|
|
312
303
|
);
|
|
313
304
|
}
|
|
314
305
|
}
|
|
315
306
|
|
|
316
307
|
async deleteColumn(
|
|
317
|
-
request: PFrameInternal.DeleteColumnFromColumnsRequest
|
|
308
|
+
request: PFrameInternal.DeleteColumnFromColumnsRequest,
|
|
318
309
|
): Promise<PFrameInternal.DeleteColumnFromColumnsResponse> {
|
|
319
310
|
const requestId = ulid();
|
|
320
311
|
dump(
|
|
321
312
|
[`${this.id}`, `${requestId}.json`],
|
|
322
313
|
{
|
|
323
314
|
timeStamp: Date.now(),
|
|
324
|
-
requestType:
|
|
325
|
-
requestData: request
|
|
315
|
+
requestType: "deleteColumn",
|
|
316
|
+
requestData: request,
|
|
326
317
|
},
|
|
327
|
-
this.#logger
|
|
318
|
+
this.#logger,
|
|
328
319
|
);
|
|
329
320
|
|
|
330
321
|
const timer = PerfTimer.start();
|
|
@@ -336,13 +327,13 @@ export class PFrame implements PFrameInternal.PFrameV13 {
|
|
|
336
327
|
`PFrame ${this.id} deleteColumn request ${requestId} failed, ` +
|
|
337
328
|
`request: ${JSON.stringify(request)}, ` +
|
|
338
329
|
`error:\n` +
|
|
339
|
-
`${ensureError(err)}
|
|
330
|
+
`${ensureError(err)}`,
|
|
340
331
|
);
|
|
341
332
|
throw error;
|
|
342
333
|
} finally {
|
|
343
334
|
this.#logger(
|
|
344
|
-
|
|
345
|
-
`PFrame ${this.id} deleteColumn request ${requestId} took ${timer.elapsed()}
|
|
335
|
+
"info",
|
|
336
|
+
`PFrame ${this.id} deleteColumn request ${requestId} took ${timer.elapsed()}`,
|
|
346
337
|
);
|
|
347
338
|
}
|
|
348
339
|
}
|
|
@@ -353,12 +344,12 @@ export class PFrame implements PFrameInternal.PFrameV13 {
|
|
|
353
344
|
[`${this.id}`, `${requestId}.json`],
|
|
354
345
|
{
|
|
355
346
|
timeStamp: Date.now(),
|
|
356
|
-
requestType:
|
|
347
|
+
requestType: "getColumnSpec",
|
|
357
348
|
requestData: {
|
|
358
|
-
columnId: hashColumnId(columnId)
|
|
359
|
-
}
|
|
349
|
+
columnId: hashColumnId(columnId),
|
|
350
|
+
},
|
|
360
351
|
},
|
|
361
|
-
this.#logger
|
|
352
|
+
this.#logger,
|
|
362
353
|
);
|
|
363
354
|
|
|
364
355
|
try {
|
|
@@ -369,7 +360,7 @@ export class PFrame implements PFrameInternal.PFrameV13 {
|
|
|
369
360
|
`PFrame ${this.id} getColumnSpec request ${requestId} failed, ` +
|
|
370
361
|
`columnId: ${JSON.stringify(columnId)}, ` +
|
|
371
362
|
`error:\n` +
|
|
372
|
-
`${ensureError(err)}
|
|
363
|
+
`${ensureError(err)}`,
|
|
373
364
|
);
|
|
374
365
|
throw error;
|
|
375
366
|
}
|
|
@@ -381,9 +372,9 @@ export class PFrame implements PFrameInternal.PFrameV13 {
|
|
|
381
372
|
[`${this.id}`, `${requestId}.json`],
|
|
382
373
|
{
|
|
383
374
|
timeStamp: Date.now(),
|
|
384
|
-
requestType:
|
|
375
|
+
requestType: "listColumns",
|
|
385
376
|
},
|
|
386
|
-
this.#logger
|
|
377
|
+
this.#logger,
|
|
387
378
|
);
|
|
388
379
|
|
|
389
380
|
try {
|
|
@@ -393,7 +384,7 @@ export class PFrame implements PFrameInternal.PFrameV13 {
|
|
|
393
384
|
error.cause = new Error(
|
|
394
385
|
`PFrame ${this.id} listColumns request ${requestId} failed, ` +
|
|
395
386
|
`error:\n` +
|
|
396
|
-
`${ensureError(err)}
|
|
387
|
+
`${ensureError(err)}`,
|
|
397
388
|
);
|
|
398
389
|
throw error;
|
|
399
390
|
}
|
|
@@ -401,27 +392,19 @@ export class PFrame implements PFrameInternal.PFrameV13 {
|
|
|
401
392
|
|
|
402
393
|
createTable(
|
|
403
394
|
requestId: PFrameInternal.PTableId,
|
|
404
|
-
request: PFrameInternal.CreateTableRequestV4
|
|
395
|
+
request: PFrameInternal.CreateTableRequestV4,
|
|
405
396
|
): PTable {
|
|
406
397
|
const dumpData = {
|
|
407
398
|
timeStamp: Date.now(),
|
|
408
|
-
requestType:
|
|
409
|
-
requestData: hashCreateTableRequestColumnId(request)
|
|
399
|
+
requestType: "createTable",
|
|
400
|
+
requestData: hashCreateTableRequestColumnId(request),
|
|
410
401
|
};
|
|
411
402
|
dump([`${this.id}`, `${requestId}.json`], dumpData, this.#logger);
|
|
412
|
-
dump(
|
|
413
|
-
[`${this.id}`, `${requestId}`, `${requestId}.json`],
|
|
414
|
-
dumpData,
|
|
415
|
-
this.#logger
|
|
416
|
-
);
|
|
403
|
+
dump([`${this.id}`, `${requestId}`, `${requestId}.json`], dumpData, this.#logger);
|
|
417
404
|
|
|
418
405
|
const timer = PerfTimer.start();
|
|
419
406
|
try {
|
|
420
|
-
const boxed = AddonSymbol.pFrameCreateTable(
|
|
421
|
-
this.#frame,
|
|
422
|
-
requestId,
|
|
423
|
-
request
|
|
424
|
-
);
|
|
407
|
+
const boxed = AddonSymbol.pFrameCreateTable(this.#frame, requestId, request);
|
|
425
408
|
return new PTable(this, requestId, boxed, this.#logger);
|
|
426
409
|
} catch (err: unknown) {
|
|
427
410
|
const error = new PFrameError(`PFrame createTable request failed`);
|
|
@@ -429,13 +412,13 @@ export class PFrame implements PFrameInternal.PFrameV13 {
|
|
|
429
412
|
`PFrame ${this.id} createTable request ${requestId} failed, ` +
|
|
430
413
|
`request: ${JSON.stringify(request)}, ` +
|
|
431
414
|
`error:\n` +
|
|
432
|
-
`${ensureError(err)}
|
|
415
|
+
`${ensureError(err)}`,
|
|
433
416
|
);
|
|
434
417
|
throw error;
|
|
435
418
|
} finally {
|
|
436
419
|
this.#logger(
|
|
437
|
-
|
|
438
|
-
`PFrame ${this.id} createTable request ${requestId} took ${timer.elapsed()}
|
|
420
|
+
"info",
|
|
421
|
+
`PFrame ${this.id} createTable request ${requestId} took ${timer.elapsed()}`,
|
|
439
422
|
);
|
|
440
423
|
}
|
|
441
424
|
}
|
|
@@ -445,28 +428,24 @@ export class PFrame implements PFrameInternal.PFrameV13 {
|
|
|
445
428
|
request: {
|
|
446
429
|
tableSpec: PTableColumnSpec[];
|
|
447
430
|
dataQuery: QueryData;
|
|
448
|
-
}
|
|
431
|
+
},
|
|
449
432
|
): PTable {
|
|
450
433
|
const timer = PerfTimer.start();
|
|
451
434
|
try {
|
|
452
|
-
const boxed = AddonSymbol.pFrameCreateTableV2(
|
|
453
|
-
this.#frame,
|
|
454
|
-
requestId,
|
|
455
|
-
request
|
|
456
|
-
);
|
|
435
|
+
const boxed = AddonSymbol.pFrameCreateTableV2(this.#frame, requestId, request);
|
|
457
436
|
return new PTable(this, requestId, boxed, this.#logger);
|
|
458
437
|
} catch (err: unknown) {
|
|
459
438
|
const error = new PFrameError(`PFrame createTableV2 request failed`);
|
|
460
439
|
error.cause = new Error(
|
|
461
440
|
`PFrame ${this.id} createTableV2 request ${requestId} failed, ` +
|
|
462
441
|
`error:\n` +
|
|
463
|
-
`${ensureError(err)}
|
|
442
|
+
`${ensureError(err)}`,
|
|
464
443
|
);
|
|
465
444
|
throw error;
|
|
466
445
|
} finally {
|
|
467
446
|
this.#logger(
|
|
468
|
-
|
|
469
|
-
`PFrame ${this.id} createTableV2 request ${requestId} took ${timer.elapsed()}
|
|
447
|
+
"info",
|
|
448
|
+
`PFrame ${this.id} createTableV2 request ${requestId} took ${timer.elapsed()}`,
|
|
470
449
|
);
|
|
471
450
|
}
|
|
472
451
|
}
|
|
@@ -475,50 +454,40 @@ export class PFrame implements PFrameInternal.PFrameV13 {
|
|
|
475
454
|
request: UniqueValuesRequest,
|
|
476
455
|
ops?: {
|
|
477
456
|
signal?: AbortSignal;
|
|
478
|
-
}
|
|
457
|
+
},
|
|
479
458
|
): Promise<UniqueValuesResponse> {
|
|
480
459
|
const requestId = ulid() as PFrameInternal.PTableId;
|
|
481
460
|
dump(
|
|
482
461
|
[`${this.id}`, `${requestId}.json`],
|
|
483
462
|
{
|
|
484
463
|
timeStamp: Date.now(),
|
|
485
|
-
requestType:
|
|
486
|
-
requestData: hashUniqueValuesRequestColumnId(request)
|
|
464
|
+
requestType: "getUniqueValues",
|
|
465
|
+
requestData: hashUniqueValuesRequestColumnId(request),
|
|
487
466
|
},
|
|
488
|
-
this.#logger
|
|
467
|
+
this.#logger,
|
|
489
468
|
);
|
|
490
469
|
|
|
491
|
-
this.#logger(
|
|
492
|
-
'info',
|
|
493
|
-
`PFrame ${this.id} getUniqueValues request ${requestId} started`
|
|
494
|
-
);
|
|
470
|
+
this.#logger("info", `PFrame ${this.id} getUniqueValues request ${requestId} started`);
|
|
495
471
|
const timer = PerfTimer.start();
|
|
496
472
|
try {
|
|
497
473
|
ops?.signal?.throwIfAborted();
|
|
498
|
-
return await AddonSymbol.pFrameGetUniqueValues(
|
|
499
|
-
this.#frame,
|
|
500
|
-
requestId,
|
|
501
|
-
request,
|
|
502
|
-
ops?.signal
|
|
503
|
-
);
|
|
474
|
+
return await AddonSymbol.pFrameGetUniqueValues(this.#frame, requestId, request, ops?.signal);
|
|
504
475
|
} catch (err: unknown) {
|
|
505
476
|
if (isAbortError(err)) {
|
|
506
|
-
throw new AbortError(
|
|
507
|
-
`PFrame ${this.id} getUniqueValues request ${requestId} cancelled`
|
|
508
|
-
);
|
|
477
|
+
throw new AbortError(`PFrame ${this.id} getUniqueValues request ${requestId} cancelled`);
|
|
509
478
|
}
|
|
510
479
|
const error = new PFrameError(`PFrame getUniqueValues request failed`);
|
|
511
480
|
error.cause = new Error(
|
|
512
481
|
`PFrame ${this.id} getUniqueValues request ${requestId} failed, ` +
|
|
513
482
|
`request: ${JSON.stringify(request)}, ` +
|
|
514
483
|
`error:\n` +
|
|
515
|
-
`${ensureError(err)}
|
|
484
|
+
`${ensureError(err)}`,
|
|
516
485
|
);
|
|
517
486
|
throw error;
|
|
518
487
|
} finally {
|
|
519
488
|
this.#logger(
|
|
520
|
-
|
|
521
|
-
`PFrame ${this.id} getUniqueValues request ${requestId} finished, took ${timer.elapsed()}
|
|
489
|
+
"info",
|
|
490
|
+
`PFrame ${this.id} getUniqueValues request ${requestId} finished, took ${timer.elapsed()}`,
|
|
522
491
|
);
|
|
523
492
|
}
|
|
524
493
|
}
|
|
@@ -536,17 +505,12 @@ class PTable implements PFrameInternal.PTableV8 {
|
|
|
536
505
|
|
|
537
506
|
readonly #logger: PFrameInternal.Logger;
|
|
538
507
|
|
|
539
|
-
constructor(
|
|
540
|
-
frame: PFrame,
|
|
541
|
-
id: string,
|
|
542
|
-
table: NodeTableSymbol,
|
|
543
|
-
logger: PFrameInternal.Logger
|
|
544
|
-
) {
|
|
508
|
+
constructor(frame: PFrame, id: string, table: NodeTableSymbol, logger: PFrameInternal.Logger) {
|
|
545
509
|
this.#frame = frame;
|
|
546
510
|
this.#table = table;
|
|
547
511
|
this.#id = id;
|
|
548
512
|
this.#logger = logger;
|
|
549
|
-
this.#logger(
|
|
513
|
+
this.#logger("info", `PTable ${this.id} created`);
|
|
550
514
|
}
|
|
551
515
|
|
|
552
516
|
getSpec(): PTableColumnSpec[] {
|
|
@@ -555,9 +519,9 @@ class PTable implements PFrameInternal.PTableV8 {
|
|
|
555
519
|
[`${this.#frame.id}`, `${this.id}`, `${requestId}.json`],
|
|
556
520
|
{
|
|
557
521
|
timeStamp: Date.now(),
|
|
558
|
-
requestType:
|
|
522
|
+
requestType: "getSpec",
|
|
559
523
|
},
|
|
560
|
-
this.#logger
|
|
524
|
+
this.#logger,
|
|
561
525
|
);
|
|
562
526
|
|
|
563
527
|
try {
|
|
@@ -567,7 +531,7 @@ class PTable implements PFrameInternal.PTableV8 {
|
|
|
567
531
|
error.cause = new Error(
|
|
568
532
|
`PTable ${this.id} getSpec request ${requestId} failed, ` +
|
|
569
533
|
`error:\n` +
|
|
570
|
-
`${ensureError(err)}
|
|
534
|
+
`${ensureError(err)}`,
|
|
571
535
|
);
|
|
572
536
|
throw error;
|
|
573
537
|
}
|
|
@@ -579,12 +543,12 @@ class PTable implements PFrameInternal.PTableV8 {
|
|
|
579
543
|
[`${this.#frame.id}`, `${this.id}`, `${requestId}.json`],
|
|
580
544
|
{
|
|
581
545
|
timeStamp: Date.now(),
|
|
582
|
-
requestType:
|
|
546
|
+
requestType: "getColumnIndices",
|
|
583
547
|
requestData: {
|
|
584
|
-
columnIds: columnIds.map(hashTableColumnId)
|
|
585
|
-
}
|
|
548
|
+
columnIds: columnIds.map(hashTableColumnId),
|
|
549
|
+
},
|
|
586
550
|
},
|
|
587
|
-
this.#logger
|
|
551
|
+
this.#logger,
|
|
588
552
|
);
|
|
589
553
|
|
|
590
554
|
try {
|
|
@@ -595,7 +559,7 @@ class PTable implements PFrameInternal.PTableV8 {
|
|
|
595
559
|
`PTable ${this.id} getColumnIndices request ${requestId} failed, ` +
|
|
596
560
|
`columnIds: ${JSON.stringify(columnIds)}, ` +
|
|
597
561
|
`error:\n` +
|
|
598
|
-
`${ensureError(err)}
|
|
562
|
+
`${ensureError(err)}`,
|
|
599
563
|
);
|
|
600
564
|
throw error;
|
|
601
565
|
}
|
|
@@ -607,9 +571,9 @@ class PTable implements PFrameInternal.PTableV8 {
|
|
|
607
571
|
[`${this.#frame.id}`, `${this.id}`, `${requestId}.json`],
|
|
608
572
|
{
|
|
609
573
|
timeStamp: Date.now(),
|
|
610
|
-
requestType:
|
|
574
|
+
requestType: "getFootprint",
|
|
611
575
|
},
|
|
612
|
-
this.#logger
|
|
576
|
+
this.#logger,
|
|
613
577
|
);
|
|
614
578
|
|
|
615
579
|
try {
|
|
@@ -617,15 +581,13 @@ class PTable implements PFrameInternal.PTableV8 {
|
|
|
617
581
|
return await AddonSymbol.pTableGetFootprint(this.#table, ops?.signal);
|
|
618
582
|
} catch (err: unknown) {
|
|
619
583
|
if (!isAbortError(err)) {
|
|
620
|
-
throw new AbortError(
|
|
621
|
-
`PTable ${this.id} getFootprint request ${requestId} cancelled`
|
|
622
|
-
);
|
|
584
|
+
throw new AbortError(`PTable ${this.id} getFootprint request ${requestId} cancelled`);
|
|
623
585
|
}
|
|
624
586
|
const error = new PFrameError(`PTable getFootprint request failed`);
|
|
625
587
|
error.cause = new Error(
|
|
626
588
|
`PTable ${this.id} getFootprint request ${requestId} failed, ` +
|
|
627
589
|
`error:\n` +
|
|
628
|
-
`${ensureError(err)}
|
|
590
|
+
`${ensureError(err)}`,
|
|
629
591
|
);
|
|
630
592
|
throw error;
|
|
631
593
|
}
|
|
@@ -637,36 +599,31 @@ class PTable implements PFrameInternal.PTableV8 {
|
|
|
637
599
|
[`${this.#frame.id}`, `${this.id}`, `${requestId}.json`],
|
|
638
600
|
{
|
|
639
601
|
timeStamp: Date.now(),
|
|
640
|
-
requestType:
|
|
602
|
+
requestType: "getShape",
|
|
641
603
|
},
|
|
642
|
-
this.#logger
|
|
604
|
+
this.#logger,
|
|
643
605
|
);
|
|
644
606
|
|
|
645
|
-
this.#logger(
|
|
646
|
-
'info',
|
|
647
|
-
`PTable ${this.id} getShape request ${requestId} started`
|
|
648
|
-
);
|
|
607
|
+
this.#logger("info", `PTable ${this.id} getShape request ${requestId} started`);
|
|
649
608
|
const timer = PerfTimer.start();
|
|
650
609
|
try {
|
|
651
610
|
ops?.signal?.throwIfAborted();
|
|
652
611
|
return await AddonSymbol.pTableGetShape(this.#table, ops?.signal);
|
|
653
612
|
} catch (err: unknown) {
|
|
654
613
|
if (isAbortError(err)) {
|
|
655
|
-
throw new AbortError(
|
|
656
|
-
`PTable ${this.id} getShape request ${requestId} cancelled`
|
|
657
|
-
);
|
|
614
|
+
throw new AbortError(`PTable ${this.id} getShape request ${requestId} cancelled`);
|
|
658
615
|
}
|
|
659
616
|
const error = new PFrameError(`PTable getShape request failed`);
|
|
660
617
|
error.cause = new Error(
|
|
661
618
|
`PTable ${this.id} getShape request ${requestId} failed, ` +
|
|
662
619
|
`error:\n` +
|
|
663
|
-
`${ensureError(err)}
|
|
620
|
+
`${ensureError(err)}`,
|
|
664
621
|
);
|
|
665
622
|
throw error;
|
|
666
623
|
} finally {
|
|
667
624
|
this.#logger(
|
|
668
|
-
|
|
669
|
-
`PTable ${this.id} getShape request ${requestId} finished, took ${timer.elapsed()}
|
|
625
|
+
"info",
|
|
626
|
+
`PTable ${this.id} getShape request ${requestId} finished, took ${timer.elapsed()}`,
|
|
670
627
|
);
|
|
671
628
|
}
|
|
672
629
|
}
|
|
@@ -676,26 +633,23 @@ class PTable implements PFrameInternal.PTableV8 {
|
|
|
676
633
|
ops?: {
|
|
677
634
|
range?: TableRange | undefined;
|
|
678
635
|
signal?: AbortSignal | undefined;
|
|
679
|
-
}
|
|
636
|
+
},
|
|
680
637
|
): Promise<PTableVector[]> {
|
|
681
638
|
const requestId = ulid() as PFrameInternal.PTableId;
|
|
682
639
|
dump(
|
|
683
640
|
[`${this.#frame.id}`, `${this.id}`, `${requestId}.json`],
|
|
684
641
|
{
|
|
685
642
|
timeStamp: Date.now(),
|
|
686
|
-
requestType:
|
|
643
|
+
requestType: "getData",
|
|
687
644
|
requestData: {
|
|
688
645
|
columnIndices,
|
|
689
|
-
range: ops?.range ?? null
|
|
690
|
-
}
|
|
646
|
+
range: ops?.range ?? null,
|
|
647
|
+
},
|
|
691
648
|
},
|
|
692
|
-
this.#logger
|
|
649
|
+
this.#logger,
|
|
693
650
|
);
|
|
694
651
|
|
|
695
|
-
this.#logger(
|
|
696
|
-
'info',
|
|
697
|
-
`PTable ${this.id} getData request ${requestId} started`
|
|
698
|
-
);
|
|
652
|
+
this.#logger("info", `PTable ${this.id} getData request ${requestId} started`);
|
|
699
653
|
let rowCount = 0;
|
|
700
654
|
const timer = PerfTimer.start();
|
|
701
655
|
try {
|
|
@@ -705,15 +659,13 @@ class PTable implements PFrameInternal.PTableV8 {
|
|
|
705
659
|
requestId,
|
|
706
660
|
columnIndices,
|
|
707
661
|
ops?.range,
|
|
708
|
-
ops?.signal
|
|
662
|
+
ops?.signal,
|
|
709
663
|
);
|
|
710
664
|
rowCount = result[0].data.length;
|
|
711
665
|
return result;
|
|
712
666
|
} catch (err: unknown) {
|
|
713
667
|
if (isAbortError(err)) {
|
|
714
|
-
throw new AbortError(
|
|
715
|
-
`PTable ${this.id} getData request ${requestId} cancelled`
|
|
716
|
-
);
|
|
668
|
+
throw new AbortError(`PTable ${this.id} getData request ${requestId} cancelled`);
|
|
717
669
|
}
|
|
718
670
|
const error = new PFrameError(`PTable getData request failed`);
|
|
719
671
|
error.cause = new Error(
|
|
@@ -721,35 +673,28 @@ class PTable implements PFrameInternal.PTableV8 {
|
|
|
721
673
|
`columnIndices: ${JSON.stringify(columnIndices)}, ` +
|
|
722
674
|
`range: ${ops?.range ? JSON.stringify(ops.range) : undefined}, ` +
|
|
723
675
|
`error:\n` +
|
|
724
|
-
`${ensureError(err)}
|
|
676
|
+
`${ensureError(err)}`,
|
|
725
677
|
);
|
|
726
678
|
throw error;
|
|
727
679
|
} finally {
|
|
728
680
|
this.#logger(
|
|
729
|
-
|
|
730
|
-
`PTable ${this.id} getData request ${requestId} finished, took ${timer.elapsed()} (${rowCount} rows)
|
|
681
|
+
"info",
|
|
682
|
+
`PTable ${this.id} getData request ${requestId} finished, took ${timer.elapsed()} (${rowCount} rows)`,
|
|
731
683
|
);
|
|
732
684
|
}
|
|
733
685
|
}
|
|
734
686
|
|
|
735
|
-
filter(
|
|
736
|
-
requestId: PFrameInternal.PTableId,
|
|
737
|
-
request: PTableRecordFilter[]
|
|
738
|
-
): PTable {
|
|
687
|
+
filter(requestId: PFrameInternal.PTableId, request: PTableRecordFilter[]): PTable {
|
|
739
688
|
const dumpData = {
|
|
740
689
|
timeStamp: Date.now(),
|
|
741
690
|
table: this.id,
|
|
742
|
-
requestType:
|
|
691
|
+
requestType: "filter",
|
|
743
692
|
requestData: {
|
|
744
|
-
filters: request.map(hashFilterColumnId)
|
|
745
|
-
}
|
|
693
|
+
filters: request.map(hashFilterColumnId),
|
|
694
|
+
},
|
|
746
695
|
};
|
|
747
696
|
dump([`${this.#frame.id}`, `${requestId}.json`], dumpData, this.#logger);
|
|
748
|
-
dump(
|
|
749
|
-
[`${this.#frame.id}`, `${requestId}`, `${requestId}.json`],
|
|
750
|
-
dumpData,
|
|
751
|
-
this.#logger
|
|
752
|
-
);
|
|
697
|
+
dump([`${this.#frame.id}`, `${requestId}`, `${requestId}.json`], dumpData, this.#logger);
|
|
753
698
|
|
|
754
699
|
const timer = PerfTimer.start();
|
|
755
700
|
try {
|
|
@@ -761,14 +706,11 @@ class PTable implements PFrameInternal.PTableV8 {
|
|
|
761
706
|
`PTable ${this.id} filter request ${requestId} failed, ` +
|
|
762
707
|
`request: ${JSON.stringify(request)}, ` +
|
|
763
708
|
`error:\n` +
|
|
764
|
-
`${ensureError(err)}
|
|
709
|
+
`${ensureError(err)}`,
|
|
765
710
|
);
|
|
766
711
|
throw error;
|
|
767
712
|
} finally {
|
|
768
|
-
this.#logger(
|
|
769
|
-
'info',
|
|
770
|
-
`PTable ${this.id} filter request ${requestId} took ${timer.elapsed()}`
|
|
771
|
-
);
|
|
713
|
+
this.#logger("info", `PTable ${this.id} filter request ${requestId} took ${timer.elapsed()}`);
|
|
772
714
|
}
|
|
773
715
|
}
|
|
774
716
|
|
|
@@ -776,15 +718,11 @@ class PTable implements PFrameInternal.PTableV8 {
|
|
|
776
718
|
const dumpData = {
|
|
777
719
|
timeStamp: Date.now(),
|
|
778
720
|
table: this.id,
|
|
779
|
-
requestType:
|
|
780
|
-
requestData: request.map(hashSortingColumnId)
|
|
721
|
+
requestType: "sort",
|
|
722
|
+
requestData: request.map(hashSortingColumnId),
|
|
781
723
|
};
|
|
782
724
|
dump([`${this.#frame.id}`, `${requestId}.json`], dumpData, this.#logger);
|
|
783
|
-
dump(
|
|
784
|
-
[`${this.#frame.id}`, `${requestId}`, `${requestId}.json`],
|
|
785
|
-
dumpData,
|
|
786
|
-
this.#logger
|
|
787
|
-
);
|
|
725
|
+
dump([`${this.#frame.id}`, `${requestId}`, `${requestId}.json`], dumpData, this.#logger);
|
|
788
726
|
|
|
789
727
|
const timer = PerfTimer.start();
|
|
790
728
|
try {
|
|
@@ -796,14 +734,11 @@ class PTable implements PFrameInternal.PTableV8 {
|
|
|
796
734
|
`PTable ${this.id} sort request ${requestId} failed, ` +
|
|
797
735
|
`request: ${JSON.stringify(request)}, ` +
|
|
798
736
|
`error:\n` +
|
|
799
|
-
`${ensureError(err)}
|
|
737
|
+
`${ensureError(err)}`,
|
|
800
738
|
);
|
|
801
739
|
throw error;
|
|
802
740
|
} finally {
|
|
803
|
-
this.#logger(
|
|
804
|
-
'info',
|
|
805
|
-
`PTable ${this.id} sort request ${requestId} took ${timer.elapsed()}`
|
|
806
|
-
);
|
|
741
|
+
this.#logger("info", `PTable ${this.id} sort request ${requestId} took ${timer.elapsed()}`);
|
|
807
742
|
}
|
|
808
743
|
}
|
|
809
744
|
|
|
@@ -813,20 +748,20 @@ class PTable implements PFrameInternal.PTableV8 {
|
|
|
813
748
|
[`${this.#frame.id}`, `${this.id}`, `${requestId}.json`],
|
|
814
749
|
{
|
|
815
750
|
timeStamp: Date.now(),
|
|
816
|
-
requestType:
|
|
751
|
+
requestType: "dispose",
|
|
817
752
|
},
|
|
818
|
-
this.#logger
|
|
753
|
+
this.#logger,
|
|
819
754
|
);
|
|
820
755
|
|
|
821
756
|
try {
|
|
822
757
|
AddonSymbol.pTableDispose(this.#table);
|
|
823
|
-
this.#logger(
|
|
758
|
+
this.#logger("info", `PTable ${this.id} disposed`);
|
|
824
759
|
} catch (err: unknown) {
|
|
825
760
|
const error = new PFrameError(`PTable dispose request failed`);
|
|
826
761
|
error.cause = new Error(
|
|
827
762
|
`PTable ${this.id} dispose request ${requestId} failed, ` +
|
|
828
763
|
`error:\n` +
|
|
829
|
-
`${ensureError(err)}
|
|
764
|
+
`${ensureError(err)}`,
|
|
830
765
|
);
|
|
831
766
|
throw error;
|
|
832
767
|
}
|