@milaboratories/pframes-rs-node 1.0.39 → 1.0.40

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/wrapper.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import humanizeDuration from 'humanize-duration';
1
2
  import { ulid } from 'ulid';
2
3
  import {
3
4
  DataInfo,
@@ -124,7 +125,7 @@ export class PFrame implements PFrameInternal.PFrameV6 {
124
125
  const t1 = performance.now();
125
126
  this.logger?.(
126
127
  'info',
127
- `PFrame ${this.id} preloaded ${blobIds.length} blobs ${JSON.stringify(blobIds)}, took ${Math.round(t1 - t0)}ms`
128
+ `PFrame ${this.id} preloaded ${blobIds.length} blobs ${JSON.stringify(blobIds)}, took ${humanizeDuration(Math.round(t1 - t0))}`
128
129
  );
129
130
  }
130
131
  },
@@ -258,7 +259,7 @@ export class PFrame implements PFrameInternal.PFrameV6 {
258
259
  const t1 = performance.now();
259
260
  this.logger?.(
260
261
  'info',
261
- `PFrame ${this.id} findColumns request ${requestId} took ${Math.round(t1 - t0)}ms`
262
+ `PFrame ${this.id} findColumns request ${requestId} took ${humanizeDuration(Math.round(t1 - t0))}`
262
263
  );
263
264
  }
264
265
  }
@@ -291,7 +292,7 @@ export class PFrame implements PFrameInternal.PFrameV6 {
291
292
  const t1 = performance.now();
292
293
  this.logger?.(
293
294
  'info',
294
- `PFrame ${this.id} deleteColumn request ${requestId} took ${Math.round(t1 - t0)}ms`
295
+ `PFrame ${this.id} deleteColumn request ${requestId} took ${humanizeDuration(Math.round(t1 - t0))}`
295
296
  );
296
297
  }
297
298
  }
@@ -324,7 +325,7 @@ export class PFrame implements PFrameInternal.PFrameV6 {
324
325
  const t1 = performance.now();
325
326
  this.logger?.(
326
327
  'info',
327
- `PFrame ${this.id} getColumnSpec request ${requestId} took ${Math.round(t1 - t0)}ms`
328
+ `PFrame ${this.id} getColumnSpec request ${requestId} took ${humanizeDuration(Math.round(t1 - t0))}`
328
329
  );
329
330
  }
330
331
  }
@@ -353,7 +354,7 @@ export class PFrame implements PFrameInternal.PFrameV6 {
353
354
  const t1 = performance.now();
354
355
  this.logger?.(
355
356
  'info',
356
- `PFrame ${this.id} listColumns request ${requestId} took ${Math.round(t1 - t0)}ms`
357
+ `PFrame ${this.id} listColumns request ${requestId} took ${humanizeDuration(Math.round(t1 - t0))}`
357
358
  );
358
359
  }
359
360
  }
@@ -375,6 +376,10 @@ export class PFrame implements PFrameInternal.PFrameV6 {
375
376
  this.logger
376
377
  );
377
378
 
379
+ this.logger?.(
380
+ 'info',
381
+ `PFrame ${this.id} createTable request ${requestId} started`
382
+ );
378
383
  const t0 = performance.now();
379
384
  try {
380
385
  signal?.throwIfAborted();
@@ -396,7 +401,7 @@ export class PFrame implements PFrameInternal.PFrameV6 {
396
401
  const t1 = performance.now();
397
402
  this.logger?.(
398
403
  'info',
399
- `PFrame ${this.id} createTable request ${requestId} took ${Math.round(t1 - t0)}ms`
404
+ `PFrame ${this.id} createTable request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))}`
400
405
  );
401
406
  }
402
407
  }
@@ -416,6 +421,10 @@ export class PFrame implements PFrameInternal.PFrameV6 {
416
421
  this.logger
417
422
  );
418
423
 
424
+ this.logger?.(
425
+ 'info',
426
+ `PFrame ${this.id} getUniqueValues request ${requestId} started`
427
+ );
419
428
  const t0 = performance.now();
420
429
  try {
421
430
  signal?.throwIfAborted();
@@ -436,7 +445,7 @@ export class PFrame implements PFrameInternal.PFrameV6 {
436
445
  const t1 = performance.now();
437
446
  this.logger?.(
438
447
  'info',
439
- `PFrame ${this.id} getUniqueValues request ${requestId} took ${Math.round(t1 - t0)}ms`
448
+ `PFrame ${this.id} getUniqueValues request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))}`
440
449
  );
441
450
  }
442
451
  }
@@ -540,6 +549,10 @@ class PTable implements PFrameInternal.PTableV4 {
540
549
  this.frame.logger
541
550
  );
542
551
 
552
+ this.frame.logger?.(
553
+ 'info',
554
+ `PTable ${this.id} getData request ${requestId} started`
555
+ );
543
556
  const t0 = performance.now();
544
557
  try {
545
558
  signal?.throwIfAborted();
@@ -562,7 +575,7 @@ class PTable implements PFrameInternal.PTableV4 {
562
575
  const t1 = performance.now();
563
576
  this.frame.logger?.(
564
577
  'info',
565
- `PTable ${this.id} getData request ${requestId} took ${Math.round(t1 - t0)}ms`
578
+ `PTable ${this.id} getData request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))}`
566
579
  );
567
580
  }
568
581
  }
@@ -589,6 +602,10 @@ class PTable implements PFrameInternal.PTableV4 {
589
602
  this.frame.logger
590
603
  );
591
604
 
605
+ this.frame.logger?.(
606
+ 'info',
607
+ `PTable ${this.id} filter request ${requestId} started`
608
+ );
592
609
  const t0 = performance.now();
593
610
  try {
594
611
  signal?.throwIfAborted();
@@ -610,7 +627,7 @@ class PTable implements PFrameInternal.PTableV4 {
610
627
  const t1 = performance.now();
611
628
  this.frame.logger?.(
612
629
  'info',
613
- `PTable ${this.id} filter request ${requestId} took ${Math.round(t1 - t0)}ms`
630
+ `PTable ${this.id} filter request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))}`
614
631
  );
615
632
  }
616
633
  }
@@ -637,6 +654,10 @@ class PTable implements PFrameInternal.PTableV4 {
637
654
  this.frame.logger
638
655
  );
639
656
 
657
+ this.frame.logger?.(
658
+ 'info',
659
+ `PTable ${this.id} sort request ${requestId} started`
660
+ );
640
661
  const t0 = performance.now();
641
662
  try {
642
663
  signal?.throwIfAborted();
@@ -658,7 +679,7 @@ class PTable implements PFrameInternal.PTableV4 {
658
679
  const t1 = performance.now();
659
680
  this.frame.logger?.(
660
681
  'info',
661
- `PTable ${this.id} sort request ${requestId} took ${Math.round(t1 - t0)}ms`
682
+ `PTable ${this.id} sort request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))}`
662
683
  );
663
684
  }
664
685
  }
@@ -1,20 +1,20 @@
1
- "use strict";var S=Object.defineProperty;var q=(h,t,e)=>t in h?S(h,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):h[t]=e;var f=(h,t,e)=>q(h,typeof t!="symbol"?t+"":t,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("ulid"),D=require("node:module"),l=require("node:path"),b=require("node:url"),T=require("@mapbox/node-pre-gyp"),c=require("node:fs"),p=require("node:stream");var w=typeof document<"u"?document.currentScript:null;const g=typeof document>"u"?require("url").pathToFileURL(__filename).href:w&&w.tagName.toUpperCase()==="SCRIPT"&&w.src||new URL("index.js",document.baseURI).href,P=l.dirname(b.fileURLToPath(g)),F=D.createRequire(g),{find:C}=T,u=F(C(l.resolve(P,"../package.json")));async function y(h){try{return await c.promises.access(h),!0}catch{return!1}}async function j(h){await y(h)||await c.promises.mkdir(h,{recursive:!0})}async function E(h,t){const e=`${h}.tmp`;await y(e)&&await c.promises.rm(e,{recursive:!0});const r=typeof t=="string"?Buffer.from(t,"utf8"):t,i=p.Readable.from(r),o=c.createWriteStream(e,{flags:"wx"});await p.Readable.toWeb(i).pipeTo(p.Writable.toWeb(o)),await c.promises.rename(e,h)}async function s(h,t,e){if(process.env.MI_DUMP_PFRAMES_RS)try{const r=h.map(n=>encodeURIComponent(n)),i=l.join(process.env.MI_DUMP_PFRAMES_RS,...r.slice(0,-1));await j(i);const o=l.join(process.env.MI_DUMP_PFRAMES_RS,...r),a=ArrayBuffer.isView(t)?t:JSON.stringify(t);await E(o,a)}catch(r){e==null||e("warn",`error while dumping PFrames data: ${r}`)}}let M=class{constructor(t,e){f(this,"id",d.ulid());f(this,"frame");var r;this.logger=e,s([`${this.id}`,`${this.id}.json`],{timeStamp:Date.now(),requestType:"create"},this.logger);try{this.frame=u.pFrameCreate(t,e),(r=this.logger)==null||r.call(this,"info",`PFrame ${this.id} created`)}catch(i){throw new Error(`PFrame ${this.id} creation failed, logger: ${e==null?void 0:e.toString()}, error:
1
+ "use strict";var b=Object.defineProperty;var P=(h,t,e)=>t in h?b(h,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):h[t]=e;var w=(h,t,e)=>P(h,typeof t!="symbol"?t+"":t,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("humanize-duration"),d=require("ulid"),T=require("node:module"),p=require("node:path"),F=require("node:url"),C=require("@mapbox/node-pre-gyp"),f=require("node:fs"),q=require("node:stream");var y=typeof document<"u"?document.currentScript:null;const S=typeof document>"u"?require("url").pathToFileURL(__filename).href:y&&y.tagName.toUpperCase()==="SCRIPT"&&y.src||new URL("index.js",document.baseURI).href,j=p.dirname(F.fileURLToPath(S)),E=T.createRequire(S),{find:M}=C,u=E(M(p.resolve(j,"../package.json")));async function D(h){try{return await f.promises.access(h),!0}catch{return!1}}async function I(h){await D(h)||await f.promises.mkdir(h,{recursive:!0})}async function N(h,t){const e=`${h}.tmp`;await D(e)&&await f.promises.rm(e,{recursive:!0});const r=typeof t=="string"?Buffer.from(t,"utf8"):t,i=q.Readable.from(r),o=f.createWriteStream(e,{flags:"wx"});await q.Readable.toWeb(i).pipeTo(q.Writable.toWeb(o)),await f.promises.rename(e,h)}async function s(h,t,e){if(process.env.MI_DUMP_PFRAMES_RS)try{const r=h.map(a=>encodeURIComponent(a)),i=p.join(process.env.MI_DUMP_PFRAMES_RS,...r.slice(0,-1));await I(i);const o=p.join(process.env.MI_DUMP_PFRAMES_RS,...r),n=ArrayBuffer.isView(t)?t:JSON.stringify(t);await N(o,n)}catch(r){e==null||e("warn",`error while dumping PFrames data: ${r}`)}}let U=class{constructor(t,e){w(this,"id",d.ulid());w(this,"frame");var r;this.logger=e,s([`${this.id}`,`${this.id}.json`],{timeStamp:Date.now(),requestType:"create"},this.logger);try{this.frame=u.pFrameCreate(t,e),(r=this.logger)==null||r.call(this,"info",`PFrame ${this.id} created`)}catch(i){throw new Error(`PFrame ${this.id} creation failed, logger: ${e==null?void 0:e.toString()}, error:
2
2
  ${i.toString()}`)}}static async pprofDump(){return u.pprofDump()}addColumnSpec(t,e){const r=d.ulid();s([`${this.id}`,`${r}.json`],{timeStamp:Date.now(),requestType:"addColumnSpec",requestData:{columnId:t,columnSpec:e}},this.logger),s([`${this.id}`,"data",`${t}.spec`],{...e},this.logger);try{return u.pFrameAddColumnSpec(this.frame,t,e)}catch(i){throw new Error(`PFrame ${this.id} addColumnSpec request ${r} failed, columnId: ${JSON.stringify(t)}, columnSpec: ${JSON.stringify(e)}, error:
3
- ${i.toString()}`)}}setDataSource(t){const e=d.ulid();s([`${this.id}`,`${e}.json`],{timeStamp:Date.now(),requestType:"setDataSource"},this.logger);let r={preloadBlob:async i=>{var n;const o=d.ulid();s([`${this.id}`,`${o}.json`],{timeStamp:Date.now(),requestType:"preloadBlob",requestData:{blobIds:i}},this.logger);const a=performance.now();try{return t.preloadBlob(i)}finally{const m=performance.now();(n=this.logger)==null||n.call(this,"info",`PFrame ${this.id} preloaded ${i.length} blobs ${JSON.stringify(i)}, took ${Math.round(m-a)}ms`)}},resolveBlobContent:async i=>{var n;const o=d.ulid();s([`${this.id}`,`${o}.json`],{timeStamp:Date.now(),requestType:"resolveBlobContent",requestData:{blobId:i}},this.logger);const a=await t.resolveBlobContent(i);return(n=this.logger)==null||n.call(this,"info",`PFrame ${this.id} resolved blob ${i}`),s([`${this.id}`,"data",`${i}`],a,this.logger),a}};try{return u.pFrameSetDataSource(this.frame,r)}catch(i){throw new Error(`PFrame ${this.id} setDataSource request ${e} failed, dataSource: ${t.toString()}, error:
3
+ ${i.toString()}`)}}setDataSource(t){const e=d.ulid();s([`${this.id}`,`${e}.json`],{timeStamp:Date.now(),requestType:"setDataSource"},this.logger);let r={preloadBlob:async i=>{var a;const o=d.ulid();s([`${this.id}`,`${o}.json`],{timeStamp:Date.now(),requestType:"preloadBlob",requestData:{blobIds:i}},this.logger);const n=performance.now();try{return t.preloadBlob(i)}finally{const m=performance.now();(a=this.logger)==null||a.call(this,"info",`PFrame ${this.id} preloaded ${i.length} blobs ${JSON.stringify(i)}, took ${l(Math.round(m-n))}`)}},resolveBlobContent:async i=>{var a;const o=d.ulid();s([`${this.id}`,`${o}.json`],{timeStamp:Date.now(),requestType:"resolveBlobContent",requestData:{blobId:i}},this.logger);const n=await t.resolveBlobContent(i);return(a=this.logger)==null||a.call(this,"info",`PFrame ${this.id} resolved blob ${i}`),s([`${this.id}`,"data",`${i}`],n,this.logger),n}};try{return u.pFrameSetDataSource(this.frame,r)}catch(i){throw new Error(`PFrame ${this.id} setDataSource request ${e} failed, dataSource: ${t.toString()}, error:
4
4
  ${i.toString()}`)}}setColumnData(t,e){const r=d.ulid();s([`${this.id}`,`${r}.json`],{timeStamp:Date.now(),requestType:"setColumnData",requestData:{columnId:t,dataInfo:e}},this.logger),s([`${this.id}`,"data",`${t}.datainfo`],{...e},this.logger);try{return u.pFrameSetColumnData(this.frame,t,e)}catch(i){throw new Error(`PFrame ${this.id} setColumnData request ${r} failed, columnId: ${JSON.stringify(t)}, dataInfo: ${JSON.stringify(e)}, error:
5
5
  ${i.toString()}`)}}dispose(){var e;const t=d.ulid();s([`${this.id}`,`${t}.json`],{timeStamp:Date.now(),requestType:"dispose"},this.logger);try{u.pFrameDispose(this.frame),(e=this.logger)==null||e.call(this,"info",`PFrame ${this.id} disposed`)}catch(r){throw new Error(`PFrame ${this.id} dispose request ${t} failed, error:
6
6
  ${r.toString()}`)}}[Symbol.dispose](){this.dispose()}async findColumns(t){var i;const e=d.ulid();s([`${this.id}`,`${e}.json`],{timeStamp:Date.now(),requestType:"findColumns",requestData:t},this.logger);const r=performance.now();try{return await u.pFrameFindColumns(this.frame,t)}catch(o){throw new Error(`PFrame ${this.id} findColumns request ${e} failed, request: ${JSON.stringify(t)}, error:
7
- ${o.toString()}`)}finally{const o=performance.now();(i=this.logger)==null||i.call(this,"info",`PFrame ${this.id} findColumns request ${e} took ${Math.round(o-r)}ms`)}}async deleteColumn(t){var i;const e=d.ulid();s([`${this.id}`,`${e}.json`],{timeStamp:Date.now(),requestType:"deleteColumn",requestData:t},this.logger);const r=performance.now();try{return await u.pFrameDeleteColumn(this.frame,t)}catch(o){throw new Error(`PFrame ${this.id} deleteColumn request ${e} failed, request: ${JSON.stringify(t)}, error:
8
- ${o.toString()}`)}finally{const o=performance.now();(i=this.logger)==null||i.call(this,"info",`PFrame ${this.id} deleteColumn request ${e} took ${Math.round(o-r)}ms`)}}async getColumnSpec(t){var i;const e=d.ulid();s([`${this.id}`,`${e}.json`],{timeStamp:Date.now(),requestType:"getColumnSpec",requestData:{columnId:t}},this.logger);const r=performance.now();try{return await u.pFrameGetColumnSpec(this.frame,t)}catch(o){throw new Error(`PFrame ${this.id} getColumnSpec request ${e} failed, columnId: ${JSON.stringify(t)}, error:
9
- ${o.toString()}`)}finally{const o=performance.now();(i=this.logger)==null||i.call(this,"info",`PFrame ${this.id} getColumnSpec request ${e} took ${Math.round(o-r)}ms`)}}async listColumns(){var r;const t=d.ulid();s([`${this.id}`,`${t}.json`],{timeStamp:Date.now(),requestType:"listColumns"},this.logger);const e=performance.now();try{return await u.pFrameListColumns(this.frame)}catch(i){throw new Error(`PFrame ${this.id} listColumns request ${t} failed, error:
10
- ${i.toString()}`)}finally{const i=performance.now();(r=this.logger)==null||r.call(this,"info",`PFrame ${this.id} listColumns request ${t} took ${Math.round(i-e)}ms`)}}async createTable(t,e){var a;const r=d.ulid(),i={timeStamp:Date.now(),requestType:"createTable",requestData:t};s([`${this.id}`,`${r}.json`],i,this.logger),s([`${this.id}`,`${r}`,`${r}.json`],i,this.logger);const o=performance.now();try{e==null||e.throwIfAborted();const n=await u.pFrameCreateTable(this.frame,r,t,e);return new $(this,r,n)}catch(n){throw new Error(`PFrame ${this.id} createTable request ${r} failed, request: ${JSON.stringify(t)}, error:
11
- ${n.toString()}`)}finally{const n=performance.now();(a=this.logger)==null||a.call(this,"info",`PFrame ${this.id} createTable request ${r} took ${Math.round(n-o)}ms`)}}async getUniqueValues(t,e){var o;const r=d.ulid();s([`${this.id}`,`${r}.json`],{timeStamp:Date.now(),requestType:"getUniqueValues",requestData:t},this.logger);const i=performance.now();try{return e==null||e.throwIfAborted(),await u.pFrameGetUniqueValues(this.frame,r,t,e)}catch(a){throw new Error(`PFrame ${this.id} getUniqueValues request ${r} failed, request: ${JSON.stringify(t)}, error:
12
- ${a.toString()}`)}finally{const a=performance.now();(o=this.logger)==null||o.call(this,"info",`PFrame ${this.id} getUniqueValues request ${r} took ${Math.round(a-i)}ms`)}}};class ${constructor(t,e,r){var i,o;this.frame=t,this.id=e,this.table=r,(o=(i=this.frame).logger)==null||o.call(i,"info",`PTable ${this.id} created`)}getShape(){const t=d.ulid();s([`${this.frame.id}`,`${this.id}`,`${t}.json`],{timeStamp:Date.now(),requestType:"getShape"},this.frame.logger);try{return u.pTableGetShape(this.table)}catch(e){throw new Error(`PTable ${this.id} getShape request ${t} failed, error:
7
+ ${o.toString()}`)}finally{const o=performance.now();(i=this.logger)==null||i.call(this,"info",`PFrame ${this.id} findColumns request ${e} took ${l(Math.round(o-r))}`)}}async deleteColumn(t){var i;const e=d.ulid();s([`${this.id}`,`${e}.json`],{timeStamp:Date.now(),requestType:"deleteColumn",requestData:t},this.logger);const r=performance.now();try{return await u.pFrameDeleteColumn(this.frame,t)}catch(o){throw new Error(`PFrame ${this.id} deleteColumn request ${e} failed, request: ${JSON.stringify(t)}, error:
8
+ ${o.toString()}`)}finally{const o=performance.now();(i=this.logger)==null||i.call(this,"info",`PFrame ${this.id} deleteColumn request ${e} took ${l(Math.round(o-r))}`)}}async getColumnSpec(t){var i;const e=d.ulid();s([`${this.id}`,`${e}.json`],{timeStamp:Date.now(),requestType:"getColumnSpec",requestData:{columnId:t}},this.logger);const r=performance.now();try{return await u.pFrameGetColumnSpec(this.frame,t)}catch(o){throw new Error(`PFrame ${this.id} getColumnSpec request ${e} failed, columnId: ${JSON.stringify(t)}, error:
9
+ ${o.toString()}`)}finally{const o=performance.now();(i=this.logger)==null||i.call(this,"info",`PFrame ${this.id} getColumnSpec request ${e} took ${l(Math.round(o-r))}`)}}async listColumns(){var r;const t=d.ulid();s([`${this.id}`,`${t}.json`],{timeStamp:Date.now(),requestType:"listColumns"},this.logger);const e=performance.now();try{return await u.pFrameListColumns(this.frame)}catch(i){throw new Error(`PFrame ${this.id} listColumns request ${t} failed, error:
10
+ ${i.toString()}`)}finally{const i=performance.now();(r=this.logger)==null||r.call(this,"info",`PFrame ${this.id} listColumns request ${t} took ${l(Math.round(i-e))}`)}}async createTable(t,e){var n,a;const r=d.ulid(),i={timeStamp:Date.now(),requestType:"createTable",requestData:t};s([`${this.id}`,`${r}.json`],i,this.logger),s([`${this.id}`,`${r}`,`${r}.json`],i,this.logger),(n=this.logger)==null||n.call(this,"info",`PFrame ${this.id} createTable request ${r} started`);const o=performance.now();try{e==null||e.throwIfAborted();const m=await u.pFrameCreateTable(this.frame,r,t,e);return new g(this,r,m)}catch(m){throw new Error(`PFrame ${this.id} createTable request ${r} failed, request: ${JSON.stringify(t)}, error:
11
+ ${m.toString()}`)}finally{const m=performance.now();(a=this.logger)==null||a.call(this,"info",`PFrame ${this.id} createTable request ${r} finished, took ${l(Math.round(m-o))}`)}}async getUniqueValues(t,e){var o,n;const r=d.ulid();s([`${this.id}`,`${r}.json`],{timeStamp:Date.now(),requestType:"getUniqueValues",requestData:t},this.logger),(o=this.logger)==null||o.call(this,"info",`PFrame ${this.id} getUniqueValues request ${r} started`);const i=performance.now();try{return e==null||e.throwIfAborted(),await u.pFrameGetUniqueValues(this.frame,r,t,e)}catch(a){throw new Error(`PFrame ${this.id} getUniqueValues request ${r} failed, request: ${JSON.stringify(t)}, error:
12
+ ${a.toString()}`)}finally{const a=performance.now();(n=this.logger)==null||n.call(this,"info",`PFrame ${this.id} getUniqueValues request ${r} finished, took ${l(Math.round(a-i))}`)}}};class g{constructor(t,e,r){var i,o;this.frame=t,this.id=e,this.table=r,(o=(i=this.frame).logger)==null||o.call(i,"info",`PTable ${this.id} created`)}getShape(){const t=d.ulid();s([`${this.frame.id}`,`${this.id}`,`${t}.json`],{timeStamp:Date.now(),requestType:"getShape"},this.frame.logger);try{return u.pTableGetShape(this.table)}catch(e){throw new Error(`PTable ${this.id} getShape request ${t} failed, error:
13
13
  ${e.toString()}`)}}getSpec(){const t=d.ulid();s([`${this.frame.id}`,`${this.id}`,`${t}.json`],{timeStamp:Date.now(),requestType:"getSpec"},this.frame.logger);try{return u.pTableGetSpec(this.table)}catch(e){throw new Error(`PTable ${this.id} getSpec request ${t} failed, error:
14
14
  ${e.toString()}`)}}getColumnIndices(t){const e=d.ulid();s([`${this.frame.id}`,`${this.id}`,`${e}.json`],{timeStamp:Date.now(),requestType:"getColumnIndices",requestData:{columnIds:t}},this.frame.logger);try{return u.pTableGetColumnIndices(this.table,t)}catch(r){throw new Error(`PTable ${this.id} getColumnIndices request ${e} failed, columnIds: ${JSON.stringify(t)}, error:
15
- ${r.toString()}`)}}async getData(t,e,r){var a,n;const i=d.ulid();s([`${this.frame.id}`,`${this.id}`,`${i}.json`],{timeStamp:Date.now(),requestType:"getData",requestData:{columnIndices:t,range:e??null}},this.frame.logger);const o=performance.now();try{return r==null||r.throwIfAborted(),await u.pTableGetData(this.table,i,t,e,r)}catch(m){throw new Error(`PTable ${this.id} getData request ${i} failed, columnIndices: ${JSON.stringify(t)}, range: ${e?JSON.stringify(e):void 0}, error:
16
- ${m.toString()}`)}finally{const m=performance.now();(n=(a=this.frame).logger)==null||n.call(a,"info",`PTable ${this.id} getData request ${i} took ${Math.round(m-o)}ms`)}}async filter(t,e){var a,n;const r=d.ulid(),i={timeStamp:Date.now(),table:this.id,requestType:"filter",requestData:t};s([`${this.frame.id}`,`${r}.json`],i,this.frame.logger),s([`${this.frame.id}`,`${r}`,`${r}.json`],i,this.frame.logger);const o=performance.now();try{e==null||e.throwIfAborted();const m=await u.pTableFilter(this.table,r,t,e);return new $(this.frame,r,m)}catch(m){throw new Error(`PTable ${this.id} filter request ${r} failed, request: ${JSON.stringify(t)}, error:
17
- ${m.toString()}`)}finally{const m=performance.now();(n=(a=this.frame).logger)==null||n.call(a,"info",`PTable ${this.id} filter request ${r} took ${Math.round(m-o)}ms`)}}async sort(t,e){var a,n;const r=d.ulid(),i={timeStamp:Date.now(),table:this.id,requestType:"sort",requestData:t};s([`${this.frame.id}`,`${r}.json`],i,this.frame.logger),s([`${this.frame.id}`,`${r}`,`${r}.json`],i,this.frame.logger);const o=performance.now();try{e==null||e.throwIfAborted();const m=await u.pTableSort(this.table,r,t,e);return new $(this.frame,r,m)}catch(m){throw new Error(`PTable ${this.id} sort request ${r} failed, request: ${JSON.stringify(t)}, error:
18
- ${m.toString()}`)}finally{const m=performance.now();(n=(a=this.frame).logger)==null||n.call(a,"info",`PTable ${this.id} sort request ${r} took ${Math.round(m-o)}ms`)}}dispose(){var e,r;const t=d.ulid();s([`${this.frame.id}`,`${this.id}`,`${t}.json`],{timeStamp:Date.now(),requestType:"dispose"},this.frame.logger);try{u.pTableDispose(this.table),(r=(e=this.frame).logger)==null||r.call(e,"info",`PTable ${this.id} disposed`)}catch(i){throw new Error(`PTable ${this.id} dispose request ${t} failed, error:
19
- ${i.toString()}`)}}[Symbol.dispose](){this.dispose()}}const I=M;exports.PFrame=I;
15
+ ${r.toString()}`)}}async getData(t,e,r){var n,a,m,$;const i=d.ulid();s([`${this.frame.id}`,`${this.id}`,`${i}.json`],{timeStamp:Date.now(),requestType:"getData",requestData:{columnIndices:t,range:e??null}},this.frame.logger),(a=(n=this.frame).logger)==null||a.call(n,"info",`PTable ${this.id} getData request ${i} started`);const o=performance.now();try{return r==null||r.throwIfAborted(),await u.pTableGetData(this.table,i,t,e,r)}catch(c){throw new Error(`PTable ${this.id} getData request ${i} failed, columnIndices: ${JSON.stringify(t)}, range: ${e?JSON.stringify(e):void 0}, error:
16
+ ${c.toString()}`)}finally{const c=performance.now();($=(m=this.frame).logger)==null||$.call(m,"info",`PTable ${this.id} getData request ${i} finished, took ${l(Math.round(c-o))}`)}}async filter(t,e){var n,a,m,$;const r=d.ulid(),i={timeStamp:Date.now(),table:this.id,requestType:"filter",requestData:t};s([`${this.frame.id}`,`${r}.json`],i,this.frame.logger),s([`${this.frame.id}`,`${r}`,`${r}.json`],i,this.frame.logger),(a=(n=this.frame).logger)==null||a.call(n,"info",`PTable ${this.id} filter request ${r} started`);const o=performance.now();try{e==null||e.throwIfAborted();const c=await u.pTableFilter(this.table,r,t,e);return new g(this.frame,r,c)}catch(c){throw new Error(`PTable ${this.id} filter request ${r} failed, request: ${JSON.stringify(t)}, error:
17
+ ${c.toString()}`)}finally{const c=performance.now();($=(m=this.frame).logger)==null||$.call(m,"info",`PTable ${this.id} filter request ${r} finished, took ${l(Math.round(c-o))}`)}}async sort(t,e){var n,a,m,$;const r=d.ulid(),i={timeStamp:Date.now(),table:this.id,requestType:"sort",requestData:t};s([`${this.frame.id}`,`${r}.json`],i,this.frame.logger),s([`${this.frame.id}`,`${r}`,`${r}.json`],i,this.frame.logger),(a=(n=this.frame).logger)==null||a.call(n,"info",`PTable ${this.id} sort request ${r} started`);const o=performance.now();try{e==null||e.throwIfAborted();const c=await u.pTableSort(this.table,r,t,e);return new g(this.frame,r,c)}catch(c){throw new Error(`PTable ${this.id} sort request ${r} failed, request: ${JSON.stringify(t)}, error:
18
+ ${c.toString()}`)}finally{const c=performance.now();($=(m=this.frame).logger)==null||$.call(m,"info",`PTable ${this.id} sort request ${r} finished, took ${l(Math.round(c-o))}`)}}dispose(){var e,r;const t=d.ulid();s([`${this.frame.id}`,`${this.id}`,`${t}.json`],{timeStamp:Date.now(),requestType:"dispose"},this.frame.logger);try{u.pTableDispose(this.table),(r=(e=this.frame).logger)==null||r.call(e,"info",`PTable ${this.id} disposed`)}catch(i){throw new Error(`PTable ${this.id} dispose request ${t} failed, error:
19
+ ${i.toString()}`)}}[Symbol.dispose](){this.dispose()}}const J=U;exports.PFrame=J;
20
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../export/addon.ts","../export/dump.ts","../export/wrapper.ts","../export/export.ts"],"sourcesContent":["import { createRequire } from 'node:module';\nimport { dirname, resolve } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport gyp from '@mapbox/node-pre-gyp';\nimport type { AddonSymbol } from './addon-def';\n\nconst nodeFileUrl = import.meta.url;\nconst nodeDirname = dirname(fileURLToPath(nodeFileUrl));\nconst nodeRequire = createRequire(nodeFileUrl);\n\nconst { find: findAddon } = gyp;\n\n// Pre-gyp reads binary section from package.json and constructs a path to addon\n// https://github.com/mapbox/node-pre-gyp/blob/a541932680034f5de9e7365ef8d9a0d7a11cc1a9/lib/package.js#L35\n// Require calls dlopen under the hood\n// https://nodejs.org/api/process.html#processdlopenmodule-filename-flags\n// DLOpen then searches for napi_register_module_v1 in addon export table\n// https://github.com/search?q=repo%3Anodejs%2Fnode%20NAPI_MODULE_INITIALIZER&type=code\n// And neon exports napi_register_module_v1 from #[neon::main]\n// https://github.com/neon-bindings/neon/blob/b1728fa21e968ccde9611ac9955cf6d638be16e6/crates/neon/src/context/internal.rs#L76\nconst AddonSymbol = nodeRequire(\n findAddon(resolve(nodeDirname, '../package.json'))\n) as AddonSymbol;\n\nexport { AddonSymbol };\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport { Readable, Writable } from 'node:stream';\nimport type { PFrameInternal } from '@milaboratories/pl-model-middle-layer';\n\nasync function fileExists(path: string): Promise<boolean> {\n try {\n await fs.promises.access(path);\n return true;\n } catch {\n return false;\n }\n}\n\nasync function ensureDirExists(fileOrDir: string): Promise<void> {\n if (!(await fileExists(fileOrDir))) {\n await fs.promises.mkdir(fileOrDir, { recursive: true });\n }\n}\n\nasync function writeFile(\n filePath: string,\n data: string | Uint8Array\n): Promise<void> {\n const tempPath = `${filePath}.tmp`;\n if (await fileExists(tempPath)) {\n await fs.promises.rm(tempPath, { recursive: true });\n }\n\n const buffer = typeof data === 'string' ? Buffer.from(data, 'utf8') : data;\n const source = Readable.from(buffer);\n const destination = fs.createWriteStream(tempPath, { flags: 'wx' });\n await Readable.toWeb(source).pipeTo(Writable.toWeb(destination));\n\n await fs.promises.rename(tempPath, filePath);\n}\n\nexport async function dump(\n relativePath: string[],\n data: { [key: string]: 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 = path.join(\n process.env.MI_DUMP_PFRAMES_RS,\n ...relativeUri.slice(0, -1)\n );\n await ensureDirExists(fileDir);\n\n const filePath = path.join(process.env.MI_DUMP_PFRAMES_RS, ...relativeUri);\n const fileData = ArrayBuffer.isView(data)\n ? (data as Uint8Array)\n : JSON.stringify(data);\n await writeFile(filePath, fileData);\n } catch (error: unknown) {\n logger?.('warn', `error while dumping PFrames data: ${error}`);\n }\n}\n","import { ulid } from 'ulid';\nimport {\n DataInfo,\n PColumnInfo,\n PColumnSpec,\n PObjectId,\n PTableColumnId,\n PTableColumnSpec,\n PTableRecordFilter,\n PTableShape,\n PTableSorting,\n PTableVector,\n TableRange,\n UniqueValuesRequest,\n UniqueValuesResponse\n} from '@milaboratories/pl-model-common';\nimport type { PFrameInternal } from '@milaboratories/pl-model-middle-layer';\nimport type { NodeFrameSymbol, NodeTableSymbol } from './addon-def';\nimport { AddonSymbol } from './addon';\nimport { dump } from './dump';\n\nexport class PFrame implements PFrameInternal.PFrameV6 {\n public readonly id: string = ulid();\n private readonly frame: NodeFrameSymbol;\n\n static async pprofDump(): Promise<Uint8Array> {\n return AddonSymbol.pprofDump();\n }\n\n constructor(\n spillPath: string,\n public readonly logger?: PFrameInternal.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(spillPath, logger);\n this.logger?.('info', `PFrame ${this.id} created`);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} creation failed, ` +\n `logger: ${logger?.toString()}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\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,\n columnSpec\n }\n },\n this.logger\n );\n\n dump(\n [`${this.id}`, `data`, `${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 throw new Error(\n `PFrame ${this.id} addColumnSpec request ${requestId} failed, ` +\n `columnId: ${JSON.stringify(columnId)}, ` +\n `columnSpec: ${JSON.stringify(columnSpec)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n setDataSource(dataSource: PFrameInternal.PFrameDataSource): 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 let wrappedDataSource = {\n preloadBlob: async (\n blobIds: PFrameInternal.PFrameBlobId[]\n ): 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 const t0 = performance.now();\n try {\n return dataSource.preloadBlob(blobIds);\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} preloaded ${blobIds.length} blobs ${JSON.stringify(blobIds)}, took ${Math.round(t1 - t0)}ms`\n );\n }\n },\n resolveBlobContent: async (\n blobId: PFrameInternal.PFrameBlobId\n ): 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 };\n\n try {\n return AddonSymbol.pFrameSetDataSource(this.frame, wrappedDataSource);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} setDataSource request ${requestId} failed, ` +\n `dataSource: ${dataSource.toString()}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n setColumnData(\n columnId: PObjectId,\n dataInfo: DataInfo<PFrameInternal.PFrameBlobId>\n ): void {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'setColumnData',\n requestData: {\n columnId,\n dataInfo\n }\n },\n this.logger\n );\n\n dump(\n [`${this.id}`, `data`, `${columnId}.datainfo`],\n {\n ...dataInfo\n },\n this.logger\n );\n\n try {\n return AddonSymbol.pFrameSetColumnData(this.frame, columnId, dataInfo);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} setColumnData request ${requestId} failed, ` +\n `columnId: ${JSON.stringify(columnId)}, ` +\n `dataInfo: ${JSON.stringify(dataInfo)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\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 throw new Error(\n `PFrame ${this.id} dispose request ${requestId} failed, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\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 t0 = performance.now();\n try {\n return await AddonSymbol.pFrameFindColumns(this.frame, request);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} findColumns request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} findColumns request ${requestId} took ${Math.round(t1 - t0)}ms`\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 t0 = performance.now();\n try {\n return await AddonSymbol.pFrameDeleteColumn(this.frame, request);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} deleteColumn request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} deleteColumn request ${requestId} took ${Math.round(t1 - t0)}ms`\n );\n }\n }\n\n async getColumnSpec(columnId: PObjectId): Promise<PColumnSpec> {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getColumnSpec',\n requestData: {\n columnId\n }\n },\n this.logger\n );\n\n const t0 = performance.now();\n try {\n return await AddonSymbol.pFrameGetColumnSpec(this.frame, columnId);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} getColumnSpec request ${requestId} failed, ` +\n `columnId: ${JSON.stringify(columnId)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} getColumnSpec request ${requestId} took ${Math.round(t1 - t0)}ms`\n );\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 const t0 = performance.now();\n try {\n return await AddonSymbol.pFrameListColumns(this.frame);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} listColumns request ${requestId} failed, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} listColumns request ${requestId} took ${Math.round(t1 - t0)}ms`\n );\n }\n }\n\n async createTable(\n request: PFrameInternal.CreateTableRequestV3,\n signal?: AbortSignal\n ): Promise<PFrameInternal.PTableV4> {\n const requestId = ulid();\n const dumpData = {\n timeStamp: Date.now(),\n requestType: 'createTable',\n requestData: request\n };\n dump([`${this.id}`, `${requestId}.json`], dumpData, this.logger);\n dump(\n [`${this.id}`, `${requestId}`, `${requestId}.json`],\n dumpData,\n this.logger\n );\n\n const t0 = performance.now();\n try {\n signal?.throwIfAborted();\n const boxed = await AddonSymbol.pFrameCreateTable(\n this.frame,\n requestId,\n request,\n signal\n );\n return new PTable(this, requestId, boxed);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} createTable request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} createTable request ${requestId} took ${Math.round(t1 - t0)}ms`\n );\n }\n }\n\n async getUniqueValues(\n request: UniqueValuesRequest,\n signal?: AbortSignal\n ): Promise<UniqueValuesResponse> {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getUniqueValues',\n requestData: request\n },\n this.logger\n );\n\n const t0 = performance.now();\n try {\n signal?.throwIfAborted();\n return await AddonSymbol.pFrameGetUniqueValues(\n this.frame,\n requestId,\n request,\n signal\n );\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} getUniqueValues request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} getUniqueValues request ${requestId} took ${Math.round(t1 - t0)}ms`\n );\n }\n }\n}\n\nclass PTable implements PFrameInternal.PTableV4 {\n constructor(\n private readonly frame: PFrame,\n public readonly id: string,\n private readonly table: NodeTableSymbol\n ) {\n this.frame.logger?.('info', `PTable ${this.id} created`);\n }\n\n getShape(): 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.frame.logger\n );\n\n try {\n return AddonSymbol.pTableGetShape(this.table);\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} getShape request ${requestId} failed, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\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.frame.logger\n );\n\n try {\n return AddonSymbol.pTableGetSpec(this.table);\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} getSpec request ${requestId} failed, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\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\n }\n },\n this.frame.logger\n );\n\n try {\n return AddonSymbol.pTableGetColumnIndices(this.table, columnIds);\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} getColumnIndices request ${requestId} failed, ` +\n `columnIds: ${JSON.stringify(columnIds)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n async getData(\n columnIndices: number[],\n range: TableRange | undefined,\n signal?: AbortSignal\n ): Promise<PTableVector[]> {\n const requestId = ulid();\n dump(\n [`${this.frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getData',\n requestData: {\n columnIndices,\n range: range ?? null\n }\n },\n this.frame.logger\n );\n\n const t0 = performance.now();\n try {\n signal?.throwIfAborted();\n return await AddonSymbol.pTableGetData(\n this.table,\n requestId,\n columnIndices,\n range,\n signal\n );\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} getData request ${requestId} failed, ` +\n `columnIndices: ${JSON.stringify(columnIndices)}, ` +\n `range: ${range ? JSON.stringify(range) : undefined}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} getData request ${requestId} took ${Math.round(t1 - t0)}ms`\n );\n }\n }\n\n async filter(\n request: PTableRecordFilter[],\n signal?: AbortSignal\n ): Promise<PFrameInternal.PTableV4> {\n const requestId = ulid();\n const dumpData = {\n timeStamp: Date.now(),\n table: this.id,\n requestType: 'filter',\n requestData: request\n };\n dump(\n [`${this.frame.id}`, `${requestId}.json`],\n dumpData,\n this.frame.logger\n );\n dump(\n [`${this.frame.id}`, `${requestId}`, `${requestId}.json`],\n dumpData,\n this.frame.logger\n );\n\n const t0 = performance.now();\n try {\n signal?.throwIfAborted();\n const boxed = await AddonSymbol.pTableFilter(\n this.table,\n requestId,\n request,\n signal\n );\n return new PTable(this.frame, requestId, boxed);\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} filter request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} filter request ${requestId} took ${Math.round(t1 - t0)}ms`\n );\n }\n }\n\n async sort(\n request: PTableSorting[],\n signal?: AbortSignal\n ): Promise<PFrameInternal.PTableV4> {\n const requestId = ulid();\n const dumpData = {\n timeStamp: Date.now(),\n table: this.id,\n requestType: 'sort',\n requestData: request\n };\n dump(\n [`${this.frame.id}`, `${requestId}.json`],\n dumpData,\n this.frame.logger\n );\n dump(\n [`${this.frame.id}`, `${requestId}`, `${requestId}.json`],\n dumpData,\n this.frame.logger\n );\n\n const t0 = performance.now();\n try {\n signal?.throwIfAborted();\n const boxed = await AddonSymbol.pTableSort(\n this.table,\n requestId,\n request,\n signal\n );\n return new PTable(this.frame, requestId, boxed);\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} sort request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} sort request ${requestId} took ${Math.round(t1 - t0)}ms`\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.frame.logger\n );\n\n try {\n AddonSymbol.pTableDispose(this.table);\n this.frame.logger?.('info', `PTable ${this.id} disposed`);\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} dispose request ${requestId} failed, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n [Symbol.dispose]() {\n this.dispose();\n }\n}\n","import type { PFrameInternal } from '@milaboratories/pl-model-middle-layer';\nimport { PFrame as PFrameImpl } from './wrapper';\n\nexport type PFrame = {\n new (\n spillPath: string,\n logger?: PFrameInternal.Logger\n ): PFrameInternal.PFrameV6;\n\n pprofDump: () => Promise<Uint8Array>;\n};\n\nexport const PFrame: PFrame = PFrameImpl;\n"],"names":["nodeFileUrl","_documentCurrentScript","nodeDirname","dirname","fileURLToPath","nodeRequire","createRequire","findAddon","gyp","AddonSymbol","resolve","fileExists","path","fs","ensureDirExists","fileOrDir","writeFile","filePath","data","tempPath","buffer","source","Readable","destination","Writable","dump","relativePath","logger","relativeUri","part","fileDir","fileData","error","PFrame$1","spillPath","__publicField","ulid","_a","err","columnId","columnSpec","requestId","dataSource","wrappedDataSource","blobIds","t0","t1","blobId","blob","dataInfo","request","signal","dumpData","boxed","PTable","frame","id","table","_b","columnIds","columnIndices","range","PFrame","PFrameImpl"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../export/addon.ts","../export/dump.ts","../export/wrapper.ts","../export/export.ts"],"sourcesContent":["import { createRequire } from 'node:module';\nimport { dirname, resolve } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport gyp from '@mapbox/node-pre-gyp';\nimport type { AddonSymbol } from './addon-def';\n\nconst nodeFileUrl = import.meta.url;\nconst nodeDirname = dirname(fileURLToPath(nodeFileUrl));\nconst nodeRequire = createRequire(nodeFileUrl);\n\nconst { find: findAddon } = gyp;\n\n// Pre-gyp reads binary section from package.json and constructs a path to addon\n// https://github.com/mapbox/node-pre-gyp/blob/a541932680034f5de9e7365ef8d9a0d7a11cc1a9/lib/package.js#L35\n// Require calls dlopen under the hood\n// https://nodejs.org/api/process.html#processdlopenmodule-filename-flags\n// DLOpen then searches for napi_register_module_v1 in addon export table\n// https://github.com/search?q=repo%3Anodejs%2Fnode%20NAPI_MODULE_INITIALIZER&type=code\n// And neon exports napi_register_module_v1 from #[neon::main]\n// https://github.com/neon-bindings/neon/blob/b1728fa21e968ccde9611ac9955cf6d638be16e6/crates/neon/src/context/internal.rs#L76\nconst AddonSymbol = nodeRequire(\n findAddon(resolve(nodeDirname, '../package.json'))\n) as AddonSymbol;\n\nexport { AddonSymbol };\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport { Readable, Writable } from 'node:stream';\nimport type { PFrameInternal } from '@milaboratories/pl-model-middle-layer';\n\nasync function fileExists(path: string): Promise<boolean> {\n try {\n await fs.promises.access(path);\n return true;\n } catch {\n return false;\n }\n}\n\nasync function ensureDirExists(fileOrDir: string): Promise<void> {\n if (!(await fileExists(fileOrDir))) {\n await fs.promises.mkdir(fileOrDir, { recursive: true });\n }\n}\n\nasync function writeFile(\n filePath: string,\n data: string | Uint8Array\n): Promise<void> {\n const tempPath = `${filePath}.tmp`;\n if (await fileExists(tempPath)) {\n await fs.promises.rm(tempPath, { recursive: true });\n }\n\n const buffer = typeof data === 'string' ? Buffer.from(data, 'utf8') : data;\n const source = Readable.from(buffer);\n const destination = fs.createWriteStream(tempPath, { flags: 'wx' });\n await Readable.toWeb(source).pipeTo(Writable.toWeb(destination));\n\n await fs.promises.rename(tempPath, filePath);\n}\n\nexport async function dump(\n relativePath: string[],\n data: { [key: string]: 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 = path.join(\n process.env.MI_DUMP_PFRAMES_RS,\n ...relativeUri.slice(0, -1)\n );\n await ensureDirExists(fileDir);\n\n const filePath = path.join(process.env.MI_DUMP_PFRAMES_RS, ...relativeUri);\n const fileData = ArrayBuffer.isView(data)\n ? (data as Uint8Array)\n : JSON.stringify(data);\n await writeFile(filePath, fileData);\n } catch (error: unknown) {\n logger?.('warn', `error while dumping PFrames data: ${error}`);\n }\n}\n","import humanizeDuration from 'humanize-duration';\nimport { ulid } from 'ulid';\nimport {\n DataInfo,\n PColumnInfo,\n PColumnSpec,\n PObjectId,\n PTableColumnId,\n PTableColumnSpec,\n PTableRecordFilter,\n PTableShape,\n PTableSorting,\n PTableVector,\n TableRange,\n UniqueValuesRequest,\n UniqueValuesResponse\n} from '@milaboratories/pl-model-common';\nimport type { PFrameInternal } from '@milaboratories/pl-model-middle-layer';\nimport type { NodeFrameSymbol, NodeTableSymbol } from './addon-def';\nimport { AddonSymbol } from './addon';\nimport { dump } from './dump';\n\nexport class PFrame implements PFrameInternal.PFrameV6 {\n public readonly id: string = ulid();\n private readonly frame: NodeFrameSymbol;\n\n static async pprofDump(): Promise<Uint8Array> {\n return AddonSymbol.pprofDump();\n }\n\n constructor(\n spillPath: string,\n public readonly logger?: PFrameInternal.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(spillPath, logger);\n this.logger?.('info', `PFrame ${this.id} created`);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} creation failed, ` +\n `logger: ${logger?.toString()}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\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,\n columnSpec\n }\n },\n this.logger\n );\n\n dump(\n [`${this.id}`, `data`, `${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 throw new Error(\n `PFrame ${this.id} addColumnSpec request ${requestId} failed, ` +\n `columnId: ${JSON.stringify(columnId)}, ` +\n `columnSpec: ${JSON.stringify(columnSpec)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n setDataSource(dataSource: PFrameInternal.PFrameDataSource): 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 let wrappedDataSource = {\n preloadBlob: async (\n blobIds: PFrameInternal.PFrameBlobId[]\n ): 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 const t0 = performance.now();\n try {\n return dataSource.preloadBlob(blobIds);\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} preloaded ${blobIds.length} blobs ${JSON.stringify(blobIds)}, took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n },\n resolveBlobContent: async (\n blobId: PFrameInternal.PFrameBlobId\n ): 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 };\n\n try {\n return AddonSymbol.pFrameSetDataSource(this.frame, wrappedDataSource);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} setDataSource request ${requestId} failed, ` +\n `dataSource: ${dataSource.toString()}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n setColumnData(\n columnId: PObjectId,\n dataInfo: DataInfo<PFrameInternal.PFrameBlobId>\n ): void {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'setColumnData',\n requestData: {\n columnId,\n dataInfo\n }\n },\n this.logger\n );\n\n dump(\n [`${this.id}`, `data`, `${columnId}.datainfo`],\n {\n ...dataInfo\n },\n this.logger\n );\n\n try {\n return AddonSymbol.pFrameSetColumnData(this.frame, columnId, dataInfo);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} setColumnData request ${requestId} failed, ` +\n `columnId: ${JSON.stringify(columnId)}, ` +\n `dataInfo: ${JSON.stringify(dataInfo)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\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 throw new Error(\n `PFrame ${this.id} dispose request ${requestId} failed, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\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 t0 = performance.now();\n try {\n return await AddonSymbol.pFrameFindColumns(this.frame, request);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} findColumns request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} findColumns request ${requestId} took ${humanizeDuration(Math.round(t1 - t0))}`\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 t0 = performance.now();\n try {\n return await AddonSymbol.pFrameDeleteColumn(this.frame, request);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} deleteColumn request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} deleteColumn request ${requestId} took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n async getColumnSpec(columnId: PObjectId): Promise<PColumnSpec> {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getColumnSpec',\n requestData: {\n columnId\n }\n },\n this.logger\n );\n\n const t0 = performance.now();\n try {\n return await AddonSymbol.pFrameGetColumnSpec(this.frame, columnId);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} getColumnSpec request ${requestId} failed, ` +\n `columnId: ${JSON.stringify(columnId)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} getColumnSpec request ${requestId} took ${humanizeDuration(Math.round(t1 - t0))}`\n );\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 const t0 = performance.now();\n try {\n return await AddonSymbol.pFrameListColumns(this.frame);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} listColumns request ${requestId} failed, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} listColumns request ${requestId} took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n async createTable(\n request: PFrameInternal.CreateTableRequestV3,\n signal?: AbortSignal\n ): Promise<PFrameInternal.PTableV4> {\n const requestId = ulid();\n const dumpData = {\n timeStamp: Date.now(),\n requestType: 'createTable',\n requestData: request\n };\n dump([`${this.id}`, `${requestId}.json`], dumpData, this.logger);\n dump(\n [`${this.id}`, `${requestId}`, `${requestId}.json`],\n dumpData,\n this.logger\n );\n\n this.logger?.(\n 'info',\n `PFrame ${this.id} createTable request ${requestId} started`\n );\n const t0 = performance.now();\n try {\n signal?.throwIfAborted();\n const boxed = await AddonSymbol.pFrameCreateTable(\n this.frame,\n requestId,\n request,\n signal\n );\n return new PTable(this, requestId, boxed);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} createTable request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} createTable request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n async getUniqueValues(\n request: UniqueValuesRequest,\n signal?: AbortSignal\n ): Promise<UniqueValuesResponse> {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getUniqueValues',\n requestData: request\n },\n this.logger\n );\n\n this.logger?.(\n 'info',\n `PFrame ${this.id} getUniqueValues request ${requestId} started`\n );\n const t0 = performance.now();\n try {\n signal?.throwIfAborted();\n return await AddonSymbol.pFrameGetUniqueValues(\n this.frame,\n requestId,\n request,\n signal\n );\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} getUniqueValues request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} getUniqueValues request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n}\n\nclass PTable implements PFrameInternal.PTableV4 {\n constructor(\n private readonly frame: PFrame,\n public readonly id: string,\n private readonly table: NodeTableSymbol\n ) {\n this.frame.logger?.('info', `PTable ${this.id} created`);\n }\n\n getShape(): 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.frame.logger\n );\n\n try {\n return AddonSymbol.pTableGetShape(this.table);\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} getShape request ${requestId} failed, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\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.frame.logger\n );\n\n try {\n return AddonSymbol.pTableGetSpec(this.table);\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} getSpec request ${requestId} failed, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\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\n }\n },\n this.frame.logger\n );\n\n try {\n return AddonSymbol.pTableGetColumnIndices(this.table, columnIds);\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} getColumnIndices request ${requestId} failed, ` +\n `columnIds: ${JSON.stringify(columnIds)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n async getData(\n columnIndices: number[],\n range: TableRange | undefined,\n signal?: AbortSignal\n ): Promise<PTableVector[]> {\n const requestId = ulid();\n dump(\n [`${this.frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getData',\n requestData: {\n columnIndices,\n range: range ?? null\n }\n },\n this.frame.logger\n );\n\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} getData request ${requestId} started`\n );\n const t0 = performance.now();\n try {\n signal?.throwIfAborted();\n return await AddonSymbol.pTableGetData(\n this.table,\n requestId,\n columnIndices,\n range,\n signal\n );\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} getData request ${requestId} failed, ` +\n `columnIndices: ${JSON.stringify(columnIndices)}, ` +\n `range: ${range ? JSON.stringify(range) : undefined}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} getData request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n async filter(\n request: PTableRecordFilter[],\n signal?: AbortSignal\n ): Promise<PFrameInternal.PTableV4> {\n const requestId = ulid();\n const dumpData = {\n timeStamp: Date.now(),\n table: this.id,\n requestType: 'filter',\n requestData: request\n };\n dump(\n [`${this.frame.id}`, `${requestId}.json`],\n dumpData,\n this.frame.logger\n );\n dump(\n [`${this.frame.id}`, `${requestId}`, `${requestId}.json`],\n dumpData,\n this.frame.logger\n );\n\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} filter request ${requestId} started`\n );\n const t0 = performance.now();\n try {\n signal?.throwIfAborted();\n const boxed = await AddonSymbol.pTableFilter(\n this.table,\n requestId,\n request,\n signal\n );\n return new PTable(this.frame, requestId, boxed);\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} filter request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} filter request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n async sort(\n request: PTableSorting[],\n signal?: AbortSignal\n ): Promise<PFrameInternal.PTableV4> {\n const requestId = ulid();\n const dumpData = {\n timeStamp: Date.now(),\n table: this.id,\n requestType: 'sort',\n requestData: request\n };\n dump(\n [`${this.frame.id}`, `${requestId}.json`],\n dumpData,\n this.frame.logger\n );\n dump(\n [`${this.frame.id}`, `${requestId}`, `${requestId}.json`],\n dumpData,\n this.frame.logger\n );\n\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} sort request ${requestId} started`\n );\n const t0 = performance.now();\n try {\n signal?.throwIfAborted();\n const boxed = await AddonSymbol.pTableSort(\n this.table,\n requestId,\n request,\n signal\n );\n return new PTable(this.frame, requestId, boxed);\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} sort request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} sort request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))}`\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.frame.logger\n );\n\n try {\n AddonSymbol.pTableDispose(this.table);\n this.frame.logger?.('info', `PTable ${this.id} disposed`);\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} dispose request ${requestId} failed, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n [Symbol.dispose]() {\n this.dispose();\n }\n}\n","import type { PFrameInternal } from '@milaboratories/pl-model-middle-layer';\nimport { PFrame as PFrameImpl } from './wrapper';\n\nexport type PFrame = {\n new (\n spillPath: string,\n logger?: PFrameInternal.Logger\n ): PFrameInternal.PFrameV6;\n\n pprofDump: () => Promise<Uint8Array>;\n};\n\nexport const PFrame: PFrame = PFrameImpl;\n"],"names":["nodeFileUrl","_documentCurrentScript","nodeDirname","dirname","fileURLToPath","nodeRequire","createRequire","findAddon","gyp","AddonSymbol","resolve","fileExists","path","fs","ensureDirExists","fileOrDir","writeFile","filePath","data","tempPath","buffer","source","Readable","destination","Writable","dump","relativePath","logger","relativeUri","part","fileDir","fileData","error","PFrame$1","spillPath","__publicField","ulid","_a","err","columnId","columnSpec","requestId","dataSource","wrappedDataSource","blobIds","t0","t1","humanizeDuration","blobId","blob","dataInfo","request","signal","dumpData","boxed","PTable","_b","frame","id","table","columnIds","columnIndices","range","_d","_c","PFrame","PFrameImpl"],"mappings":"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"}