@milaboratories/pframes-rs-node 1.0.45 → 1.0.47

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
@@ -126,6 +126,10 @@ export class PFrame implements PFrameInternal.PFrameV7 {
126
126
  this.logger
127
127
  );
128
128
 
129
+ this.logger?.(
130
+ 'info',
131
+ `PFrame ${this.id} preloadBlob started, blobIds: ${JSON.stringify(blobIds)}`
132
+ );
129
133
  const t0 = performance.now();
130
134
  try {
131
135
  return await dataSource.preloadBlob(blobIds);
@@ -133,7 +137,7 @@ export class PFrame implements PFrameInternal.PFrameV7 {
133
137
  const t1 = performance.now();
134
138
  this.logger?.(
135
139
  'info',
136
- `PFrame ${this.id} preloaded ${blobIds.length} blobs ${JSON.stringify(blobIds)}, took ${humanizeDuration(Math.round(t1 - t0))}`
140
+ `PFrame ${this.id} preloadBlob finished, took ${humanizeDuration(Math.round(t1 - t0))} (${blobIds.length} blobs)`
137
141
  );
138
142
  }
139
143
  },
@@ -383,10 +387,6 @@ export class PFrame implements PFrameInternal.PFrameV7 {
383
387
  this.logger
384
388
  );
385
389
 
386
- this.logger?.(
387
- 'info',
388
- `PFrame ${this.id} createTable request ${requestId} started`
389
- );
390
390
  const t0 = performance.now();
391
391
  try {
392
392
  const boxed = AddonSymbol.pFrameCreateTable(
@@ -406,7 +406,7 @@ export class PFrame implements PFrameInternal.PFrameV7 {
406
406
  const t1 = performance.now();
407
407
  this.logger?.(
408
408
  'info',
409
- `PFrame ${this.id} createTable request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))}`
409
+ `PFrame ${this.id} createTable request ${requestId} took ${humanizeDuration(Math.round(t1 - t0))}`
410
410
  );
411
411
  }
412
412
  }
@@ -526,6 +526,11 @@ class PTable implements PFrameInternal.PTableV5 {
526
526
  this.frame.logger
527
527
  );
528
528
 
529
+ this.frame.logger?.(
530
+ 'info',
531
+ `PTable ${this.id} getShape request ${requestId} started`
532
+ );
533
+ const t0 = performance.now();
529
534
  try {
530
535
  return await AddonSymbol.pTableGetShape(this.table, ops?.signal);
531
536
  } catch (err: unknown) {
@@ -534,6 +539,12 @@ class PTable implements PFrameInternal.PTableV5 {
534
539
  `error:\n` +
535
540
  `${(err as Error).toString()}`
536
541
  );
542
+ } finally {
543
+ const t1 = performance.now();
544
+ this.frame.logger?.(
545
+ 'info',
546
+ `PTable ${this.id} getShape request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))}`
547
+ );
537
548
  }
538
549
  }
539
550
 
@@ -613,10 +624,6 @@ class PTable implements PFrameInternal.PTableV5 {
613
624
  this.frame.logger
614
625
  );
615
626
 
616
- this.frame.logger?.(
617
- 'info',
618
- `PTable ${this.id} filter request ${requestId} started`
619
- );
620
627
  const t0 = performance.now();
621
628
  try {
622
629
  const boxed = AddonSymbol.pTableFilter(this.table, requestId, request);
@@ -632,7 +639,7 @@ class PTable implements PFrameInternal.PTableV5 {
632
639
  const t1 = performance.now();
633
640
  this.frame.logger?.(
634
641
  'info',
635
- `PTable ${this.id} filter request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))}`
642
+ `PTable ${this.id} filter request ${requestId} took ${humanizeDuration(Math.round(t1 - t0))}`
636
643
  );
637
644
  }
638
645
  }
@@ -656,10 +663,6 @@ class PTable implements PFrameInternal.PTableV5 {
656
663
  this.frame.logger
657
664
  );
658
665
 
659
- this.frame.logger?.(
660
- 'info',
661
- `PTable ${this.id} sort request ${requestId} started`
662
- );
663
666
  const t0 = performance.now();
664
667
  try {
665
668
  const boxed = AddonSymbol.pTableSort(this.table, requestId, request);
@@ -675,7 +678,7 @@ class PTable implements PFrameInternal.PTableV5 {
675
678
  const t1 = performance.now();
676
679
  this.frame.logger?.(
677
680
  'info',
678
- `PTable ${this.id} sort request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))}`
681
+ `PTable ${this.id} sort request ${requestId} took ${humanizeDuration(Math.round(t1 - t0))}`
679
682
  );
680
683
  }
681
684
  }
@@ -1,20 +1,20 @@
1
- "use strict";var I=Object.defineProperty;var j=(i,t,e)=>t in i?I(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e;var S=(i,t,e)=>j(i,typeof t!="symbol"?t+"":t,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("humanize-duration"),l=require("ulid"),E=require("node:module"),w=require("node:path"),M=require("node:url"),U=require("@mapbox/node-pre-gyp"),R=require("node:crypto"),p=require("node:fs"),y=require("node:stream");var D=typeof document<"u"?document.currentScript:null;const P=typeof document>"u"?require("url").pathToFileURL(__filename).href:D&&D.tagName.toUpperCase()==="SCRIPT"&&D.src||new URL("index.js",document.baseURI).href,J=w.dirname(M.fileURLToPath(P)),N=E.createRequire(P),{find:O}=U,d=N(O(w.resolve(J,"../package.json")));async function F(i){try{return await p.promises.access(i),!0}catch{return!1}}async function v(i){await F(i)||await p.promises.mkdir(i,{recursive:!0})}async function _(i,t){const e=`${i}.tmp`;await F(e)&&await p.promises.rm(e,{recursive:!0});const r=typeof t=="string"?Buffer.from(t,"utf8"):t,s=y.Readable.from(r),n=p.createWriteStream(e,{flags:"wx"});await y.Readable.toWeb(s).pipeTo(y.Writable.toWeb(n)),await p.promises.rename(e,i)}function h(i){return R.createHash("sha256").update(i).digest("hex")}function T(i){return i.type==="column"?{...i,id:h(i.id)}:i}function b(i){return{...i,column:T(i.column)}}function k(i){return{...i,columnId:h(i.columnId),filters:i.filters.map(b)}}function A(i){return{...i,column:T(i.column)}}function g(i){const t=i.type;switch(t){case"column":return{...i,columnId:h(i.columnId)};case"slicedColumn":return{...i,columnId:h(i.columnId),newId:h(i.newId)};case"inlineColumn":return{...i,newId:h(i.newId)};case"inner":return{...i,entries:i.entries.map(g)};case"full":return{...i,entries:i.entries.map(g)};case"outer":return{...i,primary:g(i.primary),secondary:i.secondary.map(g)};default:throw new Error(`Unsupported join entry type: ${t}`)}}function x(i){return{...i,src:g(i.src),filters:i.filters.map(b)}}async function a(i,t,e){if(process.env.MI_DUMP_PFRAMES_RS)try{const r=i.map(o=>encodeURIComponent(o)),s=w.join(process.env.MI_DUMP_PFRAMES_RS,...r.slice(0,-1));await v(s);const n=w.join(process.env.MI_DUMP_PFRAMES_RS,...r),u=ArrayBuffer.isView(t)?t:JSON.stringify(t,null,2);await _(n,u)}catch(r){e==null||e("warn",`error while dumping PFrames data: ${r}`)}}let B=class{constructor(t,e){S(this,"id",l.ulid());S(this,"frame");var r;this.logger=e,a([`${this.id}`,`${this.id}.json`],{timeStamp:Date.now(),requestType:"create"},this.logger);try{this.frame=d.pFrameCreate(t,e),(r=this.logger)==null||r.call(this,"info",`PFrame ${this.id} created`)}catch(s){throw new Error(`PFrame ${this.id} creation failed, logger: ${e==null?void 0:e.toString()}, error:
2
- ${s.toString()}`)}}static async pprofDump(){return d.pprofDump()}addColumnSpec(t,e){const r=l.ulid();a([`${this.id}`,`${r}.json`],{timeStamp:Date.now(),requestType:"addColumnSpec",requestData:{columnId:h(t),columnSpec:e}},this.logger),a([`${this.id}`,"data",`${h(t)}.spec`],{...e},this.logger);try{return d.pFrameAddColumnSpec(this.frame,t,e)}catch(s){throw new Error(`PFrame ${this.id} addColumnSpec request ${r} failed, columnId: ${JSON.stringify(t)}, columnSpec: ${JSON.stringify(e)}, error:
3
- ${s.toString()}`)}}setDataSource(t){const e=l.ulid();a([`${this.id}`,`${e}.json`],{timeStamp:Date.now(),requestType:"setDataSource"},this.logger);const r={preloadBlob:async s=>{var o;const n=l.ulid();a([`${this.id}`,`${n}.json`],{timeStamp:Date.now(),requestType:"preloadBlob",requestData:{blobIds:s}},this.logger);const u=performance.now();try{return await t.preloadBlob(s)}finally{const c=performance.now();(o=this.logger)==null||o.call(this,"info",`PFrame ${this.id} preloaded ${s.length} blobs ${JSON.stringify(s)}, took ${f(Math.round(c-u))}`)}},resolveBlobContent:async s=>{var o;const n=l.ulid();a([`${this.id}`,`${n}.json`],{timeStamp:Date.now(),requestType:"resolveBlobContent",requestData:{blobId:s}},this.logger);const u=await t.resolveBlobContent(s);return(o=this.logger)==null||o.call(this,"info",`PFrame ${this.id} resolved blob ${s}`),a([`${this.id}`,"data",`${s}`],u,this.logger),u}};try{return d.pFrameSetDataSource(this.frame,r)}catch(s){throw new Error(`PFrame ${this.id} setDataSource request ${e} failed, dataSource: ${t.toString()}, error:
4
- ${s.toString()}`)}}setColumnData(t,e){const r=l.ulid();a([`${this.id}`,`${r}.json`],{timeStamp:Date.now(),requestType:"setColumnData",requestData:{columnId:h(t),dataInfo:e}},this.logger),a([`${this.id}`,"data",`${h(t)}.datainfo`],{...e},this.logger);try{return d.pFrameSetColumnData(this.frame,t,e)}catch(s){throw new Error(`PFrame ${this.id} setColumnData request ${r} failed, columnId: ${JSON.stringify(t)}, dataInfo: ${JSON.stringify(e)}, error:
5
- ${s.toString()}`)}}dispose(){var e;const t=l.ulid();a([`${this.id}`,`${t}.json`],{timeStamp:Date.now(),requestType:"dispose"},this.logger);try{d.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
- ${r.toString()}`)}}[Symbol.dispose](){this.dispose()}async findColumns(t){var s;const e=l.ulid();a([`${this.id}`,`${e}.json`],{timeStamp:Date.now(),requestType:"findColumns",requestData:t},this.logger);const r=performance.now();try{return await d.pFrameFindColumns(this.frame,t)}catch(n){throw new Error(`PFrame ${this.id} findColumns request ${e} failed, request: ${JSON.stringify(t)}, error:
7
- ${n.toString()}`)}finally{const n=performance.now();(s=this.logger)==null||s.call(this,"info",`PFrame ${this.id} findColumns request ${e} took ${f(Math.round(n-r))}`)}}async deleteColumn(t){var s;const e=l.ulid();a([`${this.id}`,`${e}.json`],{timeStamp:Date.now(),requestType:"deleteColumn",requestData:t},this.logger);const r=performance.now();try{return await d.pFrameDeleteColumn(this.frame,t)}catch(n){throw new Error(`PFrame ${this.id} deleteColumn request ${e} failed, request: ${JSON.stringify(t)}, error:
8
- ${n.toString()}`)}finally{const n=performance.now();(s=this.logger)==null||s.call(this,"info",`PFrame ${this.id} deleteColumn request ${e} took ${f(Math.round(n-r))}`)}}async getColumnSpec(t){var s;const e=l.ulid();a([`${this.id}`,`${e}.json`],{timeStamp:Date.now(),requestType:"getColumnSpec",requestData:{columnId:h(t)}},this.logger);const r=performance.now();try{return await d.pFrameGetColumnSpec(this.frame,t)}catch(n){throw new Error(`PFrame ${this.id} getColumnSpec request ${e} failed, columnId: ${JSON.stringify(t)}, error:
9
- ${n.toString()}`)}finally{const n=performance.now();(s=this.logger)==null||s.call(this,"info",`PFrame ${this.id} getColumnSpec request ${e} took ${f(Math.round(n-r))}`)}}async listColumns(){var r;const t=l.ulid();a([`${this.id}`,`${t}.json`],{timeStamp:Date.now(),requestType:"listColumns"},this.logger);const e=performance.now();try{return await d.pFrameListColumns(this.frame)}catch(s){throw new Error(`PFrame ${this.id} listColumns request ${t} failed, error:
10
- ${s.toString()}`)}finally{const s=performance.now();(r=this.logger)==null||r.call(this,"info",`PFrame ${this.id} listColumns request ${t} took ${f(Math.round(s-e))}`)}}createTable(t){var n,u;const e=l.ulid(),r={timeStamp:Date.now(),requestType:"createTable",requestData:x(t)};a([`${this.id}`,`${e}.json`],r,this.logger),a([`${this.id}`,`${e}`,`${e}.json`],r,this.logger),(n=this.logger)==null||n.call(this,"info",`PFrame ${this.id} createTable request ${e} started`);const s=performance.now();try{const o=d.pFrameCreateTable(this.frame,e,t);return new q(this,e,o)}catch(o){throw new Error(`PFrame ${this.id} createTable request ${e} failed, request: ${JSON.stringify(t)}, error:
11
- ${o.toString()}`)}finally{const o=performance.now();(u=this.logger)==null||u.call(this,"info",`PFrame ${this.id} createTable request ${e} finished, took ${f(Math.round(o-s))}`)}}async getUniqueValues(t,e){var n,u,o;const r=l.ulid();a([`${this.id}`,`${r}.json`],{timeStamp:Date.now(),requestType:"getUniqueValues",requestData:k(t)},this.logger),(n=this.logger)==null||n.call(this,"info",`PFrame ${this.id} getUniqueValues request ${r} started`);const s=performance.now();try{return(u=e==null?void 0:e.signal)==null||u.throwIfAborted(),await d.pFrameGetUniqueValues(this.frame,r,t,e==null?void 0:e.signal)}catch(c){throw new Error(`PFrame ${this.id} getUniqueValues request ${r} failed, request: ${JSON.stringify(t)}, error:
12
- ${c.toString()}`)}finally{const c=performance.now();(o=this.logger)==null||o.call(this,"info",`PFrame ${this.id} getUniqueValues request ${r} finished, took ${f(Math.round(c-s))}`)}}};class q{constructor(t,e,r){var s,n;this.frame=t,this.id=e,this.table=r,(n=(s=this.frame).logger)==null||n.call(s,"info",`PTable ${this.id} created`)}getSpec(){const t=l.ulid();a([`${this.frame.id}`,`${this.id}`,`${t}.json`],{timeStamp:Date.now(),requestType:"getSpec"},this.frame.logger);try{return d.pTableGetSpec(this.table)}catch(e){throw new Error(`PTable ${this.id} getSpec request ${t} failed, error:
13
- ${e.toString()}`)}}getColumnIndices(t){const e=l.ulid();a([`${this.frame.id}`,`${this.id}`,`${e}.json`],{timeStamp:Date.now(),requestType:"getColumnIndices",requestData:{columnIds:t.map(T)}},this.frame.logger);try{return d.pTableGetColumnIndices(this.table,t)}catch(r){throw new Error(`PTable ${this.id} getColumnIndices request ${e} failed, columnIds: ${JSON.stringify(t)}, error:
14
- ${r.toString()}`)}}async getShape(t){const e=l.ulid();a([`${this.frame.id}`,`${this.id}`,`${e}.json`],{timeStamp:Date.now(),requestType:"getShape"},this.frame.logger);try{return await d.pTableGetShape(this.table,t==null?void 0:t.signal)}catch(r){throw new Error(`PTable ${this.id} getShape request ${e} failed, error:
15
- ${r.toString()}`)}}async getData(t,e){var u,o,c,m,C;const r=l.ulid();a([`${this.frame.id}`,`${this.id}`,`${r}.json`],{timeStamp:Date.now(),requestType:"getData",requestData:{columnIndices:t,range:(e==null?void 0:e.range)??null}},this.frame.logger),(o=(u=this.frame).logger)==null||o.call(u,"info",`PTable ${this.id} getData request ${r} started`);let s=0;const n=performance.now();try{(c=e==null?void 0:e.signal)==null||c.throwIfAborted();const $=await d.pTableGetData(this.table,r,t,e==null?void 0:e.range,e==null?void 0:e.signal);return s=$[0].data.length,$}catch($){throw new Error(`PTable ${this.id} getData request ${r} failed, columnIndices: ${JSON.stringify(t)}, range: ${e!=null&&e.range?JSON.stringify(e.range):void 0}, error:
16
- ${$.toString()}`)}finally{const $=performance.now();(C=(m=this.frame).logger)==null||C.call(m,"info",`PTable ${this.id} getData request ${r} finished, took ${f(Math.round($-n))} (${s} rows)`)}}filter(t){var n,u,o,c;const e=l.ulid(),r={timeStamp:Date.now(),table:this.id,requestType:"filter",requestData:{filters:t.map(b)}};a([`${this.frame.id}`,`${e}.json`],r,this.frame.logger),a([`${this.frame.id}`,`${e}`,`${e}.json`],r,this.frame.logger),(u=(n=this.frame).logger)==null||u.call(n,"info",`PTable ${this.id} filter request ${e} started`);const s=performance.now();try{const m=d.pTableFilter(this.table,e,t);return new q(this.frame,e,m)}catch(m){throw new Error(`PTable ${this.id} filter request ${e} failed, request: ${JSON.stringify(t)}, error:
17
- ${m.toString()}`)}finally{const m=performance.now();(c=(o=this.frame).logger)==null||c.call(o,"info",`PTable ${this.id} filter request ${e} finished, took ${f(Math.round(m-s))}`)}}sort(t){var n,u,o,c;const e=l.ulid(),r={timeStamp:Date.now(),table:this.id,requestType:"sort",requestData:t.map(A)};a([`${this.frame.id}`,`${e}.json`],r,this.frame.logger),a([`${this.frame.id}`,`${e}`,`${e}.json`],r,this.frame.logger),(u=(n=this.frame).logger)==null||u.call(n,"info",`PTable ${this.id} sort request ${e} started`);const s=performance.now();try{const m=d.pTableSort(this.table,e,t);return new q(this.frame,e,m)}catch(m){throw new Error(`PTable ${this.id} sort request ${e} failed, request: ${JSON.stringify(t)}, error:
18
- ${m.toString()}`)}finally{const m=performance.now();(c=(o=this.frame).logger)==null||c.call(o,"info",`PTable ${this.id} sort request ${e} finished, took ${f(Math.round(m-s))}`)}}dispose(){var e,r;const t=l.ulid();a([`${this.frame.id}`,`${this.id}`,`${t}.json`],{timeStamp:Date.now(),requestType:"dispose"},this.frame.logger);try{d.pTableDispose(this.table),(r=(e=this.frame).logger)==null||r.call(e,"info",`PTable ${this.id} disposed`)}catch(s){throw new Error(`PTable ${this.id} dispose request ${t} failed, error:
19
- ${s.toString()}`)}}[Symbol.dispose](){this.dispose()}}const V=B;exports.PFrame=V;
1
+ "use strict";var I=Object.defineProperty;var j=(i,t,e)=>t in i?I(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e;var q=(i,t,e)=>j(i,typeof t!="symbol"?t+"":t,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=require("humanize-duration"),l=require("ulid"),E=require("node:module"),w=require("node:path"),M=require("node:url"),U=require("@mapbox/node-pre-gyp"),R=require("node:crypto"),g=require("node:fs"),y=require("node:stream");var D=typeof document<"u"?document.currentScript:null;const P=typeof document>"u"?require("url").pathToFileURL(__filename).href:D&&D.tagName.toUpperCase()==="SCRIPT"&&D.src||new URL("index.js",document.baseURI).href,J=w.dirname(M.fileURLToPath(P)),N=E.createRequire(P),{find:O}=U,d=N(O(w.resolve(J,"../package.json")));async function F(i){try{return await g.promises.access(i),!0}catch{return!1}}async function v(i){await F(i)||await g.promises.mkdir(i,{recursive:!0})}async function _(i,t){const e=`${i}.tmp`;await F(e)&&await g.promises.rm(e,{recursive:!0});const r=typeof t=="string"?Buffer.from(t,"utf8"):t,n=y.Readable.from(r),s=g.createWriteStream(e,{flags:"wx"});await y.Readable.toWeb(n).pipeTo(y.Writable.toWeb(s)),await g.promises.rename(e,i)}function h(i){return R.createHash("sha256").update(i).digest("hex")}function b(i){return i.type==="column"?{...i,id:h(i.id)}:i}function T(i){return{...i,column:b(i.column)}}function k(i){return{...i,columnId:h(i.columnId),filters:i.filters.map(T)}}function B(i){return{...i,column:b(i.column)}}function $(i){const t=i.type;switch(t){case"column":return{...i,columnId:h(i.columnId)};case"slicedColumn":return{...i,columnId:h(i.columnId),newId:h(i.newId)};case"inlineColumn":return{...i,newId:h(i.newId)};case"inner":return{...i,entries:i.entries.map($)};case"full":return{...i,entries:i.entries.map($)};case"outer":return{...i,primary:$(i.primary),secondary:i.secondary.map($)};default:throw new Error(`Unsupported join entry type: ${t}`)}}function A(i){return{...i,src:$(i.src),filters:i.filters.map(T)}}async function u(i,t,e){if(process.env.MI_DUMP_PFRAMES_RS)try{const r=i.map(a=>encodeURIComponent(a)),n=w.join(process.env.MI_DUMP_PFRAMES_RS,...r.slice(0,-1));await v(n);const s=w.join(process.env.MI_DUMP_PFRAMES_RS,...r),o=ArrayBuffer.isView(t)?t:JSON.stringify(t,null,2);await _(s,o)}catch(r){e==null||e("warn",`error while dumping PFrames data: ${r}`)}}let x=class{constructor(t,e){q(this,"id",l.ulid());q(this,"frame");var r;this.logger=e,u([`${this.id}`,`${this.id}.json`],{timeStamp:Date.now(),requestType:"create"},this.logger);try{this.frame=d.pFrameCreate(t,e),(r=this.logger)==null||r.call(this,"info",`PFrame ${this.id} created`)}catch(n){throw new Error(`PFrame ${this.id} creation failed, logger: ${e==null?void 0:e.toString()}, error:
2
+ ${n.toString()}`)}}static async pprofDump(){return d.pprofDump()}addColumnSpec(t,e){const r=l.ulid();u([`${this.id}`,`${r}.json`],{timeStamp:Date.now(),requestType:"addColumnSpec",requestData:{columnId:h(t),columnSpec:e}},this.logger),u([`${this.id}`,"data",`${h(t)}.spec`],{...e},this.logger);try{return d.pFrameAddColumnSpec(this.frame,t,e)}catch(n){throw new Error(`PFrame ${this.id} addColumnSpec request ${r} failed, columnId: ${JSON.stringify(t)}, columnSpec: ${JSON.stringify(e)}, error:
3
+ ${n.toString()}`)}}setDataSource(t){const e=l.ulid();u([`${this.id}`,`${e}.json`],{timeStamp:Date.now(),requestType:"setDataSource"},this.logger);const r={preloadBlob:async n=>{var a,c;const s=l.ulid();u([`${this.id}`,`${s}.json`],{timeStamp:Date.now(),requestType:"preloadBlob",requestData:{blobIds:n}},this.logger),(a=this.logger)==null||a.call(this,"info",`PFrame ${this.id} preloadBlob started, blobIds: ${JSON.stringify(n)}`);const o=performance.now();try{return await t.preloadBlob(n)}finally{const p=performance.now();(c=this.logger)==null||c.call(this,"info",`PFrame ${this.id} preloadBlob finished, took ${m(Math.round(p-o))} (${n.length} blobs)`)}},resolveBlobContent:async n=>{var a;const s=l.ulid();u([`${this.id}`,`${s}.json`],{timeStamp:Date.now(),requestType:"resolveBlobContent",requestData:{blobId:n}},this.logger);const o=await t.resolveBlobContent(n);return(a=this.logger)==null||a.call(this,"info",`PFrame ${this.id} resolved blob ${n}`),u([`${this.id}`,"data",`${n}`],o,this.logger),o}};try{return d.pFrameSetDataSource(this.frame,r)}catch(n){throw new Error(`PFrame ${this.id} setDataSource request ${e} failed, dataSource: ${t.toString()}, error:
4
+ ${n.toString()}`)}}setColumnData(t,e){const r=l.ulid();u([`${this.id}`,`${r}.json`],{timeStamp:Date.now(),requestType:"setColumnData",requestData:{columnId:h(t),dataInfo:e}},this.logger),u([`${this.id}`,"data",`${h(t)}.datainfo`],{...e},this.logger);try{return d.pFrameSetColumnData(this.frame,t,e)}catch(n){throw new Error(`PFrame ${this.id} setColumnData request ${r} failed, columnId: ${JSON.stringify(t)}, dataInfo: ${JSON.stringify(e)}, error:
5
+ ${n.toString()}`)}}dispose(){var e;const t=l.ulid();u([`${this.id}`,`${t}.json`],{timeStamp:Date.now(),requestType:"dispose"},this.logger);try{d.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
+ ${r.toString()}`)}}[Symbol.dispose](){this.dispose()}async findColumns(t){var n;const e=l.ulid();u([`${this.id}`,`${e}.json`],{timeStamp:Date.now(),requestType:"findColumns",requestData:t},this.logger);const r=performance.now();try{return await d.pFrameFindColumns(this.frame,t)}catch(s){throw new Error(`PFrame ${this.id} findColumns request ${e} failed, request: ${JSON.stringify(t)}, error:
7
+ ${s.toString()}`)}finally{const s=performance.now();(n=this.logger)==null||n.call(this,"info",`PFrame ${this.id} findColumns request ${e} took ${m(Math.round(s-r))}`)}}async deleteColumn(t){var n;const e=l.ulid();u([`${this.id}`,`${e}.json`],{timeStamp:Date.now(),requestType:"deleteColumn",requestData:t},this.logger);const r=performance.now();try{return await d.pFrameDeleteColumn(this.frame,t)}catch(s){throw new Error(`PFrame ${this.id} deleteColumn request ${e} failed, request: ${JSON.stringify(t)}, error:
8
+ ${s.toString()}`)}finally{const s=performance.now();(n=this.logger)==null||n.call(this,"info",`PFrame ${this.id} deleteColumn request ${e} took ${m(Math.round(s-r))}`)}}async getColumnSpec(t){var n;const e=l.ulid();u([`${this.id}`,`${e}.json`],{timeStamp:Date.now(),requestType:"getColumnSpec",requestData:{columnId:h(t)}},this.logger);const r=performance.now();try{return await d.pFrameGetColumnSpec(this.frame,t)}catch(s){throw new Error(`PFrame ${this.id} getColumnSpec request ${e} failed, columnId: ${JSON.stringify(t)}, error:
9
+ ${s.toString()}`)}finally{const s=performance.now();(n=this.logger)==null||n.call(this,"info",`PFrame ${this.id} getColumnSpec request ${e} took ${m(Math.round(s-r))}`)}}async listColumns(){var r;const t=l.ulid();u([`${this.id}`,`${t}.json`],{timeStamp:Date.now(),requestType:"listColumns"},this.logger);const e=performance.now();try{return await d.pFrameListColumns(this.frame)}catch(n){throw new Error(`PFrame ${this.id} listColumns request ${t} failed, error:
10
+ ${n.toString()}`)}finally{const n=performance.now();(r=this.logger)==null||r.call(this,"info",`PFrame ${this.id} listColumns request ${t} took ${m(Math.round(n-e))}`)}}createTable(t){var s;const e=l.ulid(),r={timeStamp:Date.now(),requestType:"createTable",requestData:A(t)};u([`${this.id}`,`${e}.json`],r,this.logger),u([`${this.id}`,`${e}`,`${e}.json`],r,this.logger);const n=performance.now();try{const o=d.pFrameCreateTable(this.frame,e,t);return new S(this,e,o)}catch(o){throw new Error(`PFrame ${this.id} createTable request ${e} failed, request: ${JSON.stringify(t)}, error:
11
+ ${o.toString()}`)}finally{const o=performance.now();(s=this.logger)==null||s.call(this,"info",`PFrame ${this.id} createTable request ${e} took ${m(Math.round(o-n))}`)}}async getUniqueValues(t,e){var s,o,a;const r=l.ulid();u([`${this.id}`,`${r}.json`],{timeStamp:Date.now(),requestType:"getUniqueValues",requestData:k(t)},this.logger),(s=this.logger)==null||s.call(this,"info",`PFrame ${this.id} getUniqueValues request ${r} started`);const n=performance.now();try{return(o=e==null?void 0:e.signal)==null||o.throwIfAborted(),await d.pFrameGetUniqueValues(this.frame,r,t,e==null?void 0:e.signal)}catch(c){throw new Error(`PFrame ${this.id} getUniqueValues request ${r} failed, request: ${JSON.stringify(t)}, error:
12
+ ${c.toString()}`)}finally{const c=performance.now();(a=this.logger)==null||a.call(this,"info",`PFrame ${this.id} getUniqueValues request ${r} finished, took ${m(Math.round(c-n))}`)}}};class S{constructor(t,e,r){var n,s;this.frame=t,this.id=e,this.table=r,(s=(n=this.frame).logger)==null||s.call(n,"info",`PTable ${this.id} created`)}getSpec(){const t=l.ulid();u([`${this.frame.id}`,`${this.id}`,`${t}.json`],{timeStamp:Date.now(),requestType:"getSpec"},this.frame.logger);try{return d.pTableGetSpec(this.table)}catch(e){throw new Error(`PTable ${this.id} getSpec request ${t} failed, error:
13
+ ${e.toString()}`)}}getColumnIndices(t){const e=l.ulid();u([`${this.frame.id}`,`${this.id}`,`${e}.json`],{timeStamp:Date.now(),requestType:"getColumnIndices",requestData:{columnIds:t.map(b)}},this.frame.logger);try{return d.pTableGetColumnIndices(this.table,t)}catch(r){throw new Error(`PTable ${this.id} getColumnIndices request ${e} failed, columnIds: ${JSON.stringify(t)}, error:
14
+ ${r.toString()}`)}}async getShape(t){var n,s,o,a;const e=l.ulid();u([`${this.frame.id}`,`${this.id}`,`${e}.json`],{timeStamp:Date.now(),requestType:"getShape"},this.frame.logger),(s=(n=this.frame).logger)==null||s.call(n,"info",`PTable ${this.id} getShape request ${e} started`);const r=performance.now();try{return await d.pTableGetShape(this.table,t==null?void 0:t.signal)}catch(c){throw new Error(`PTable ${this.id} getShape request ${e} failed, error:
15
+ ${c.toString()}`)}finally{const c=performance.now();(a=(o=this.frame).logger)==null||a.call(o,"info",`PTable ${this.id} getShape request ${e} finished, took ${m(Math.round(c-r))}`)}}async getData(t,e){var o,a,c,p,C;const r=l.ulid();u([`${this.frame.id}`,`${this.id}`,`${r}.json`],{timeStamp:Date.now(),requestType:"getData",requestData:{columnIndices:t,range:(e==null?void 0:e.range)??null}},this.frame.logger),(a=(o=this.frame).logger)==null||a.call(o,"info",`PTable ${this.id} getData request ${r} started`);let n=0;const s=performance.now();try{(c=e==null?void 0:e.signal)==null||c.throwIfAborted();const f=await d.pTableGetData(this.table,r,t,e==null?void 0:e.range,e==null?void 0:e.signal);return n=f[0].data.length,f}catch(f){throw new Error(`PTable ${this.id} getData request ${r} failed, columnIndices: ${JSON.stringify(t)}, range: ${e!=null&&e.range?JSON.stringify(e.range):void 0}, error:
16
+ ${f.toString()}`)}finally{const f=performance.now();(C=(p=this.frame).logger)==null||C.call(p,"info",`PTable ${this.id} getData request ${r} finished, took ${m(Math.round(f-s))} (${n} rows)`)}}filter(t){var s,o;const e=l.ulid(),r={timeStamp:Date.now(),table:this.id,requestType:"filter",requestData:{filters:t.map(T)}};u([`${this.frame.id}`,`${e}.json`],r,this.frame.logger),u([`${this.frame.id}`,`${e}`,`${e}.json`],r,this.frame.logger);const n=performance.now();try{const a=d.pTableFilter(this.table,e,t);return new S(this.frame,e,a)}catch(a){throw new Error(`PTable ${this.id} filter request ${e} failed, request: ${JSON.stringify(t)}, error:
17
+ ${a.toString()}`)}finally{const a=performance.now();(o=(s=this.frame).logger)==null||o.call(s,"info",`PTable ${this.id} filter request ${e} took ${m(Math.round(a-n))}`)}}sort(t){var s,o;const e=l.ulid(),r={timeStamp:Date.now(),table:this.id,requestType:"sort",requestData:t.map(B)};u([`${this.frame.id}`,`${e}.json`],r,this.frame.logger),u([`${this.frame.id}`,`${e}`,`${e}.json`],r,this.frame.logger);const n=performance.now();try{const a=d.pTableSort(this.table,e,t);return new S(this.frame,e,a)}catch(a){throw new Error(`PTable ${this.id} sort request ${e} failed, request: ${JSON.stringify(t)}, error:
18
+ ${a.toString()}`)}finally{const a=performance.now();(o=(s=this.frame).logger)==null||o.call(s,"info",`PTable ${this.id} sort request ${e} took ${m(Math.round(a-n))}`)}}dispose(){var e,r;const t=l.ulid();u([`${this.frame.id}`,`${this.id}`,`${t}.json`],{timeStamp:Date.now(),requestType:"dispose"},this.frame.logger);try{d.pTableDispose(this.table),(r=(e=this.frame).logger)==null||r.call(e,"info",`PTable ${this.id} disposed`)}catch(n){throw new Error(`PTable ${this.id} dispose request ${t} failed, error:
19
+ ${n.toString()}`)}}[Symbol.dispose](){this.dispose()}}const V=x;exports.PFrame=V;
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 { createHash } from 'node:crypto';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport { Readable, Writable } from 'node:stream';\nimport type { PFrameInternal } from '@milaboratories/pl-model-middle-layer';\nimport {\n PObjectId,\n PTableColumnId,\n PTableRecordFilter,\n PTableSorting,\n UniqueValuesRequest\n} from '@milaboratories/pl-model-common';\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 function hashColumnId(columnId: PObjectId): PObjectId {\n return createHash('sha256').update(columnId).digest('hex') as PObjectId;\n}\n\nexport function hashTableColumnId(tableId: PTableColumnId): PTableColumnId {\n if (tableId.type === 'column') {\n return {\n ...tableId,\n id: hashColumnId(tableId.id)\n };\n }\n return tableId;\n}\n\nexport function hashFilterColumnId(\n filter: PTableRecordFilter\n): PTableRecordFilter {\n return {\n ...filter,\n column: hashTableColumnId(filter.column)\n };\n}\n\nexport function hashUniqueValuesRequestColumnId(\n request: UniqueValuesRequest\n): UniqueValuesRequest {\n return {\n ...request,\n columnId: hashColumnId(request.columnId),\n filters: request.filters.map(hashFilterColumnId)\n };\n}\n\nexport function hashSortingColumnId(sorting: PTableSorting): PTableSorting {\n return {\n ...sorting,\n column: hashTableColumnId(sorting.column)\n };\n}\n\nfunction hashJoinEntryColumnId(\n entry: PFrameInternal.JoinEntryV3\n): PFrameInternal.JoinEntryV3 {\n const type = entry.type;\n switch (type) {\n case 'column':\n return {\n ...entry,\n columnId: hashColumnId(entry.columnId)\n };\n case 'slicedColumn':\n return {\n ...entry,\n columnId: hashColumnId(entry.columnId),\n newId: hashColumnId(entry.newId)\n };\n case 'inlineColumn':\n return {\n ...entry,\n newId: hashColumnId(entry.newId)\n };\n case 'inner':\n return {\n ...entry,\n entries: entry.entries.map(hashJoinEntryColumnId)\n };\n case 'full':\n return {\n ...entry,\n entries: entry.entries.map(hashJoinEntryColumnId)\n };\n case 'outer':\n return {\n ...entry,\n primary: hashJoinEntryColumnId(entry.primary),\n secondary: entry.secondary.map(hashJoinEntryColumnId)\n };\n default:\n throw new Error(`Unsupported join entry type: ${type}`);\n }\n}\n\nexport function hashCreateTableRequestColumnId(\n request: PFrameInternal.CreateTableRequestV3\n): PFrameInternal.CreateTableRequestV3 {\n return {\n ...request,\n src: hashJoinEntryColumnId(request.src),\n filters: request.filters.map(hashFilterColumnId)\n };\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, null, 2);\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 {\n hashColumnId,\n dump,\n hashTableColumnId,\n hashFilterColumnId,\n hashUniqueValuesRequestColumnId,\n hashSortingColumnId,\n hashCreateTableRequestColumnId\n} from './dump';\n\nexport class PFrame implements PFrameInternal.PFrameV7 {\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: hashColumnId(columnId),\n columnSpec\n }\n },\n this.logger\n );\n\n dump(\n [`${this.id}`, `data`, `${hashColumnId(columnId)}.spec`],\n {\n ...columnSpec\n },\n this.logger\n );\n\n try {\n return AddonSymbol.pFrameAddColumnSpec(this.frame, columnId, columnSpec);\n } catch (err: unknown) {\n 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 const 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 await 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: hashColumnId(columnId),\n dataInfo\n }\n },\n this.logger\n );\n\n dump(\n [`${this.id}`, `data`, `${hashColumnId(columnId)}.datainfo`],\n {\n ...dataInfo\n },\n this.logger\n );\n\n try {\n 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: hashColumnId(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 createTable(\n request: PFrameInternal.CreateTableRequestV3\n ): PFrameInternal.PTableV5 {\n const requestId = ulid();\n const dumpData = {\n timeStamp: Date.now(),\n requestType: 'createTable',\n requestData: hashCreateTableRequestColumnId(request)\n };\n dump([`${this.id}`, `${requestId}.json`], dumpData, this.logger);\n dump(\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 const boxed = AddonSymbol.pFrameCreateTable(\n this.frame,\n requestId,\n request\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 ops?: {\n signal?: AbortSignal;\n }\n ): Promise<UniqueValuesResponse> {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getUniqueValues',\n requestData: hashUniqueValuesRequestColumnId(request)\n },\n this.logger\n );\n\n this.logger?.(\n 'info',\n `PFrame ${this.id} getUniqueValues request ${requestId} started`\n );\n const t0 = performance.now();\n try {\n ops?.signal?.throwIfAborted();\n return await AddonSymbol.pFrameGetUniqueValues(\n this.frame,\n requestId,\n request,\n ops?.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.PTableV5 {\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 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: columnIds.map(hashTableColumnId)\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 getShape(ops?: { signal?: AbortSignal }): Promise<PTableShape> {\n const requestId = ulid();\n dump(\n [`${this.frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getShape'\n },\n this.frame.logger\n );\n\n try {\n return await AddonSymbol.pTableGetShape(this.table, ops?.signal);\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 async getData(\n columnIndices: number[],\n ops?: {\n range?: TableRange | undefined;\n signal?: AbortSignal | undefined;\n }\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: ops?.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 let rowCount = 0;\n const t0 = performance.now();\n try {\n ops?.signal?.throwIfAborted();\n const result = await AddonSymbol.pTableGetData(\n this.table,\n requestId,\n columnIndices,\n ops?.range,\n ops?.signal\n );\n rowCount = result[0].data.length;\n return result;\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} getData request ${requestId} failed, ` +\n `columnIndices: ${JSON.stringify(columnIndices)}, ` +\n `range: ${ops?.range ? JSON.stringify(ops.range) : undefined}, ` +\n `error:\\n` +\n `${(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))} (${rowCount} rows)`\n );\n }\n }\n\n filter(request: PTableRecordFilter[]): PFrameInternal.PTableV5 {\n const requestId = ulid();\n const dumpData = {\n timeStamp: Date.now(),\n table: this.id,\n requestType: 'filter',\n requestData: {\n filters: request.map(hashFilterColumnId)\n }\n };\n dump(\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 const boxed = AddonSymbol.pTableFilter(this.table, requestId, request);\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 sort(request: PTableSorting[]): PFrameInternal.PTableV5 {\n const requestId = ulid();\n const dumpData = {\n timeStamp: Date.now(),\n table: this.id,\n requestType: 'sort',\n requestData: request.map(hashSortingColumnId)\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 const boxed = AddonSymbol.pTableSort(this.table, requestId, request);\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.PFrameV7;\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","hashColumnId","columnId","createHash","hashTableColumnId","tableId","hashFilterColumnId","filter","hashUniqueValuesRequestColumnId","request","hashSortingColumnId","sorting","hashJoinEntryColumnId","entry","type","hashCreateTableRequestColumnId","dump","relativePath","logger","relativeUri","part","fileDir","fileData","error","PFrame$1","spillPath","__publicField","ulid","_a","err","columnSpec","requestId","dataSource","wrappedDataSource","blobIds","t0","t1","humanizeDuration","blobId","blob","dataInfo","dumpData","boxed","PTable","_b","ops","_c","frame","id","table","columnIds","columnIndices","rowCount","result","_e","_d","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 { createHash } from 'node:crypto';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport { Readable, Writable } from 'node:stream';\nimport type { PFrameInternal } from '@milaboratories/pl-model-middle-layer';\nimport {\n PObjectId,\n PTableColumnId,\n PTableRecordFilter,\n PTableSorting,\n UniqueValuesRequest\n} from '@milaboratories/pl-model-common';\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 function hashColumnId(columnId: PObjectId): PObjectId {\n return createHash('sha256').update(columnId).digest('hex') as PObjectId;\n}\n\nexport function hashTableColumnId(tableId: PTableColumnId): PTableColumnId {\n if (tableId.type === 'column') {\n return {\n ...tableId,\n id: hashColumnId(tableId.id)\n };\n }\n return tableId;\n}\n\nexport function hashFilterColumnId(\n filter: PTableRecordFilter\n): PTableRecordFilter {\n return {\n ...filter,\n column: hashTableColumnId(filter.column)\n };\n}\n\nexport function hashUniqueValuesRequestColumnId(\n request: UniqueValuesRequest\n): UniqueValuesRequest {\n return {\n ...request,\n columnId: hashColumnId(request.columnId),\n filters: request.filters.map(hashFilterColumnId)\n };\n}\n\nexport function hashSortingColumnId(sorting: PTableSorting): PTableSorting {\n return {\n ...sorting,\n column: hashTableColumnId(sorting.column)\n };\n}\n\nfunction hashJoinEntryColumnId(\n entry: PFrameInternal.JoinEntryV3\n): PFrameInternal.JoinEntryV3 {\n const type = entry.type;\n switch (type) {\n case 'column':\n return {\n ...entry,\n columnId: hashColumnId(entry.columnId)\n };\n case 'slicedColumn':\n return {\n ...entry,\n columnId: hashColumnId(entry.columnId),\n newId: hashColumnId(entry.newId)\n };\n case 'inlineColumn':\n return {\n ...entry,\n newId: hashColumnId(entry.newId)\n };\n case 'inner':\n return {\n ...entry,\n entries: entry.entries.map(hashJoinEntryColumnId)\n };\n case 'full':\n return {\n ...entry,\n entries: entry.entries.map(hashJoinEntryColumnId)\n };\n case 'outer':\n return {\n ...entry,\n primary: hashJoinEntryColumnId(entry.primary),\n secondary: entry.secondary.map(hashJoinEntryColumnId)\n };\n default:\n throw new Error(`Unsupported join entry type: ${type}`);\n }\n}\n\nexport function hashCreateTableRequestColumnId(\n request: PFrameInternal.CreateTableRequestV3\n): PFrameInternal.CreateTableRequestV3 {\n return {\n ...request,\n src: hashJoinEntryColumnId(request.src),\n filters: request.filters.map(hashFilterColumnId)\n };\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, null, 2);\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 {\n hashColumnId,\n dump,\n hashTableColumnId,\n hashFilterColumnId,\n hashUniqueValuesRequestColumnId,\n hashSortingColumnId,\n hashCreateTableRequestColumnId\n} from './dump';\n\nexport class PFrame implements PFrameInternal.PFrameV7 {\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: hashColumnId(columnId),\n columnSpec\n }\n },\n this.logger\n );\n\n dump(\n [`${this.id}`, `data`, `${hashColumnId(columnId)}.spec`],\n {\n ...columnSpec\n },\n this.logger\n );\n\n try {\n return AddonSymbol.pFrameAddColumnSpec(this.frame, columnId, columnSpec);\n } catch (err: unknown) {\n 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 const 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 this.logger?.(\n 'info',\n `PFrame ${this.id} preloadBlob started, blobIds: ${JSON.stringify(blobIds)}`\n );\n const t0 = performance.now();\n try {\n return await dataSource.preloadBlob(blobIds);\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} preloadBlob finished, took ${humanizeDuration(Math.round(t1 - t0))} (${blobIds.length} blobs)`\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: hashColumnId(columnId),\n dataInfo\n }\n },\n this.logger\n );\n\n dump(\n [`${this.id}`, `data`, `${hashColumnId(columnId)}.datainfo`],\n {\n ...dataInfo\n },\n this.logger\n );\n\n try {\n 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: hashColumnId(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 createTable(\n request: PFrameInternal.CreateTableRequestV3\n ): PFrameInternal.PTableV5 {\n const requestId = ulid();\n const dumpData = {\n timeStamp: Date.now(),\n requestType: 'createTable',\n requestData: hashCreateTableRequestColumnId(request)\n };\n dump([`${this.id}`, `${requestId}.json`], dumpData, this.logger);\n dump(\n [`${this.id}`, `${requestId}`, `${requestId}.json`],\n dumpData,\n this.logger\n );\n\n const t0 = performance.now();\n try {\n const boxed = AddonSymbol.pFrameCreateTable(\n this.frame,\n requestId,\n request\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 ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n async getUniqueValues(\n request: UniqueValuesRequest,\n ops?: {\n signal?: AbortSignal;\n }\n ): Promise<UniqueValuesResponse> {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getUniqueValues',\n requestData: hashUniqueValuesRequestColumnId(request)\n },\n this.logger\n );\n\n this.logger?.(\n 'info',\n `PFrame ${this.id} getUniqueValues request ${requestId} started`\n );\n const t0 = performance.now();\n try {\n ops?.signal?.throwIfAborted();\n return await AddonSymbol.pFrameGetUniqueValues(\n this.frame,\n requestId,\n request,\n ops?.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.PTableV5 {\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 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: columnIds.map(hashTableColumnId)\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 getShape(ops?: { signal?: AbortSignal }): Promise<PTableShape> {\n const requestId = ulid();\n dump(\n [`${this.frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getShape'\n },\n this.frame.logger\n );\n\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} getShape request ${requestId} started`\n );\n const t0 = performance.now();\n try {\n return await AddonSymbol.pTableGetShape(this.table, ops?.signal);\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 } finally {\n const t1 = performance.now();\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} getShape request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n async getData(\n columnIndices: number[],\n ops?: {\n range?: TableRange | undefined;\n signal?: AbortSignal | undefined;\n }\n ): Promise<PTableVector[]> {\n const requestId = ulid();\n dump(\n [`${this.frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getData',\n requestData: {\n columnIndices,\n range: ops?.range ?? null\n }\n },\n this.frame.logger\n );\n\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} getData request ${requestId} started`\n );\n let rowCount = 0;\n const t0 = performance.now();\n try {\n ops?.signal?.throwIfAborted();\n const result = await AddonSymbol.pTableGetData(\n this.table,\n requestId,\n columnIndices,\n ops?.range,\n ops?.signal\n );\n rowCount = result[0].data.length;\n return result;\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} getData request ${requestId} failed, ` +\n `columnIndices: ${JSON.stringify(columnIndices)}, ` +\n `range: ${ops?.range ? JSON.stringify(ops.range) : undefined}, ` +\n `error:\\n` +\n `${(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))} (${rowCount} rows)`\n );\n }\n }\n\n filter(request: PTableRecordFilter[]): PFrameInternal.PTableV5 {\n const requestId = ulid();\n const dumpData = {\n timeStamp: Date.now(),\n table: this.id,\n requestType: 'filter',\n requestData: {\n filters: request.map(hashFilterColumnId)\n }\n };\n dump(\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 const boxed = AddonSymbol.pTableFilter(this.table, requestId, request);\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 ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n sort(request: PTableSorting[]): PFrameInternal.PTableV5 {\n const requestId = ulid();\n const dumpData = {\n timeStamp: Date.now(),\n table: this.id,\n requestType: 'sort',\n requestData: request.map(hashSortingColumnId)\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 const boxed = AddonSymbol.pTableSort(this.table, requestId, request);\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 ${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.PFrameV7;\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","hashColumnId","columnId","createHash","hashTableColumnId","tableId","hashFilterColumnId","filter","hashUniqueValuesRequestColumnId","request","hashSortingColumnId","sorting","hashJoinEntryColumnId","entry","type","hashCreateTableRequestColumnId","dump","relativePath","logger","relativeUri","part","fileDir","fileData","error","PFrame$1","spillPath","__publicField","ulid","_a","err","columnSpec","requestId","dataSource","wrappedDataSource","blobIds","t0","t1","_b","humanizeDuration","blobId","blob","dataInfo","dumpData","boxed","PTable","ops","_c","frame","id","table","columnIds","_d","columnIndices","rowCount","result","_e","PFrame","PFrameImpl"],"mappings":"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"}