@milaboratories/pframes-rs-node 1.0.53 → 1.0.54

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.
@@ -43,8 +43,9 @@ interface NodeFrame {
43
43
  pFrameSetColumnData: (
44
44
  pFrame: NodeFrameSymbol,
45
45
  columnId: PObjectId,
46
- dataInfo: DataInfo<PFrameInternal.PFrameBlobId>
47
- ) => void;
46
+ dataInfo: DataInfo<PFrameInternal.PFrameBlobId>,
47
+ signal: AbortSignal | undefined
48
+ ) => Promise<void>;
48
49
  pFrameDispose: (pFrame: NodeFrameSymbol) => void;
49
50
  pFrameFindColumns: (
50
51
  pFrame: NodeFrameSymbol,
package/export/export.ts CHANGED
@@ -5,7 +5,7 @@ export type PFrame = {
5
5
  new (
6
6
  spillPath: string,
7
7
  logger?: PFrameInternal.Logger
8
- ): PFrameInternal.PFrameV8;
8
+ ): PFrameInternal.PFrameV9;
9
9
 
10
10
  pprofDump: () => Promise<Uint8Array>;
11
11
  };
package/export/wrapper.ts CHANGED
@@ -37,7 +37,7 @@ import {
37
37
  hashCreateTableRequestColumnId
38
38
  } from './dump';
39
39
 
40
- export class PFrame implements PFrameInternal.PFrameV8 {
40
+ export class PFrame implements PFrameInternal.PFrameV9 {
41
41
  public readonly id: FrameId = ulid() as FrameId;
42
42
  private readonly frame: NodeFrameSymbol;
43
43
 
@@ -194,8 +194,11 @@ export class PFrame implements PFrameInternal.PFrameV8 {
194
194
 
195
195
  setColumnData(
196
196
  columnId: PObjectId,
197
- dataInfo: DataInfo<PFrameInternal.PFrameBlobId>
198
- ): void {
197
+ dataInfo: DataInfo<PFrameInternal.PFrameBlobId>,
198
+ ops?: {
199
+ signal?: AbortSignal;
200
+ }
201
+ ): Promise<void> {
199
202
  const requestId = ulid();
200
203
  dump(
201
204
  [`${this.id}`, `${requestId}.json`],
@@ -219,7 +222,13 @@ export class PFrame implements PFrameInternal.PFrameV8 {
219
222
  );
220
223
 
221
224
  try {
222
- return AddonSymbol.pFrameSetColumnData(this.frame, columnId, dataInfo);
225
+ ops?.signal?.throwIfAborted();
226
+ return AddonSymbol.pFrameSetColumnData(
227
+ this.frame,
228
+ columnId,
229
+ dataInfo,
230
+ ops?.signal
231
+ );
223
232
  } catch (err: unknown) {
224
233
  throw new PFrameError(
225
234
  `PFrame ${this.id} setColumnData request ${requestId} failed, ` +
@@ -17,7 +17,7 @@ interface NodeFrame {
17
17
  pFrameCreate: (spillPath: string, logger: PFrameInternal.Logger | undefined) => NodeFrameSymbol;
18
18
  pFrameAddColumnSpec: (pFrame: NodeFrameSymbol, columnId: PObjectId, columnSpec: PColumnSpec) => void;
19
19
  pFrameSetDataSource: (pFrame: NodeFrameSymbol, dataSource: PFrameInternal.PFrameDataSource) => void;
20
- pFrameSetColumnData: (pFrame: NodeFrameSymbol, columnId: PObjectId, dataInfo: DataInfo<PFrameInternal.PFrameBlobId>) => void;
20
+ pFrameSetColumnData: (pFrame: NodeFrameSymbol, columnId: PObjectId, dataInfo: DataInfo<PFrameInternal.PFrameBlobId>, signal: AbortSignal | undefined) => Promise<void>;
21
21
  pFrameDispose: (pFrame: NodeFrameSymbol) => void;
22
22
  pFrameFindColumns: (pFrame: NodeFrameSymbol, request: PFrameInternal.FindColumnsRequest) => Promise<PFrameInternal.FindColumnsResponse>;
23
23
  pFrameDeleteColumn: (pFrame: NodeFrameSymbol, request: PFrameInternal.DeleteColumnFromColumnsRequest) => Promise<PFrameInternal.DeleteColumnFromColumnsResponse>;
@@ -1 +1 @@
1
- {"version":3,"file":"addon-def.d.ts","sourceRoot":"","sources":["../export/addon-def.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"addon-def.d.ts","sourceRoot":"","sources":["../export/addon-def.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { PFrameInternal } from '@milaboratories/pl-model-middle-layer';
2
2
  export type PFrame = {
3
- new (spillPath: string, logger?: PFrameInternal.Logger): PFrameInternal.PFrameV8;
3
+ new (spillPath: string, logger?: PFrameInternal.Logger): PFrameInternal.PFrameV9;
4
4
  pprofDump: () => Promise<Uint8Array>;
5
5
  };
6
6
  export declare const PFrame: PFrame;
@@ -1,22 +1,22 @@
1
- "use strict";var I=Object.defineProperty;var j=(s,r,e)=>r in s?I(s,r,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[r]=e;var P=(s,r,e)=>j(s,typeof r!="symbol"?r+"":r,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("humanize-duration"),m=require("ulid"),a=require("@milaboratories/pl-model-common"),M=require("node:module"),q=require("node:path"),U=require("node:url"),A=require("@mapbox/node-pre-gyp"),R=require("node:crypto"),p=require("node:fs"),S=require("node:stream");var F=typeof document<"u"?document.currentScript:null;const E=typeof document>"u"?require("url").pathToFileURL(__filename).href:F&&F.tagName.toUpperCase()==="SCRIPT"&&F.src||new URL("index.js",document.baseURI).href,J=q.dirname(U.fileURLToPath(E)),N=M.createRequire(E),{find:O}=A,d=N(O(q.resolve(J,"../package.json")));async function C(s){try{return await p.promises.access(s),!0}catch{return!1}}async function k(s){await C(s)||await p.promises.mkdir(s,{recursive:!0})}async function v(s,r){const e=`${s}.tmp`;await C(e)&&await p.promises.rm(e,{recursive:!0});const t=typeof r=="string"?Buffer.from(r,"utf8"):r,i=S.Readable.from(t),n=p.createWriteStream(e,{flags:"wx"});await S.Readable.toWeb(i).pipeTo(S.Writable.toWeb(n)),await p.promises.rename(e,s)}function $(s){return R.createHash("sha256").update(s).digest("hex")}function b(s){return s.type==="column"?{...s,id:$(s.id)}:s}function D(s){return{...s,column:b(s.column)}}function _(s){return{...s,columnId:$(s.columnId),filters:s.filters.map(D)}}function B(s){return{...s,column:b(s.column)}}function w(s){const r=s.type;switch(r){case"column":return{...s,columnId:$(s.columnId)};case"slicedColumn":return{...s,columnId:$(s.columnId),newId:$(s.newId)};case"inlineColumn":return{...s,newId:$(s.newId)};case"inner":return{...s,entries:s.entries.map(w)};case"full":return{...s,entries:s.entries.map(w)};case"outer":return{...s,primary:w(s.primary),secondary:s.secondary.map(w)};default:throw new Error(`Unsupported join entry type: ${r}`)}}function V(s){return{...s,src:w(s.src),filters:s.filters.map(D)}}async function l(s,r,e){if(process.env.MI_DUMP_PFRAMES_RS)try{const t=s.map(o=>encodeURIComponent(o)),i=q.join(process.env.MI_DUMP_PFRAMES_RS,...t.slice(0,-1));await k(i);const n=q.join(process.env.MI_DUMP_PFRAMES_RS,...t),u=ArrayBuffer.isView(r)?r:JSON.stringify(r,null,2);await v(n,u)}catch(t){e==null||e("warn",`error while dumping PFrames data: ${t}`)}}let x=class{constructor(r,e){P(this,"id",m.ulid());P(this,"frame");var t;this.logger=e,l([`${this.id}`,`${this.id}.json`],{timeStamp:Date.now(),requestType:"create"},this.logger);try{this.frame=d.pFrameCreate(r,e),(t=this.logger)==null||t.call(this,"info",`PFrame ${this.id} created`)}catch(i){throw new a.PFrameError(`PFrame ${this.id} creation failed, logger: ${e==null?void 0:e.toString()}, error:
2
- ${a.ensureError(i).message}`)}}static async pprofDump(){try{return await d.pprofDump()}catch(r){throw new a.PFrameError(`PFrame pprofDump failed, error:
3
- ${a.ensureError(r).message}`)}}addColumnSpec(r,e){const t=m.ulid();l([`${this.id}`,`${t}.json`],{timeStamp:Date.now(),requestType:"addColumnSpec",requestData:{columnId:$(r),columnSpec:e}},this.logger),l([`${this.id}`,"data",`${$(r)}.spec`],{...e},this.logger);try{return d.pFrameAddColumnSpec(this.frame,r,e)}catch(i){throw new a.PFrameError(`PFrame ${this.id} addColumnSpec request ${t} failed, columnId: ${JSON.stringify(r)}, columnSpec: ${JSON.stringify(e)}, error:
4
- ${a.ensureError(i).message}`)}}setDataSource(r){const e=m.ulid();l([`${this.id}`,`${e}.json`],{timeStamp:Date.now(),requestType:"setDataSource"},this.logger);const t={preloadBlob:async i=>{var o,h;const n=m.ulid();l([`${this.id}`,`${n}.json`],{timeStamp:Date.now(),requestType:"preloadBlob",requestData:{blobIds:i}},this.logger),(o=this.logger)==null||o.call(this,"info",`PFrame ${this.id} preloadBlob started, blobIds: ${JSON.stringify(i)}`);const u=performance.now();try{return await r.preloadBlob(i)}finally{const c=performance.now();(h=this.logger)==null||h.call(this,"info",`PFrame ${this.id} preloadBlob finished, took ${f(Math.round(c-u))} (${i.length} blobs)`)}},resolveBlobContent:async i=>{var o;const n=m.ulid();l([`${this.id}`,`${n}.json`],{timeStamp:Date.now(),requestType:"resolveBlobContent",requestData:{blobId:i}},this.logger);const u=await r.resolveBlobContent(i);return(o=this.logger)==null||o.call(this,"info",`PFrame ${this.id} resolved blob ${i}`),l([`${this.id}`,"data",`${i}`],u,this.logger),u}};try{return d.pFrameSetDataSource(this.frame,t)}catch(i){throw new a.PFrameError(`PFrame ${this.id} setDataSource request ${e} failed, dataSource: ${r.toString()}, error:
5
- ${a.ensureError(i).message}`)}}setColumnData(r,e){const t=m.ulid();l([`${this.id}`,`${t}.json`],{timeStamp:Date.now(),requestType:"setColumnData",requestData:{columnId:$(r),dataInfo:e}},this.logger),l([`${this.id}`,"data",`${$(r)}.datainfo`],{...e},this.logger);try{return d.pFrameSetColumnData(this.frame,r,e)}catch(i){throw new a.PFrameError(`PFrame ${this.id} setColumnData request ${t} failed, columnId: ${JSON.stringify(r)}, dataInfo: ${JSON.stringify(e)}, error:
6
- ${a.ensureError(i).message}`)}}dispose(){var e;const r=m.ulid();l([`${this.id}`,`${r}.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(t){throw new a.PFrameError(`PFrame ${this.id} dispose request ${r} failed, error:
7
- ${a.ensureError(t).message}`)}}[Symbol.dispose](){this.dispose()}async findColumns(r){var i;const e=m.ulid();l([`${this.id}`,`${e}.json`],{timeStamp:Date.now(),requestType:"findColumns",requestData:r},this.logger);const t=performance.now();try{return await d.pFrameFindColumns(this.frame,r)}catch(n){throw new a.PFrameError(`PFrame ${this.id} findColumns request ${e} failed, request: ${JSON.stringify(r)}, error:
8
- ${a.ensureError(n).message}`)}finally{const n=performance.now();(i=this.logger)==null||i.call(this,"info",`PFrame ${this.id} findColumns request ${e} took ${f(Math.round(n-t))}`)}}async deleteColumn(r){var i;const e=m.ulid();l([`${this.id}`,`${e}.json`],{timeStamp:Date.now(),requestType:"deleteColumn",requestData:r},this.logger);const t=performance.now();try{return await d.pFrameDeleteColumn(this.frame,r)}catch(n){throw new a.PFrameError(`PFrame ${this.id} deleteColumn request ${e} failed, request: ${JSON.stringify(r)}, error:
9
- ${a.ensureError(n).message}`)}finally{const n=performance.now();(i=this.logger)==null||i.call(this,"info",`PFrame ${this.id} deleteColumn request ${e} took ${f(Math.round(n-t))}`)}}async getColumnSpec(r){var i;const e=m.ulid();l([`${this.id}`,`${e}.json`],{timeStamp:Date.now(),requestType:"getColumnSpec",requestData:{columnId:$(r)}},this.logger);const t=performance.now();try{return await d.pFrameGetColumnSpec(this.frame,r)}catch(n){throw new a.PFrameError(`PFrame ${this.id} getColumnSpec request ${e} failed, columnId: ${JSON.stringify(r)}, error:
10
- ${a.ensureError(n).message}`)}finally{const n=performance.now();(i=this.logger)==null||i.call(this,"info",`PFrame ${this.id} getColumnSpec request ${e} took ${f(Math.round(n-t))}`)}}async listColumns(){var t;const r=m.ulid();l([`${this.id}`,`${r}.json`],{timeStamp:Date.now(),requestType:"listColumns"},this.logger);const e=performance.now();try{return await d.pFrameListColumns(this.frame)}catch(i){throw new a.PFrameError(`PFrame ${this.id} listColumns request ${r} failed, error:
11
- ${a.ensureError(i).message}`)}finally{const i=performance.now();(t=this.logger)==null||t.call(this,"info",`PFrame ${this.id} listColumns request ${r} took ${f(Math.round(i-e))}`)}}createTable(r){var n;const e=m.ulid(),t={timeStamp:Date.now(),requestType:"createTable",requestData:V(r)};l([`${this.id}`,`${e}.json`],t,this.logger),l([`${this.id}`,`${e}`,`${e}.json`],t,this.logger);const i=performance.now();try{const u=d.pFrameCreateTable(this.frame,e,r);return new y(this,e,u)}catch(u){throw new a.PFrameError(`PFrame ${this.id} createTable request ${e} failed, request: ${JSON.stringify(r)}, error:
12
- ${a.ensureError(u).message}`)}finally{const u=performance.now();(n=this.logger)==null||n.call(this,"info",`PFrame ${this.id} createTable request ${e} took ${f(Math.round(u-i))}`)}}async getUniqueValues(r,e){var n,u,o;const t=m.ulid();l([`${this.id}`,`${t}.json`],{timeStamp:Date.now(),requestType:"getUniqueValues",requestData:_(r)},this.logger),(n=this.logger)==null||n.call(this,"info",`PFrame ${this.id} getUniqueValues request ${t} started`);const i=performance.now();try{return(u=e==null?void 0:e.signal)==null||u.throwIfAborted(),await d.pFrameGetUniqueValues(this.frame,t,r,e==null?void 0:e.signal)}catch(h){throw a.isAbortError(h)?new a.AbortError(`PFrame ${this.id} getUniqueValues request ${t} cancelled`):new a.PFrameError(`PFrame ${this.id} getUniqueValues request ${t} failed, request: ${JSON.stringify(r)}, error:
13
- ${a.ensureError(h).message}`)}finally{const h=performance.now();(o=this.logger)==null||o.call(this,"info",`PFrame ${this.id} getUniqueValues request ${t} finished, took ${f(Math.round(h-i))}`)}}};class y{constructor(r,e,t){var i,n;this.frame=r,this.id=e,this.table=t,(n=(i=this.frame).logger)==null||n.call(i,"info",`PTable ${this.id} created`)}getSpec(){const r=m.ulid();l([`${this.frame.id}`,`${this.id}`,`${r}.json`],{timeStamp:Date.now(),requestType:"getSpec"},this.frame.logger);try{return d.pTableGetSpec(this.table)}catch(e){throw new a.PFrameError(`PTable ${this.id} getSpec request ${r} failed, error:
14
- ${a.ensureError(e).message}`)}}getColumnIndices(r){const e=m.ulid();l([`${this.frame.id}`,`${this.id}`,`${e}.json`],{timeStamp:Date.now(),requestType:"getColumnIndices",requestData:{columnIds:r.map(b)}},this.frame.logger);try{return d.pTableGetColumnIndices(this.table,r)}catch(t){throw new a.PFrameError(`PTable ${this.id} getColumnIndices request ${e} failed, columnIds: ${JSON.stringify(r)}, error:
15
- ${a.ensureError(t).message}`)}}async getFootprint(r){var i,n,u,o,h;const e=m.ulid();l([`${this.frame.id}`,`${this.id}`,`${e}.json`],{timeStamp:Date.now(),requestType:"getFootprint"},this.frame.logger),(n=(i=this.frame).logger)==null||n.call(i,"info",`PTable ${this.id} getFootprint request ${e} started`);const t=performance.now();try{return(u=r==null?void 0:r.signal)==null||u.throwIfAborted(),await d.pTableGetFootprint(this.table,(r==null?void 0:r.withPredecessors)??!1,r==null?void 0:r.signal)}catch(c){throw a.isAbortError(c)?new a.AbortError(`PTable ${this.id} getFootprint request ${e} cancelled`):new a.PFrameError(`PTable ${this.id} getFootprint request ${e} failed, error:
16
- ${a.ensureError(c).message}`)}finally{const c=performance.now();(h=(o=this.frame).logger)==null||h.call(o,"info",`PTable ${this.id} getFootprint request ${e} finished, took ${f(Math.round(c-t))}`)}}async getShape(r){var i,n,u,o,h;const e=m.ulid();l([`${this.frame.id}`,`${this.id}`,`${e}.json`],{timeStamp:Date.now(),requestType:"getShape"},this.frame.logger),(n=(i=this.frame).logger)==null||n.call(i,"info",`PTable ${this.id} getShape request ${e} started`);const t=performance.now();try{return(u=r==null?void 0:r.signal)==null||u.throwIfAborted(),await d.pTableGetShape(this.table,r==null?void 0:r.signal)}catch(c){throw a.isAbortError(c)?new a.AbortError(`PTable ${this.id} getShape request ${e} cancelled`):new a.PFrameError(`PTable ${this.id} getShape request ${e} failed, error:
17
- ${a.ensureError(c).message}`)}finally{const c=performance.now();(h=(o=this.frame).logger)==null||h.call(o,"info",`PTable ${this.id} getShape request ${e} finished, took ${f(Math.round(c-t))}`)}}async getData(r,e){var u,o,h,c,T;const t=m.ulid();l([`${this.frame.id}`,`${this.id}`,`${t}.json`],{timeStamp:Date.now(),requestType:"getData",requestData:{columnIndices:r,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 ${t} started`);let i=0;const n=performance.now();try{(h=e==null?void 0:e.signal)==null||h.throwIfAborted();const g=await d.pTableGetData(this.table,t,r,e==null?void 0:e.range,e==null?void 0:e.signal);return i=g[0].data.length,g}catch(g){throw a.isAbortError(g)?new a.AbortError(`PTable ${this.id} getData request ${t} cancelled`):new a.PFrameError(`PTable ${this.id} getData request ${t} failed, columnIndices: ${JSON.stringify(r)}, range: ${e!=null&&e.range?JSON.stringify(e.range):void 0}, error:
18
- ${a.ensureError(g).message}`)}finally{const g=performance.now();(T=(c=this.frame).logger)==null||T.call(c,"info",`PTable ${this.id} getData request ${t} finished, took ${f(Math.round(g-n))} (${i} rows)`)}}filter(r){var n,u;const e=m.ulid(),t={timeStamp:Date.now(),table:this.id,requestType:"filter",requestData:{filters:r.map(D)}};l([`${this.frame.id}`,`${e}.json`],t,this.frame.logger),l([`${this.frame.id}`,`${e}`,`${e}.json`],t,this.frame.logger);const i=performance.now();try{const o=d.pTableFilter(this.table,e,r);return new y(this.frame,e,o)}catch(o){throw new a.PFrameError(`PTable ${this.id} filter request ${e} failed, request: ${JSON.stringify(r)}, error:
19
- ${a.ensureError(o).message}`)}finally{const o=performance.now();(u=(n=this.frame).logger)==null||u.call(n,"info",`PTable ${this.id} filter request ${e} took ${f(Math.round(o-i))}`)}}sort(r){var n,u;const e=m.ulid(),t={timeStamp:Date.now(),table:this.id,requestType:"sort",requestData:r.map(B)};l([`${this.frame.id}`,`${e}.json`],t,this.frame.logger),l([`${this.frame.id}`,`${e}`,`${e}.json`],t,this.frame.logger);const i=performance.now();try{const o=d.pTableSort(this.table,e,r);return new y(this.frame,e,o)}catch(o){throw new a.PFrameError(`PTable ${this.id} sort request ${e} failed, request: ${JSON.stringify(r)}, error:
20
- ${a.ensureError(o).message}`)}finally{const o=performance.now();(u=(n=this.frame).logger)==null||u.call(n,"info",`PTable ${this.id} sort request ${e} took ${f(Math.round(o-i))}`)}}dispose(){var e,t;const r=m.ulid();l([`${this.frame.id}`,`${this.id}`,`${r}.json`],{timeStamp:Date.now(),requestType:"dispose"},this.frame.logger);try{d.pTableDispose(this.table),(t=(e=this.frame).logger)==null||t.call(e,"info",`PTable ${this.id} disposed`)}catch(i){throw new a.PFrameError(`PTable ${this.id} dispose request ${r} failed, error:
21
- ${a.ensureError(i).message}`)}}[Symbol.dispose](){this.dispose()}}const G=x;exports.PFrame=G;
1
+ "use strict";var I=Object.defineProperty;var j=(a,r,e)=>r in a?I(a,r,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[r]=e;var P=(a,r,e)=>j(a,typeof r!="symbol"?r+"":r,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("humanize-duration"),m=require("ulid"),s=require("@milaboratories/pl-model-common"),M=require("node:module"),q=require("node:path"),A=require("node:url"),U=require("@mapbox/node-pre-gyp"),R=require("node:crypto"),p=require("node:fs"),S=require("node:stream");var F=typeof document<"u"?document.currentScript:null;const E=typeof document>"u"?require("url").pathToFileURL(__filename).href:F&&F.tagName.toUpperCase()==="SCRIPT"&&F.src||new URL("index.js",document.baseURI).href,J=q.dirname(A.fileURLToPath(E)),N=M.createRequire(E),{find:O}=U,d=N(O(q.resolve(J,"../package.json")));async function C(a){try{return await p.promises.access(a),!0}catch{return!1}}async function k(a){await C(a)||await p.promises.mkdir(a,{recursive:!0})}async function v(a,r){const e=`${a}.tmp`;await C(e)&&await p.promises.rm(e,{recursive:!0});const t=typeof r=="string"?Buffer.from(r,"utf8"):r,i=S.Readable.from(t),n=p.createWriteStream(e,{flags:"wx"});await S.Readable.toWeb(i).pipeTo(S.Writable.toWeb(n)),await p.promises.rename(e,a)}function $(a){return R.createHash("sha256").update(a).digest("hex")}function b(a){return a.type==="column"?{...a,id:$(a.id)}:a}function D(a){return{...a,column:b(a.column)}}function _(a){return{...a,columnId:$(a.columnId),filters:a.filters.map(D)}}function B(a){return{...a,column:b(a.column)}}function w(a){const r=a.type;switch(r){case"column":return{...a,columnId:$(a.columnId)};case"slicedColumn":return{...a,columnId:$(a.columnId),newId:$(a.newId)};case"inlineColumn":return{...a,newId:$(a.newId)};case"inner":return{...a,entries:a.entries.map(w)};case"full":return{...a,entries:a.entries.map(w)};case"outer":return{...a,primary:w(a.primary),secondary:a.secondary.map(w)};default:throw new Error(`Unsupported join entry type: ${r}`)}}function V(a){return{...a,src:w(a.src),filters:a.filters.map(D)}}async function l(a,r,e){if(process.env.MI_DUMP_PFRAMES_RS)try{const t=a.map(u=>encodeURIComponent(u)),i=q.join(process.env.MI_DUMP_PFRAMES_RS,...t.slice(0,-1));await k(i);const n=q.join(process.env.MI_DUMP_PFRAMES_RS,...t),o=ArrayBuffer.isView(r)?r:JSON.stringify(r,null,2);await v(n,o)}catch(t){e==null||e("warn",`error while dumping PFrames data: ${t}`)}}let x=class{constructor(r,e){P(this,"id",m.ulid());P(this,"frame");var t;this.logger=e,l([`${this.id}`,`${this.id}.json`],{timeStamp:Date.now(),requestType:"create"},this.logger);try{this.frame=d.pFrameCreate(r,e),(t=this.logger)==null||t.call(this,"info",`PFrame ${this.id} created`)}catch(i){throw new s.PFrameError(`PFrame ${this.id} creation failed, logger: ${e==null?void 0:e.toString()}, error:
2
+ ${s.ensureError(i).message}`)}}static async pprofDump(){try{return await d.pprofDump()}catch(r){throw new s.PFrameError(`PFrame pprofDump failed, error:
3
+ ${s.ensureError(r).message}`)}}addColumnSpec(r,e){const t=m.ulid();l([`${this.id}`,`${t}.json`],{timeStamp:Date.now(),requestType:"addColumnSpec",requestData:{columnId:$(r),columnSpec:e}},this.logger),l([`${this.id}`,"data",`${$(r)}.spec`],{...e},this.logger);try{return d.pFrameAddColumnSpec(this.frame,r,e)}catch(i){throw new s.PFrameError(`PFrame ${this.id} addColumnSpec request ${t} failed, columnId: ${JSON.stringify(r)}, columnSpec: ${JSON.stringify(e)}, error:
4
+ ${s.ensureError(i).message}`)}}setDataSource(r){const e=m.ulid();l([`${this.id}`,`${e}.json`],{timeStamp:Date.now(),requestType:"setDataSource"},this.logger);const t={preloadBlob:async i=>{var u,h;const n=m.ulid();l([`${this.id}`,`${n}.json`],{timeStamp:Date.now(),requestType:"preloadBlob",requestData:{blobIds:i}},this.logger),(u=this.logger)==null||u.call(this,"info",`PFrame ${this.id} preloadBlob started, blobIds: ${JSON.stringify(i)}`);const o=performance.now();try{return await r.preloadBlob(i)}finally{const c=performance.now();(h=this.logger)==null||h.call(this,"info",`PFrame ${this.id} preloadBlob finished, took ${f(Math.round(c-o))} (${i.length} blobs)`)}},resolveBlobContent:async i=>{var u;const n=m.ulid();l([`${this.id}`,`${n}.json`],{timeStamp:Date.now(),requestType:"resolveBlobContent",requestData:{blobId:i}},this.logger);const o=await r.resolveBlobContent(i);return(u=this.logger)==null||u.call(this,"info",`PFrame ${this.id} resolved blob ${i}`),l([`${this.id}`,"data",`${i}`],o,this.logger),o}};try{return d.pFrameSetDataSource(this.frame,t)}catch(i){throw new s.PFrameError(`PFrame ${this.id} setDataSource request ${e} failed, dataSource: ${r.toString()}, error:
5
+ ${s.ensureError(i).message}`)}}setColumnData(r,e,t){var n;const i=m.ulid();l([`${this.id}`,`${i}.json`],{timeStamp:Date.now(),requestType:"setColumnData",requestData:{columnId:$(r),dataInfo:e}},this.logger),l([`${this.id}`,"data",`${$(r)}.datainfo`],{...e},this.logger);try{return(n=t==null?void 0:t.signal)==null||n.throwIfAborted(),d.pFrameSetColumnData(this.frame,r,e,t==null?void 0:t.signal)}catch(o){throw new s.PFrameError(`PFrame ${this.id} setColumnData request ${i} failed, columnId: ${JSON.stringify(r)}, dataInfo: ${JSON.stringify(e)}, error:
6
+ ${s.ensureError(o).message}`)}}dispose(){var e;const r=m.ulid();l([`${this.id}`,`${r}.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(t){throw new s.PFrameError(`PFrame ${this.id} dispose request ${r} failed, error:
7
+ ${s.ensureError(t).message}`)}}[Symbol.dispose](){this.dispose()}async findColumns(r){var i;const e=m.ulid();l([`${this.id}`,`${e}.json`],{timeStamp:Date.now(),requestType:"findColumns",requestData:r},this.logger);const t=performance.now();try{return await d.pFrameFindColumns(this.frame,r)}catch(n){throw new s.PFrameError(`PFrame ${this.id} findColumns request ${e} failed, request: ${JSON.stringify(r)}, error:
8
+ ${s.ensureError(n).message}`)}finally{const n=performance.now();(i=this.logger)==null||i.call(this,"info",`PFrame ${this.id} findColumns request ${e} took ${f(Math.round(n-t))}`)}}async deleteColumn(r){var i;const e=m.ulid();l([`${this.id}`,`${e}.json`],{timeStamp:Date.now(),requestType:"deleteColumn",requestData:r},this.logger);const t=performance.now();try{return await d.pFrameDeleteColumn(this.frame,r)}catch(n){throw new s.PFrameError(`PFrame ${this.id} deleteColumn request ${e} failed, request: ${JSON.stringify(r)}, error:
9
+ ${s.ensureError(n).message}`)}finally{const n=performance.now();(i=this.logger)==null||i.call(this,"info",`PFrame ${this.id} deleteColumn request ${e} took ${f(Math.round(n-t))}`)}}async getColumnSpec(r){var i;const e=m.ulid();l([`${this.id}`,`${e}.json`],{timeStamp:Date.now(),requestType:"getColumnSpec",requestData:{columnId:$(r)}},this.logger);const t=performance.now();try{return await d.pFrameGetColumnSpec(this.frame,r)}catch(n){throw new s.PFrameError(`PFrame ${this.id} getColumnSpec request ${e} failed, columnId: ${JSON.stringify(r)}, error:
10
+ ${s.ensureError(n).message}`)}finally{const n=performance.now();(i=this.logger)==null||i.call(this,"info",`PFrame ${this.id} getColumnSpec request ${e} took ${f(Math.round(n-t))}`)}}async listColumns(){var t;const r=m.ulid();l([`${this.id}`,`${r}.json`],{timeStamp:Date.now(),requestType:"listColumns"},this.logger);const e=performance.now();try{return await d.pFrameListColumns(this.frame)}catch(i){throw new s.PFrameError(`PFrame ${this.id} listColumns request ${r} failed, error:
11
+ ${s.ensureError(i).message}`)}finally{const i=performance.now();(t=this.logger)==null||t.call(this,"info",`PFrame ${this.id} listColumns request ${r} took ${f(Math.round(i-e))}`)}}createTable(r){var n;const e=m.ulid(),t={timeStamp:Date.now(),requestType:"createTable",requestData:V(r)};l([`${this.id}`,`${e}.json`],t,this.logger),l([`${this.id}`,`${e}`,`${e}.json`],t,this.logger);const i=performance.now();try{const o=d.pFrameCreateTable(this.frame,e,r);return new y(this,e,o)}catch(o){throw new s.PFrameError(`PFrame ${this.id} createTable request ${e} failed, request: ${JSON.stringify(r)}, error:
12
+ ${s.ensureError(o).message}`)}finally{const o=performance.now();(n=this.logger)==null||n.call(this,"info",`PFrame ${this.id} createTable request ${e} took ${f(Math.round(o-i))}`)}}async getUniqueValues(r,e){var n,o,u;const t=m.ulid();l([`${this.id}`,`${t}.json`],{timeStamp:Date.now(),requestType:"getUniqueValues",requestData:_(r)},this.logger),(n=this.logger)==null||n.call(this,"info",`PFrame ${this.id} getUniqueValues request ${t} started`);const i=performance.now();try{return(o=e==null?void 0:e.signal)==null||o.throwIfAborted(),await d.pFrameGetUniqueValues(this.frame,t,r,e==null?void 0:e.signal)}catch(h){throw s.isAbortError(h)?new s.AbortError(`PFrame ${this.id} getUniqueValues request ${t} cancelled`):new s.PFrameError(`PFrame ${this.id} getUniqueValues request ${t} failed, request: ${JSON.stringify(r)}, error:
13
+ ${s.ensureError(h).message}`)}finally{const h=performance.now();(u=this.logger)==null||u.call(this,"info",`PFrame ${this.id} getUniqueValues request ${t} finished, took ${f(Math.round(h-i))}`)}}};class y{constructor(r,e,t){var i,n;this.frame=r,this.id=e,this.table=t,(n=(i=this.frame).logger)==null||n.call(i,"info",`PTable ${this.id} created`)}getSpec(){const r=m.ulid();l([`${this.frame.id}`,`${this.id}`,`${r}.json`],{timeStamp:Date.now(),requestType:"getSpec"},this.frame.logger);try{return d.pTableGetSpec(this.table)}catch(e){throw new s.PFrameError(`PTable ${this.id} getSpec request ${r} failed, error:
14
+ ${s.ensureError(e).message}`)}}getColumnIndices(r){const e=m.ulid();l([`${this.frame.id}`,`${this.id}`,`${e}.json`],{timeStamp:Date.now(),requestType:"getColumnIndices",requestData:{columnIds:r.map(b)}},this.frame.logger);try{return d.pTableGetColumnIndices(this.table,r)}catch(t){throw new s.PFrameError(`PTable ${this.id} getColumnIndices request ${e} failed, columnIds: ${JSON.stringify(r)}, error:
15
+ ${s.ensureError(t).message}`)}}async getFootprint(r){var i,n,o,u,h;const e=m.ulid();l([`${this.frame.id}`,`${this.id}`,`${e}.json`],{timeStamp:Date.now(),requestType:"getFootprint"},this.frame.logger),(n=(i=this.frame).logger)==null||n.call(i,"info",`PTable ${this.id} getFootprint request ${e} started`);const t=performance.now();try{return(o=r==null?void 0:r.signal)==null||o.throwIfAborted(),await d.pTableGetFootprint(this.table,(r==null?void 0:r.withPredecessors)??!1,r==null?void 0:r.signal)}catch(c){throw s.isAbortError(c)?new s.AbortError(`PTable ${this.id} getFootprint request ${e} cancelled`):new s.PFrameError(`PTable ${this.id} getFootprint request ${e} failed, error:
16
+ ${s.ensureError(c).message}`)}finally{const c=performance.now();(h=(u=this.frame).logger)==null||h.call(u,"info",`PTable ${this.id} getFootprint request ${e} finished, took ${f(Math.round(c-t))}`)}}async getShape(r){var i,n,o,u,h;const e=m.ulid();l([`${this.frame.id}`,`${this.id}`,`${e}.json`],{timeStamp:Date.now(),requestType:"getShape"},this.frame.logger),(n=(i=this.frame).logger)==null||n.call(i,"info",`PTable ${this.id} getShape request ${e} started`);const t=performance.now();try{return(o=r==null?void 0:r.signal)==null||o.throwIfAborted(),await d.pTableGetShape(this.table,r==null?void 0:r.signal)}catch(c){throw s.isAbortError(c)?new s.AbortError(`PTable ${this.id} getShape request ${e} cancelled`):new s.PFrameError(`PTable ${this.id} getShape request ${e} failed, error:
17
+ ${s.ensureError(c).message}`)}finally{const c=performance.now();(h=(u=this.frame).logger)==null||h.call(u,"info",`PTable ${this.id} getShape request ${e} finished, took ${f(Math.round(c-t))}`)}}async getData(r,e){var o,u,h,c,T;const t=m.ulid();l([`${this.frame.id}`,`${this.id}`,`${t}.json`],{timeStamp:Date.now(),requestType:"getData",requestData:{columnIndices:r,range:(e==null?void 0:e.range)??null}},this.frame.logger),(u=(o=this.frame).logger)==null||u.call(o,"info",`PTable ${this.id} getData request ${t} started`);let i=0;const n=performance.now();try{(h=e==null?void 0:e.signal)==null||h.throwIfAborted();const g=await d.pTableGetData(this.table,t,r,e==null?void 0:e.range,e==null?void 0:e.signal);return i=g[0].data.length,g}catch(g){throw s.isAbortError(g)?new s.AbortError(`PTable ${this.id} getData request ${t} cancelled`):new s.PFrameError(`PTable ${this.id} getData request ${t} failed, columnIndices: ${JSON.stringify(r)}, range: ${e!=null&&e.range?JSON.stringify(e.range):void 0}, error:
18
+ ${s.ensureError(g).message}`)}finally{const g=performance.now();(T=(c=this.frame).logger)==null||T.call(c,"info",`PTable ${this.id} getData request ${t} finished, took ${f(Math.round(g-n))} (${i} rows)`)}}filter(r){var n,o;const e=m.ulid(),t={timeStamp:Date.now(),table:this.id,requestType:"filter",requestData:{filters:r.map(D)}};l([`${this.frame.id}`,`${e}.json`],t,this.frame.logger),l([`${this.frame.id}`,`${e}`,`${e}.json`],t,this.frame.logger);const i=performance.now();try{const u=d.pTableFilter(this.table,e,r);return new y(this.frame,e,u)}catch(u){throw new s.PFrameError(`PTable ${this.id} filter request ${e} failed, request: ${JSON.stringify(r)}, error:
19
+ ${s.ensureError(u).message}`)}finally{const u=performance.now();(o=(n=this.frame).logger)==null||o.call(n,"info",`PTable ${this.id} filter request ${e} took ${f(Math.round(u-i))}`)}}sort(r){var n,o;const e=m.ulid(),t={timeStamp:Date.now(),table:this.id,requestType:"sort",requestData:r.map(B)};l([`${this.frame.id}`,`${e}.json`],t,this.frame.logger),l([`${this.frame.id}`,`${e}`,`${e}.json`],t,this.frame.logger);const i=performance.now();try{const u=d.pTableSort(this.table,e,r);return new y(this.frame,e,u)}catch(u){throw new s.PFrameError(`PTable ${this.id} sort request ${e} failed, request: ${JSON.stringify(r)}, error:
20
+ ${s.ensureError(u).message}`)}finally{const u=performance.now();(o=(n=this.frame).logger)==null||o.call(n,"info",`PTable ${this.id} sort request ${e} took ${f(Math.round(u-i))}`)}}dispose(){var e,t;const r=m.ulid();l([`${this.frame.id}`,`${this.id}`,`${r}.json`],{timeStamp:Date.now(),requestType:"dispose"},this.frame.logger);try{d.pTableDispose(this.table),(t=(e=this.frame).logger)==null||t.call(e,"info",`PTable ${this.id} disposed`)}catch(i){throw new s.PFrameError(`PTable ${this.id} dispose request ${r} failed, error:
21
+ ${s.ensureError(i).message}`)}}[Symbol.dispose](){this.dispose()}}const G=x;exports.PFrame=G;
22
22
  //# 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 AbortError,\n DataInfo,\n PColumnInfo,\n PColumnSpec,\n PFrameError,\n PObjectId,\n PTableColumnId,\n PTableColumnSpec,\n PTableRecordFilter,\n PTableShape,\n PTableSorting,\n PTableVector,\n TableRange,\n UniqueValuesRequest,\n UniqueValuesResponse,\n ensureError,\n isAbortError\n} from '@milaboratories/pl-model-common';\nimport type { PFrameInternal } from '@milaboratories/pl-model-middle-layer';\nimport type {\n FrameId,\n TableId,\n NodeFrameSymbol,\n NodeTableSymbol\n} from './addon-def';\nimport { AddonSymbol } from './addon';\nimport {\n dump,\n hashColumnId,\n hashTableColumnId,\n hashFilterColumnId,\n hashUniqueValuesRequestColumnId,\n hashSortingColumnId,\n hashCreateTableRequestColumnId\n} from './dump';\n\nexport class PFrame implements PFrameInternal.PFrameV8 {\n public readonly id: FrameId = ulid() as FrameId;\n private readonly frame: NodeFrameSymbol;\n\n static async pprofDump(): Promise<Uint8Array> {\n try {\n return await AddonSymbol.pprofDump();\n } catch (err: unknown) {\n throw new PFrameError(\n `PFrame pprofDump failed, ` + `error:\\n` + `${ensureError(err).message}`\n );\n }\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 PFrameError(\n `PFrame ${this.id} creation failed, ` +\n `logger: ${logger?.toString()}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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 PFrameError(\n `PFrame ${this.id} addColumnSpec request ${requestId} failed, ` +\n `columnId: ${JSON.stringify(columnId)}, ` +\n `columnSpec: ${JSON.stringify(columnSpec)}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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 PFrameError(\n `PFrame ${this.id} setDataSource request ${requestId} failed, ` +\n `dataSource: ${dataSource.toString()}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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 PFrameError(\n `PFrame ${this.id} setColumnData request ${requestId} failed, ` +\n `columnId: ${JSON.stringify(columnId)}, ` +\n `dataInfo: ${JSON.stringify(dataInfo)}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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 PFrameError(\n `PFrame ${this.id} dispose request ${requestId} failed, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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 PFrameError(\n `PFrame ${this.id} findColumns request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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 PFrameError(\n `PFrame ${this.id} deleteColumn request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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 PFrameError(\n `PFrame ${this.id} getColumnSpec request ${requestId} failed, ` +\n `columnId: ${JSON.stringify(columnId)}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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 PFrameError(\n `PFrame ${this.id} listColumns request ${requestId} failed, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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.PTableV6 {\n const requestId = ulid() as TableId;\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 PFrameError(\n `PFrame ${this.id} createTable request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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() as TableId;\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 if (isAbortError(err)) {\n throw new AbortError(\n `PFrame ${this.id} getUniqueValues request ${requestId} cancelled`\n );\n }\n throw new PFrameError(\n `PFrame ${this.id} getUniqueValues request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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.PTableV6 {\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 PFrameError(\n `PTable ${this.id} getSpec request ${requestId} failed, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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 PFrameError(\n `PTable ${this.id} getColumnIndices request ${requestId} failed, ` +\n `columnIds: ${JSON.stringify(columnIds)}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\n );\n }\n }\n\n async getFootprint(ops?: {\n withPredecessors?: boolean;\n signal?: AbortSignal;\n }): Promise<number> {\n const requestId = ulid();\n dump(\n [`${this.frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getFootprint'\n },\n this.frame.logger\n );\n\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} getFootprint request ${requestId} started`\n );\n const t0 = performance.now();\n try {\n ops?.signal?.throwIfAborted();\n return await AddonSymbol.pTableGetFootprint(\n this.table,\n ops?.withPredecessors ?? false,\n ops?.signal\n );\n } catch (err: unknown) {\n if (isAbortError(err)) {\n throw new AbortError(\n `PTable ${this.id} getFootprint request ${requestId} cancelled`\n );\n }\n throw new PFrameError(\n `PTable ${this.id} getFootprint request ${requestId} failed, ` +\n `error:\\n` +\n `${ensureError(err).message}`\n );\n } finally {\n const t1 = performance.now();\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} getFootprint request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))}`\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 ops?.signal?.throwIfAborted();\n return await AddonSymbol.pTableGetShape(this.table, ops?.signal);\n } catch (err: unknown) {\n if (isAbortError(err)) {\n throw new AbortError(\n `PTable ${this.id} getShape request ${requestId} cancelled`\n );\n }\n throw new PFrameError(\n `PTable ${this.id} getShape request ${requestId} failed, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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() as TableId;\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 if (isAbortError(err)) {\n throw new AbortError(\n `PTable ${this.id} getData request ${requestId} cancelled`\n );\n }\n throw new PFrameError(\n `PTable ${this.id} getData request ${requestId} failed, ` +\n `columnIndices: ${JSON.stringify(columnIndices)}, ` +\n `range: ${ops?.range ? JSON.stringify(ops.range) : undefined}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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.PTableV6 {\n const requestId = ulid() as TableId;\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 PFrameError(\n `PTable ${this.id} filter request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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.PTableV6 {\n const requestId = ulid() as TableId;\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 PFrameError(\n `PTable ${this.id} sort request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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 PFrameError(\n `PTable ${this.id} dispose request ${requestId} failed, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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.PFrameV8;\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","PFrameError","ensureError","columnSpec","requestId","dataSource","wrappedDataSource","blobIds","t0","t1","_b","humanizeDuration","blobId","blob","dataInfo","dumpData","boxed","PTable","ops","isAbortError","AbortError","_c","frame","id","table","columnIds","_e","_d","columnIndices","rowCount","result","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 AbortError,\n DataInfo,\n PColumnInfo,\n PColumnSpec,\n PFrameError,\n PObjectId,\n PTableColumnId,\n PTableColumnSpec,\n PTableRecordFilter,\n PTableShape,\n PTableSorting,\n PTableVector,\n TableRange,\n UniqueValuesRequest,\n UniqueValuesResponse,\n ensureError,\n isAbortError\n} from '@milaboratories/pl-model-common';\nimport type { PFrameInternal } from '@milaboratories/pl-model-middle-layer';\nimport type {\n FrameId,\n TableId,\n NodeFrameSymbol,\n NodeTableSymbol\n} from './addon-def';\nimport { AddonSymbol } from './addon';\nimport {\n dump,\n hashColumnId,\n hashTableColumnId,\n hashFilterColumnId,\n hashUniqueValuesRequestColumnId,\n hashSortingColumnId,\n hashCreateTableRequestColumnId\n} from './dump';\n\nexport class PFrame implements PFrameInternal.PFrameV9 {\n public readonly id: FrameId = ulid() as FrameId;\n private readonly frame: NodeFrameSymbol;\n\n static async pprofDump(): Promise<Uint8Array> {\n try {\n return await AddonSymbol.pprofDump();\n } catch (err: unknown) {\n throw new PFrameError(\n `PFrame pprofDump failed, ` + `error:\\n` + `${ensureError(err).message}`\n );\n }\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 PFrameError(\n `PFrame ${this.id} creation failed, ` +\n `logger: ${logger?.toString()}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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 PFrameError(\n `PFrame ${this.id} addColumnSpec request ${requestId} failed, ` +\n `columnId: ${JSON.stringify(columnId)}, ` +\n `columnSpec: ${JSON.stringify(columnSpec)}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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 PFrameError(\n `PFrame ${this.id} setDataSource request ${requestId} failed, ` +\n `dataSource: ${dataSource.toString()}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\n );\n }\n }\n\n setColumnData(\n columnId: PObjectId,\n dataInfo: DataInfo<PFrameInternal.PFrameBlobId>,\n ops?: {\n signal?: AbortSignal;\n }\n ): Promise<void> {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'setColumnData',\n requestData: {\n columnId: hashColumnId(columnId),\n dataInfo\n }\n },\n this.logger\n );\n\n dump(\n [`${this.id}`, `data`, `${hashColumnId(columnId)}.datainfo`],\n {\n ...dataInfo\n },\n this.logger\n );\n\n try {\n ops?.signal?.throwIfAborted();\n return AddonSymbol.pFrameSetColumnData(\n this.frame,\n columnId,\n dataInfo,\n ops?.signal\n );\n } catch (err: unknown) {\n throw new PFrameError(\n `PFrame ${this.id} setColumnData request ${requestId} failed, ` +\n `columnId: ${JSON.stringify(columnId)}, ` +\n `dataInfo: ${JSON.stringify(dataInfo)}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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 PFrameError(\n `PFrame ${this.id} dispose request ${requestId} failed, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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 PFrameError(\n `PFrame ${this.id} findColumns request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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 PFrameError(\n `PFrame ${this.id} deleteColumn request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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 PFrameError(\n `PFrame ${this.id} getColumnSpec request ${requestId} failed, ` +\n `columnId: ${JSON.stringify(columnId)}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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 PFrameError(\n `PFrame ${this.id} listColumns request ${requestId} failed, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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.PTableV6 {\n const requestId = ulid() as TableId;\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 PFrameError(\n `PFrame ${this.id} createTable request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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() as TableId;\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 if (isAbortError(err)) {\n throw new AbortError(\n `PFrame ${this.id} getUniqueValues request ${requestId} cancelled`\n );\n }\n throw new PFrameError(\n `PFrame ${this.id} getUniqueValues request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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.PTableV6 {\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 PFrameError(\n `PTable ${this.id} getSpec request ${requestId} failed, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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 PFrameError(\n `PTable ${this.id} getColumnIndices request ${requestId} failed, ` +\n `columnIds: ${JSON.stringify(columnIds)}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\n );\n }\n }\n\n async getFootprint(ops?: {\n withPredecessors?: boolean;\n signal?: AbortSignal;\n }): Promise<number> {\n const requestId = ulid();\n dump(\n [`${this.frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getFootprint'\n },\n this.frame.logger\n );\n\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} getFootprint request ${requestId} started`\n );\n const t0 = performance.now();\n try {\n ops?.signal?.throwIfAborted();\n return await AddonSymbol.pTableGetFootprint(\n this.table,\n ops?.withPredecessors ?? false,\n ops?.signal\n );\n } catch (err: unknown) {\n if (isAbortError(err)) {\n throw new AbortError(\n `PTable ${this.id} getFootprint request ${requestId} cancelled`\n );\n }\n throw new PFrameError(\n `PTable ${this.id} getFootprint request ${requestId} failed, ` +\n `error:\\n` +\n `${ensureError(err).message}`\n );\n } finally {\n const t1 = performance.now();\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} getFootprint request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))}`\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 ops?.signal?.throwIfAborted();\n return await AddonSymbol.pTableGetShape(this.table, ops?.signal);\n } catch (err: unknown) {\n if (isAbortError(err)) {\n throw new AbortError(\n `PTable ${this.id} getShape request ${requestId} cancelled`\n );\n }\n throw new PFrameError(\n `PTable ${this.id} getShape request ${requestId} failed, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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() as TableId;\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 if (isAbortError(err)) {\n throw new AbortError(\n `PTable ${this.id} getData request ${requestId} cancelled`\n );\n }\n throw new PFrameError(\n `PTable ${this.id} getData request ${requestId} failed, ` +\n `columnIndices: ${JSON.stringify(columnIndices)}, ` +\n `range: ${ops?.range ? JSON.stringify(ops.range) : undefined}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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.PTableV6 {\n const requestId = ulid() as TableId;\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 PFrameError(\n `PTable ${this.id} filter request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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.PTableV6 {\n const requestId = ulid() as TableId;\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 PFrameError(\n `PTable ${this.id} sort request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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 PFrameError(\n `PTable ${this.id} dispose request ${requestId} failed, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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.PFrameV9;\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","PFrameError","ensureError","columnSpec","requestId","dataSource","wrappedDataSource","blobIds","t0","t1","_b","humanizeDuration","blobId","blob","dataInfo","ops","dumpData","boxed","PTable","isAbortError","AbortError","_c","frame","id","table","columnIds","_e","_d","columnIndices","rowCount","result","PFrame","PFrameImpl"],"mappings":"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"}
@@ -107,13 +107,13 @@ function z(a) {
107
107
  async function m(a, t, e) {
108
108
  if (process.env.MI_DUMP_PFRAMES_RS)
109
109
  try {
110
- const r = a.map((n) => encodeURIComponent(n)), i = C.join(
110
+ const r = a.map((o) => encodeURIComponent(o)), i = C.join(
111
111
  process.env.MI_DUMP_PFRAMES_RS,
112
112
  ...r.slice(0, -1)
113
113
  );
114
114
  await G(i);
115
- const s = C.join(process.env.MI_DUMP_PFRAMES_RS, ...r), o = ArrayBuffer.isView(t) ? t : JSON.stringify(t, null, 2);
116
- await _(s, o);
115
+ const s = C.join(process.env.MI_DUMP_PFRAMES_RS, ...r), n = ArrayBuffer.isView(t) ? t : JSON.stringify(t, null, 2);
116
+ await _(s, n);
117
117
  } catch (r) {
118
118
  e == null || e("warn", `error while dumping PFrames data: ${r}`);
119
119
  }
@@ -191,7 +191,7 @@ ${u(i).message}`
191
191
  );
192
192
  const r = {
193
193
  preloadBlob: async (i) => {
194
- var n, d;
194
+ var o, d;
195
195
  const s = l();
196
196
  m(
197
197
  [`${this.id}`, `${s}.json`],
@@ -203,12 +203,12 @@ ${u(i).message}`
203
203
  }
204
204
  },
205
205
  this.logger
206
- ), (n = this.logger) == null || n.call(
206
+ ), (o = this.logger) == null || o.call(
207
207
  this,
208
208
  "info",
209
209
  `PFrame ${this.id} preloadBlob started, blobIds: ${JSON.stringify(i)}`
210
210
  );
211
- const o = performance.now();
211
+ const n = performance.now();
212
212
  try {
213
213
  return await t.preloadBlob(i);
214
214
  } finally {
@@ -216,12 +216,12 @@ ${u(i).message}`
216
216
  (d = this.logger) == null || d.call(
217
217
  this,
218
218
  "info",
219
- `PFrame ${this.id} preloadBlob finished, took ${$(Math.round(f - o))} (${i.length} blobs)`
219
+ `PFrame ${this.id} preloadBlob finished, took ${$(Math.round(f - n))} (${i.length} blobs)`
220
220
  );
221
221
  }
222
222
  },
223
223
  resolveBlobContent: async (i) => {
224
- var n;
224
+ var o;
225
225
  const s = l();
226
226
  m(
227
227
  [`${this.id}`, `${s}.json`],
@@ -234,8 +234,8 @@ ${u(i).message}`
234
234
  },
235
235
  this.logger
236
236
  );
237
- const o = await t.resolveBlobContent(i);
238
- return (n = this.logger) == null || n.call(this, "info", `PFrame ${this.id} resolved blob ${i}`), m([`${this.id}`, "data", `${i}`], o, this.logger), o;
237
+ const n = await t.resolveBlobContent(i);
238
+ return (o = this.logger) == null || o.call(this, "info", `PFrame ${this.id} resolved blob ${i}`), m([`${this.id}`, "data", `${i}`], n, this.logger), n;
239
239
  }
240
240
  };
241
241
  try {
@@ -247,10 +247,11 @@ ${u(i).message}`
247
247
  );
248
248
  }
249
249
  }
250
- setColumnData(t, e) {
251
- const r = l();
250
+ setColumnData(t, e, r) {
251
+ var s;
252
+ const i = l();
252
253
  m(
253
- [`${this.id}`, `${r}.json`],
254
+ [`${this.id}`, `${i}.json`],
254
255
  {
255
256
  timeStamp: Date.now(),
256
257
  requestType: "setColumnData",
@@ -268,11 +269,16 @@ ${u(i).message}`
268
269
  this.logger
269
270
  );
270
271
  try {
271
- return c.pFrameSetColumnData(this.frame, t, e);
272
- } catch (i) {
272
+ return (s = r == null ? void 0 : r.signal) == null || s.throwIfAborted(), c.pFrameSetColumnData(
273
+ this.frame,
274
+ t,
275
+ e,
276
+ r == null ? void 0 : r.signal
277
+ );
278
+ } catch (n) {
273
279
  throw new h(
274
- `PFrame ${this.id} setColumnData request ${r} failed, columnId: ${JSON.stringify(t)}, dataInfo: ${JSON.stringify(e)}, error:
275
- ${u(i).message}`
280
+ `PFrame ${this.id} setColumnData request ${i} failed, columnId: ${JSON.stringify(t)}, dataInfo: ${JSON.stringify(e)}, error:
281
+ ${u(n).message}`
276
282
  );
277
283
  }
278
284
  }
@@ -430,28 +436,28 @@ ${u(i).message}`
430
436
  );
431
437
  const i = performance.now();
432
438
  try {
433
- const o = c.pFrameCreateTable(
439
+ const n = c.pFrameCreateTable(
434
440
  this.frame,
435
441
  e,
436
442
  t
437
443
  );
438
- return new D(this, e, o);
439
- } catch (o) {
444
+ return new D(this, e, n);
445
+ } catch (n) {
440
446
  throw new h(
441
447
  `PFrame ${this.id} createTable request ${e} failed, request: ${JSON.stringify(t)}, error:
442
- ${u(o).message}`
448
+ ${u(n).message}`
443
449
  );
444
450
  } finally {
445
- const o = performance.now();
451
+ const n = performance.now();
446
452
  (s = this.logger) == null || s.call(
447
453
  this,
448
454
  "info",
449
- `PFrame ${this.id} createTable request ${e} took ${$(Math.round(o - i))}`
455
+ `PFrame ${this.id} createTable request ${e} took ${$(Math.round(n - i))}`
450
456
  );
451
457
  }
452
458
  }
453
459
  async getUniqueValues(t, e) {
454
- var s, o, n;
460
+ var s, n, o;
455
461
  const r = l();
456
462
  m(
457
463
  [`${this.id}`, `${r}.json`],
@@ -468,7 +474,7 @@ ${u(o).message}`
468
474
  );
469
475
  const i = performance.now();
470
476
  try {
471
- return (o = e == null ? void 0 : e.signal) == null || o.throwIfAborted(), await c.pFrameGetUniqueValues(
477
+ return (n = e == null ? void 0 : e.signal) == null || n.throwIfAborted(), await c.pFrameGetUniqueValues(
472
478
  this.frame,
473
479
  r,
474
480
  t,
@@ -483,7 +489,7 @@ ${u(d).message}`
483
489
  );
484
490
  } finally {
485
491
  const d = performance.now();
486
- (n = this.logger) == null || n.call(
492
+ (o = this.logger) == null || o.call(
487
493
  this,
488
494
  "info",
489
495
  `PFrame ${this.id} getUniqueValues request ${r} finished, took ${$(Math.round(d - i))}`
@@ -538,7 +544,7 @@ ${u(r).message}`
538
544
  }
539
545
  }
540
546
  async getFootprint(t) {
541
- var i, s, o, n, d;
547
+ var i, s, n, o, d;
542
548
  const e = l();
543
549
  m(
544
550
  [`${this.frame.id}`, `${this.id}`, `${e}.json`],
@@ -554,7 +560,7 @@ ${u(r).message}`
554
560
  );
555
561
  const r = performance.now();
556
562
  try {
557
- return (o = t == null ? void 0 : t.signal) == null || o.throwIfAborted(), await c.pTableGetFootprint(
563
+ return (n = t == null ? void 0 : t.signal) == null || n.throwIfAborted(), await c.pTableGetFootprint(
558
564
  this.table,
559
565
  (t == null ? void 0 : t.withPredecessors) ?? !1,
560
566
  t == null ? void 0 : t.signal
@@ -568,15 +574,15 @@ ${u(f).message}`
568
574
  );
569
575
  } finally {
570
576
  const f = performance.now();
571
- (d = (n = this.frame).logger) == null || d.call(
572
- n,
577
+ (d = (o = this.frame).logger) == null || d.call(
578
+ o,
573
579
  "info",
574
580
  `PTable ${this.id} getFootprint request ${e} finished, took ${$(Math.round(f - r))}`
575
581
  );
576
582
  }
577
583
  }
578
584
  async getShape(t) {
579
- var i, s, o, n, d;
585
+ var i, s, n, o, d;
580
586
  const e = l();
581
587
  m(
582
588
  [`${this.frame.id}`, `${this.id}`, `${e}.json`],
@@ -592,7 +598,7 @@ ${u(f).message}`
592
598
  );
593
599
  const r = performance.now();
594
600
  try {
595
- return (o = t == null ? void 0 : t.signal) == null || o.throwIfAborted(), await c.pTableGetShape(this.table, t == null ? void 0 : t.signal);
601
+ return (n = t == null ? void 0 : t.signal) == null || n.throwIfAborted(), await c.pTableGetShape(this.table, t == null ? void 0 : t.signal);
596
602
  } catch (f) {
597
603
  throw y(f) ? new S(
598
604
  `PTable ${this.id} getShape request ${e} cancelled`
@@ -602,15 +608,15 @@ ${u(f).message}`
602
608
  );
603
609
  } finally {
604
610
  const f = performance.now();
605
- (d = (n = this.frame).logger) == null || d.call(
606
- n,
611
+ (d = (o = this.frame).logger) == null || d.call(
612
+ o,
607
613
  "info",
608
614
  `PTable ${this.id} getShape request ${e} finished, took ${$(Math.round(f - r))}`
609
615
  );
610
616
  }
611
617
  }
612
618
  async getData(t, e) {
613
- var o, n, d, f, F;
619
+ var n, o, d, f, F;
614
620
  const r = l();
615
621
  m(
616
622
  [`${this.frame.id}`, `${this.id}`, `${r}.json`],
@@ -623,8 +629,8 @@ ${u(f).message}`
623
629
  }
624
630
  },
625
631
  this.frame.logger
626
- ), (n = (o = this.frame).logger) == null || n.call(
627
- o,
632
+ ), (o = (n = this.frame).logger) == null || o.call(
633
+ n,
628
634
  "info",
629
635
  `PTable ${this.id} getData request ${r} started`
630
636
  );
@@ -657,7 +663,7 @@ ${u(w).message}`
657
663
  }
658
664
  }
659
665
  filter(t) {
660
- var s, o;
666
+ var s, n;
661
667
  const e = l(), r = {
662
668
  timeStamp: Date.now(),
663
669
  table: this.id,
@@ -677,24 +683,24 @@ ${u(w).message}`
677
683
  );
678
684
  const i = performance.now();
679
685
  try {
680
- const n = c.pTableFilter(this.table, e, t);
681
- return new D(this.frame, e, n);
682
- } catch (n) {
686
+ const o = c.pTableFilter(this.table, e, t);
687
+ return new D(this.frame, e, o);
688
+ } catch (o) {
683
689
  throw new h(
684
690
  `PTable ${this.id} filter request ${e} failed, request: ${JSON.stringify(t)}, error:
685
- ${u(n).message}`
691
+ ${u(o).message}`
686
692
  );
687
693
  } finally {
688
- const n = performance.now();
689
- (o = (s = this.frame).logger) == null || o.call(
694
+ const o = performance.now();
695
+ (n = (s = this.frame).logger) == null || n.call(
690
696
  s,
691
697
  "info",
692
- `PTable ${this.id} filter request ${e} took ${$(Math.round(n - i))}`
698
+ `PTable ${this.id} filter request ${e} took ${$(Math.round(o - i))}`
693
699
  );
694
700
  }
695
701
  }
696
702
  sort(t) {
697
- var s, o;
703
+ var s, n;
698
704
  const e = l(), r = {
699
705
  timeStamp: Date.now(),
700
706
  table: this.id,
@@ -712,19 +718,19 @@ ${u(n).message}`
712
718
  );
713
719
  const i = performance.now();
714
720
  try {
715
- const n = c.pTableSort(this.table, e, t);
716
- return new D(this.frame, e, n);
717
- } catch (n) {
721
+ const o = c.pTableSort(this.table, e, t);
722
+ return new D(this.frame, e, o);
723
+ } catch (o) {
718
724
  throw new h(
719
725
  `PTable ${this.id} sort request ${e} failed, request: ${JSON.stringify(t)}, error:
720
- ${u(n).message}`
726
+ ${u(o).message}`
721
727
  );
722
728
  } finally {
723
- const n = performance.now();
724
- (o = (s = this.frame).logger) == null || o.call(
729
+ const o = performance.now();
730
+ (n = (s = this.frame).logger) == null || n.call(
725
731
  s,
726
732
  "info",
727
- `PTable ${this.id} sort request ${e} took ${$(Math.round(n - i))}`
733
+ `PTable ${this.id} sort request ${e} took ${$(Math.round(o - i))}`
728
734
  );
729
735
  }
730
736
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","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 AbortError,\n DataInfo,\n PColumnInfo,\n PColumnSpec,\n PFrameError,\n PObjectId,\n PTableColumnId,\n PTableColumnSpec,\n PTableRecordFilter,\n PTableShape,\n PTableSorting,\n PTableVector,\n TableRange,\n UniqueValuesRequest,\n UniqueValuesResponse,\n ensureError,\n isAbortError\n} from '@milaboratories/pl-model-common';\nimport type { PFrameInternal } from '@milaboratories/pl-model-middle-layer';\nimport type {\n FrameId,\n TableId,\n NodeFrameSymbol,\n NodeTableSymbol\n} from './addon-def';\nimport { AddonSymbol } from './addon';\nimport {\n dump,\n hashColumnId,\n hashTableColumnId,\n hashFilterColumnId,\n hashUniqueValuesRequestColumnId,\n hashSortingColumnId,\n hashCreateTableRequestColumnId\n} from './dump';\n\nexport class PFrame implements PFrameInternal.PFrameV8 {\n public readonly id: FrameId = ulid() as FrameId;\n private readonly frame: NodeFrameSymbol;\n\n static async pprofDump(): Promise<Uint8Array> {\n try {\n return await AddonSymbol.pprofDump();\n } catch (err: unknown) {\n throw new PFrameError(\n `PFrame pprofDump failed, ` + `error:\\n` + `${ensureError(err).message}`\n );\n }\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 PFrameError(\n `PFrame ${this.id} creation failed, ` +\n `logger: ${logger?.toString()}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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 PFrameError(\n `PFrame ${this.id} addColumnSpec request ${requestId} failed, ` +\n `columnId: ${JSON.stringify(columnId)}, ` +\n `columnSpec: ${JSON.stringify(columnSpec)}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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 PFrameError(\n `PFrame ${this.id} setDataSource request ${requestId} failed, ` +\n `dataSource: ${dataSource.toString()}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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 PFrameError(\n `PFrame ${this.id} setColumnData request ${requestId} failed, ` +\n `columnId: ${JSON.stringify(columnId)}, ` +\n `dataInfo: ${JSON.stringify(dataInfo)}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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 PFrameError(\n `PFrame ${this.id} dispose request ${requestId} failed, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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 PFrameError(\n `PFrame ${this.id} findColumns request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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 PFrameError(\n `PFrame ${this.id} deleteColumn request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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 PFrameError(\n `PFrame ${this.id} getColumnSpec request ${requestId} failed, ` +\n `columnId: ${JSON.stringify(columnId)}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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 PFrameError(\n `PFrame ${this.id} listColumns request ${requestId} failed, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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.PTableV6 {\n const requestId = ulid() as TableId;\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 PFrameError(\n `PFrame ${this.id} createTable request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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() as TableId;\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 if (isAbortError(err)) {\n throw new AbortError(\n `PFrame ${this.id} getUniqueValues request ${requestId} cancelled`\n );\n }\n throw new PFrameError(\n `PFrame ${this.id} getUniqueValues request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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.PTableV6 {\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 PFrameError(\n `PTable ${this.id} getSpec request ${requestId} failed, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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 PFrameError(\n `PTable ${this.id} getColumnIndices request ${requestId} failed, ` +\n `columnIds: ${JSON.stringify(columnIds)}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\n );\n }\n }\n\n async getFootprint(ops?: {\n withPredecessors?: boolean;\n signal?: AbortSignal;\n }): Promise<number> {\n const requestId = ulid();\n dump(\n [`${this.frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getFootprint'\n },\n this.frame.logger\n );\n\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} getFootprint request ${requestId} started`\n );\n const t0 = performance.now();\n try {\n ops?.signal?.throwIfAborted();\n return await AddonSymbol.pTableGetFootprint(\n this.table,\n ops?.withPredecessors ?? false,\n ops?.signal\n );\n } catch (err: unknown) {\n if (isAbortError(err)) {\n throw new AbortError(\n `PTable ${this.id} getFootprint request ${requestId} cancelled`\n );\n }\n throw new PFrameError(\n `PTable ${this.id} getFootprint request ${requestId} failed, ` +\n `error:\\n` +\n `${ensureError(err).message}`\n );\n } finally {\n const t1 = performance.now();\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} getFootprint request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))}`\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 ops?.signal?.throwIfAborted();\n return await AddonSymbol.pTableGetShape(this.table, ops?.signal);\n } catch (err: unknown) {\n if (isAbortError(err)) {\n throw new AbortError(\n `PTable ${this.id} getShape request ${requestId} cancelled`\n );\n }\n throw new PFrameError(\n `PTable ${this.id} getShape request ${requestId} failed, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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() as TableId;\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 if (isAbortError(err)) {\n throw new AbortError(\n `PTable ${this.id} getData request ${requestId} cancelled`\n );\n }\n throw new PFrameError(\n `PTable ${this.id} getData request ${requestId} failed, ` +\n `columnIndices: ${JSON.stringify(columnIndices)}, ` +\n `range: ${ops?.range ? JSON.stringify(ops.range) : undefined}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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.PTableV6 {\n const requestId = ulid() as TableId;\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 PFrameError(\n `PTable ${this.id} filter request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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.PTableV6 {\n const requestId = ulid() as TableId;\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 PFrameError(\n `PTable ${this.id} sort request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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 PFrameError(\n `PTable ${this.id} dispose request ${requestId} failed, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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.PFrameV8;\n\n pprofDump: () => Promise<Uint8Array>;\n};\n\nexport const PFrame: PFrame = PFrameImpl;\n"],"names":["nodeFileUrl","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","PFrameError","ensureError","columnSpec","requestId","dataSource","wrappedDataSource","blobIds","t0","t1","_b","humanizeDuration","blobId","blob","dataInfo","dumpData","boxed","PTable","ops","isAbortError","AbortError","_c","frame","id","table","columnIds","_e","_d","columnIndices","rowCount","result","PFrame","PFrameImpl"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","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 AbortError,\n DataInfo,\n PColumnInfo,\n PColumnSpec,\n PFrameError,\n PObjectId,\n PTableColumnId,\n PTableColumnSpec,\n PTableRecordFilter,\n PTableShape,\n PTableSorting,\n PTableVector,\n TableRange,\n UniqueValuesRequest,\n UniqueValuesResponse,\n ensureError,\n isAbortError\n} from '@milaboratories/pl-model-common';\nimport type { PFrameInternal } from '@milaboratories/pl-model-middle-layer';\nimport type {\n FrameId,\n TableId,\n NodeFrameSymbol,\n NodeTableSymbol\n} from './addon-def';\nimport { AddonSymbol } from './addon';\nimport {\n dump,\n hashColumnId,\n hashTableColumnId,\n hashFilterColumnId,\n hashUniqueValuesRequestColumnId,\n hashSortingColumnId,\n hashCreateTableRequestColumnId\n} from './dump';\n\nexport class PFrame implements PFrameInternal.PFrameV9 {\n public readonly id: FrameId = ulid() as FrameId;\n private readonly frame: NodeFrameSymbol;\n\n static async pprofDump(): Promise<Uint8Array> {\n try {\n return await AddonSymbol.pprofDump();\n } catch (err: unknown) {\n throw new PFrameError(\n `PFrame pprofDump failed, ` + `error:\\n` + `${ensureError(err).message}`\n );\n }\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 PFrameError(\n `PFrame ${this.id} creation failed, ` +\n `logger: ${logger?.toString()}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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 PFrameError(\n `PFrame ${this.id} addColumnSpec request ${requestId} failed, ` +\n `columnId: ${JSON.stringify(columnId)}, ` +\n `columnSpec: ${JSON.stringify(columnSpec)}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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 PFrameError(\n `PFrame ${this.id} setDataSource request ${requestId} failed, ` +\n `dataSource: ${dataSource.toString()}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\n );\n }\n }\n\n setColumnData(\n columnId: PObjectId,\n dataInfo: DataInfo<PFrameInternal.PFrameBlobId>,\n ops?: {\n signal?: AbortSignal;\n }\n ): Promise<void> {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'setColumnData',\n requestData: {\n columnId: hashColumnId(columnId),\n dataInfo\n }\n },\n this.logger\n );\n\n dump(\n [`${this.id}`, `data`, `${hashColumnId(columnId)}.datainfo`],\n {\n ...dataInfo\n },\n this.logger\n );\n\n try {\n ops?.signal?.throwIfAborted();\n return AddonSymbol.pFrameSetColumnData(\n this.frame,\n columnId,\n dataInfo,\n ops?.signal\n );\n } catch (err: unknown) {\n throw new PFrameError(\n `PFrame ${this.id} setColumnData request ${requestId} failed, ` +\n `columnId: ${JSON.stringify(columnId)}, ` +\n `dataInfo: ${JSON.stringify(dataInfo)}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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 PFrameError(\n `PFrame ${this.id} dispose request ${requestId} failed, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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 PFrameError(\n `PFrame ${this.id} findColumns request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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 PFrameError(\n `PFrame ${this.id} deleteColumn request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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 PFrameError(\n `PFrame ${this.id} getColumnSpec request ${requestId} failed, ` +\n `columnId: ${JSON.stringify(columnId)}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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 PFrameError(\n `PFrame ${this.id} listColumns request ${requestId} failed, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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.PTableV6 {\n const requestId = ulid() as TableId;\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 PFrameError(\n `PFrame ${this.id} createTable request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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() as TableId;\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 if (isAbortError(err)) {\n throw new AbortError(\n `PFrame ${this.id} getUniqueValues request ${requestId} cancelled`\n );\n }\n throw new PFrameError(\n `PFrame ${this.id} getUniqueValues request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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.PTableV6 {\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 PFrameError(\n `PTable ${this.id} getSpec request ${requestId} failed, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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 PFrameError(\n `PTable ${this.id} getColumnIndices request ${requestId} failed, ` +\n `columnIds: ${JSON.stringify(columnIds)}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\n );\n }\n }\n\n async getFootprint(ops?: {\n withPredecessors?: boolean;\n signal?: AbortSignal;\n }): Promise<number> {\n const requestId = ulid();\n dump(\n [`${this.frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getFootprint'\n },\n this.frame.logger\n );\n\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} getFootprint request ${requestId} started`\n );\n const t0 = performance.now();\n try {\n ops?.signal?.throwIfAborted();\n return await AddonSymbol.pTableGetFootprint(\n this.table,\n ops?.withPredecessors ?? false,\n ops?.signal\n );\n } catch (err: unknown) {\n if (isAbortError(err)) {\n throw new AbortError(\n `PTable ${this.id} getFootprint request ${requestId} cancelled`\n );\n }\n throw new PFrameError(\n `PTable ${this.id} getFootprint request ${requestId} failed, ` +\n `error:\\n` +\n `${ensureError(err).message}`\n );\n } finally {\n const t1 = performance.now();\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} getFootprint request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))}`\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 ops?.signal?.throwIfAborted();\n return await AddonSymbol.pTableGetShape(this.table, ops?.signal);\n } catch (err: unknown) {\n if (isAbortError(err)) {\n throw new AbortError(\n `PTable ${this.id} getShape request ${requestId} cancelled`\n );\n }\n throw new PFrameError(\n `PTable ${this.id} getShape request ${requestId} failed, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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() as TableId;\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 if (isAbortError(err)) {\n throw new AbortError(\n `PTable ${this.id} getData request ${requestId} cancelled`\n );\n }\n throw new PFrameError(\n `PTable ${this.id} getData request ${requestId} failed, ` +\n `columnIndices: ${JSON.stringify(columnIndices)}, ` +\n `range: ${ops?.range ? JSON.stringify(ops.range) : undefined}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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.PTableV6 {\n const requestId = ulid() as TableId;\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 PFrameError(\n `PTable ${this.id} filter request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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.PTableV6 {\n const requestId = ulid() as TableId;\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 PFrameError(\n `PTable ${this.id} sort request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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 PFrameError(\n `PTable ${this.id} dispose request ${requestId} failed, ` +\n `error:\\n` +\n `${ensureError(err).message}`\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.PFrameV9;\n\n pprofDump: () => Promise<Uint8Array>;\n};\n\nexport const PFrame: PFrame = PFrameImpl;\n"],"names":["nodeFileUrl","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","PFrameError","ensureError","columnSpec","requestId","dataSource","wrappedDataSource","blobIds","t0","t1","_b","humanizeDuration","blobId","blob","dataInfo","ops","dumpData","boxed","PTable","isAbortError","AbortError","_c","frame","id","table","columnIds","_e","_d","columnIndices","rowCount","result","PFrame","PFrameImpl"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { DataInfo, PColumnInfo, PColumnSpec, PObjectId, UniqueValuesRequest, UniqueValuesResponse } from '@milaboratories/pl-model-common';
2
2
  import { PFrameInternal } from '@milaboratories/pl-model-middle-layer';
3
3
  import { FrameId } from './addon-def';
4
- export declare class PFrame implements PFrameInternal.PFrameV8 {
4
+ export declare class PFrame implements PFrameInternal.PFrameV9 {
5
5
  readonly logger?: PFrameInternal.Logger | undefined;
6
6
  readonly id: FrameId;
7
7
  private readonly frame;
@@ -9,7 +9,9 @@ export declare class PFrame implements PFrameInternal.PFrameV8 {
9
9
  constructor(spillPath: string, logger?: PFrameInternal.Logger | undefined);
10
10
  addColumnSpec(columnId: PObjectId, columnSpec: PColumnSpec): void;
11
11
  setDataSource(dataSource: PFrameInternal.PFrameDataSource): void;
12
- setColumnData(columnId: PObjectId, dataInfo: DataInfo<PFrameInternal.PFrameBlobId>): void;
12
+ setColumnData(columnId: PObjectId, dataInfo: DataInfo<PFrameInternal.PFrameBlobId>, ops?: {
13
+ signal?: AbortSignal;
14
+ }): Promise<void>;
13
15
  dispose(): void;
14
16
  [Symbol.dispose](): void;
15
17
  findColumns(request: PFrameInternal.FindColumnsRequest): Promise<PFrameInternal.FindColumnsResponse>;
@@ -1 +1 @@
1
- {"version":3,"file":"wrapper.d.ts","sourceRoot":"","sources":["../export/wrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,QAAQ,EACR,WAAW,EACX,WAAW,EAEX,SAAS,EAQT,mBAAmB,EACnB,oBAAoB,EAGrB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,KAAK,EACV,OAAO,EAIR,MAAM,aAAa,CAAC;AAYrB,qBAAa,MAAO,YAAW,cAAc,CAAC,QAAQ;aAgBlC,MAAM,CAAC,EAAE,cAAc,CAAC,MAAM;IAfhD,SAAgB,EAAE,EAAE,OAAO,CAAqB;IAChD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkB;WAE3B,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC;gBAW3C,SAAS,EAAE,MAAM,EACD,MAAM,CAAC,EAAE,cAAc,CAAC,MAAM,YAAA;IAwBhD,aAAa,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,GAAG,IAAI;IAoCjE,aAAa,CAAC,UAAU,EAAE,cAAc,CAAC,gBAAgB,GAAG,IAAI;IA+EhE,aAAa,CACX,QAAQ,EAAE,SAAS,EACnB,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC,GAC9C,IAAI;IAoCP,OAAO,IAAI,IAAI;IAuBf,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;IAIlB,WAAW,CACf,OAAO,EAAE,cAAc,CAAC,kBAAkB,GACzC,OAAO,CAAC,cAAc,CAAC,mBAAmB,CAAC;IA+BxC,YAAY,CAChB,OAAO,EAAE,cAAc,CAAC,8BAA8B,GACrD,OAAO,CAAC,cAAc,CAAC,+BAA+B,CAAC;IA+BpD,aAAa,CAAC,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;IAiCxD,WAAW,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IA6B3C,WAAW,CACT,OAAO,EAAE,cAAc,CAAC,oBAAoB,GAC3C,cAAc,CAAC,QAAQ;IAsCpB,eAAe,CACnB,OAAO,EAAE,mBAAmB,EAC5B,GAAG,CAAC,EAAE;QACJ,MAAM,CAAC,EAAE,WAAW,CAAC;KACtB,GACA,OAAO,CAAC,oBAAoB,CAAC;CA6CjC"}
1
+ {"version":3,"file":"wrapper.d.ts","sourceRoot":"","sources":["../export/wrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,QAAQ,EACR,WAAW,EACX,WAAW,EAEX,SAAS,EAQT,mBAAmB,EACnB,oBAAoB,EAGrB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,KAAK,EACV,OAAO,EAIR,MAAM,aAAa,CAAC;AAYrB,qBAAa,MAAO,YAAW,cAAc,CAAC,QAAQ;aAgBlC,MAAM,CAAC,EAAE,cAAc,CAAC,MAAM;IAfhD,SAAgB,EAAE,EAAE,OAAO,CAAqB;IAChD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkB;WAE3B,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC;gBAW3C,SAAS,EAAE,MAAM,EACD,MAAM,CAAC,EAAE,cAAc,CAAC,MAAM,YAAA;IAwBhD,aAAa,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,GAAG,IAAI;IAoCjE,aAAa,CAAC,UAAU,EAAE,cAAc,CAAC,gBAAgB,GAAG,IAAI;IA+EhE,aAAa,CACX,QAAQ,EAAE,SAAS,EACnB,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC,EAC/C,GAAG,CAAC,EAAE;QACJ,MAAM,CAAC,EAAE,WAAW,CAAC;KACtB,GACA,OAAO,CAAC,IAAI,CAAC;IA0ChB,OAAO,IAAI,IAAI;IAuBf,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;IAIlB,WAAW,CACf,OAAO,EAAE,cAAc,CAAC,kBAAkB,GACzC,OAAO,CAAC,cAAc,CAAC,mBAAmB,CAAC;IA+BxC,YAAY,CAChB,OAAO,EAAE,cAAc,CAAC,8BAA8B,GACrD,OAAO,CAAC,cAAc,CAAC,+BAA+B,CAAC;IA+BpD,aAAa,CAAC,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;IAiCxD,WAAW,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IA6B3C,WAAW,CACT,OAAO,EAAE,cAAc,CAAC,oBAAoB,GAC3C,cAAc,CAAC,QAAQ;IAsCpB,eAAe,CACnB,OAAO,EAAE,mBAAmB,EAC5B,GAAG,CAAC,EAAE;QACJ,MAAM,CAAC,EAAE,WAAW,CAAC;KACtB,GACA,OAAO,CAAC,oBAAoB,CAAC;CA6CjC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@milaboratories/pframes-rs-node",
3
3
  "description": "PFrames - Node.js Native Addon",
4
- "version": "1.0.53",
4
+ "version": "1.0.54",
5
5
  "types": "./export_dist/index.d.ts",
6
6
  "main": "./export_dist/index.js",
7
7
  "module": "./export_dist/index.mjs",
@@ -18,7 +18,7 @@
18
18
  ],
19
19
  "dependencies": {
20
20
  "@mapbox/node-pre-gyp": "^2.0.0",
21
- "@milaboratories/pl-model-middle-layer": "1.7.50",
21
+ "@milaboratories/pl-model-middle-layer": "1.8.3",
22
22
  "@types/humanize-duration": "^3.27.4",
23
23
  "humanize-duration": "^3.33.0",
24
24
  "ulid": "^3.0.1"
@@ -28,7 +28,7 @@
28
28
  },
29
29
  "devDependencies": {
30
30
  "@rollup/plugin-node-resolve": "^16.0.1",
31
- "@types/node": "^20.19.7",
31
+ "@types/node": "^20.19.9",
32
32
  "@vitest/coverage-istanbul": "^3.2.4",
33
33
  "cargo-cp-artifact": "^0.1.9",
34
34
  "rollup-plugin-node-externals": "^8.0.1",