@milaboratories/pframes-rs-node 1.0.44 → 1.0.45

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/export/wrapper.ts CHANGED
@@ -109,7 +109,7 @@ export class PFrame implements PFrameInternal.PFrameV7 {
109
109
  this.logger
110
110
  );
111
111
 
112
- let wrappedDataSource = {
112
+ const wrappedDataSource = {
113
113
  preloadBlob: async (
114
114
  blobIds: PFrameInternal.PFrameBlobId[]
115
115
  ): Promise<void> => {
@@ -128,7 +128,7 @@ export class PFrame implements PFrameInternal.PFrameV7 {
128
128
 
129
129
  const t0 = performance.now();
130
130
  try {
131
- return dataSource.preloadBlob(blobIds);
131
+ return await dataSource.preloadBlob(blobIds);
132
132
  } finally {
133
133
  const t1 = performance.now();
134
134
  this.logger?.(
@@ -1,6 +1,6 @@
1
1
  "use strict";var I=Object.defineProperty;var j=(i,t,e)=>t in i?I(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e;var S=(i,t,e)=>j(i,typeof t!="symbol"?t+"":t,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("humanize-duration"),l=require("ulid"),E=require("node:module"),w=require("node:path"),M=require("node:url"),U=require("@mapbox/node-pre-gyp"),R=require("node:crypto"),p=require("node:fs"),y=require("node:stream");var D=typeof document<"u"?document.currentScript:null;const P=typeof document>"u"?require("url").pathToFileURL(__filename).href:D&&D.tagName.toUpperCase()==="SCRIPT"&&D.src||new URL("index.js",document.baseURI).href,J=w.dirname(M.fileURLToPath(P)),N=E.createRequire(P),{find:O}=U,d=N(O(w.resolve(J,"../package.json")));async function F(i){try{return await p.promises.access(i),!0}catch{return!1}}async function v(i){await F(i)||await p.promises.mkdir(i,{recursive:!0})}async function _(i,t){const e=`${i}.tmp`;await F(e)&&await p.promises.rm(e,{recursive:!0});const r=typeof t=="string"?Buffer.from(t,"utf8"):t,s=y.Readable.from(r),n=p.createWriteStream(e,{flags:"wx"});await y.Readable.toWeb(s).pipeTo(y.Writable.toWeb(n)),await p.promises.rename(e,i)}function h(i){return R.createHash("sha256").update(i).digest("hex")}function T(i){return i.type==="column"?{...i,id:h(i.id)}:i}function b(i){return{...i,column:T(i.column)}}function k(i){return{...i,columnId:h(i.columnId),filters:i.filters.map(b)}}function A(i){return{...i,column:T(i.column)}}function g(i){const t=i.type;switch(t){case"column":return{...i,columnId:h(i.columnId)};case"slicedColumn":return{...i,columnId:h(i.columnId),newId:h(i.newId)};case"inlineColumn":return{...i,newId:h(i.newId)};case"inner":return{...i,entries:i.entries.map(g)};case"full":return{...i,entries:i.entries.map(g)};case"outer":return{...i,primary:g(i.primary),secondary:i.secondary.map(g)};default:throw new Error(`Unsupported join entry type: ${t}`)}}function x(i){return{...i,src:g(i.src),filters:i.filters.map(b)}}async function a(i,t,e){if(process.env.MI_DUMP_PFRAMES_RS)try{const r=i.map(o=>encodeURIComponent(o)),s=w.join(process.env.MI_DUMP_PFRAMES_RS,...r.slice(0,-1));await v(s);const n=w.join(process.env.MI_DUMP_PFRAMES_RS,...r),u=ArrayBuffer.isView(t)?t:JSON.stringify(t,null,2);await _(n,u)}catch(r){e==null||e("warn",`error while dumping PFrames data: ${r}`)}}let B=class{constructor(t,e){S(this,"id",l.ulid());S(this,"frame");var r;this.logger=e,a([`${this.id}`,`${this.id}.json`],{timeStamp:Date.now(),requestType:"create"},this.logger);try{this.frame=d.pFrameCreate(t,e),(r=this.logger)==null||r.call(this,"info",`PFrame ${this.id} created`)}catch(s){throw new Error(`PFrame ${this.id} creation failed, logger: ${e==null?void 0:e.toString()}, error:
2
2
  ${s.toString()}`)}}static async pprofDump(){return d.pprofDump()}addColumnSpec(t,e){const r=l.ulid();a([`${this.id}`,`${r}.json`],{timeStamp:Date.now(),requestType:"addColumnSpec",requestData:{columnId:h(t),columnSpec:e}},this.logger),a([`${this.id}`,"data",`${h(t)}.spec`],{...e},this.logger);try{return d.pFrameAddColumnSpec(this.frame,t,e)}catch(s){throw new Error(`PFrame ${this.id} addColumnSpec request ${r} failed, columnId: ${JSON.stringify(t)}, columnSpec: ${JSON.stringify(e)}, error:
3
- ${s.toString()}`)}}setDataSource(t){const e=l.ulid();a([`${this.id}`,`${e}.json`],{timeStamp:Date.now(),requestType:"setDataSource"},this.logger);let r={preloadBlob:async s=>{var o;const n=l.ulid();a([`${this.id}`,`${n}.json`],{timeStamp:Date.now(),requestType:"preloadBlob",requestData:{blobIds:s}},this.logger);const u=performance.now();try{return t.preloadBlob(s)}finally{const c=performance.now();(o=this.logger)==null||o.call(this,"info",`PFrame ${this.id} preloaded ${s.length} blobs ${JSON.stringify(s)}, took ${f(Math.round(c-u))}`)}},resolveBlobContent:async s=>{var o;const n=l.ulid();a([`${this.id}`,`${n}.json`],{timeStamp:Date.now(),requestType:"resolveBlobContent",requestData:{blobId:s}},this.logger);const u=await t.resolveBlobContent(s);return(o=this.logger)==null||o.call(this,"info",`PFrame ${this.id} resolved blob ${s}`),a([`${this.id}`,"data",`${s}`],u,this.logger),u}};try{return d.pFrameSetDataSource(this.frame,r)}catch(s){throw new Error(`PFrame ${this.id} setDataSource request ${e} failed, dataSource: ${t.toString()}, error:
3
+ ${s.toString()}`)}}setDataSource(t){const e=l.ulid();a([`${this.id}`,`${e}.json`],{timeStamp:Date.now(),requestType:"setDataSource"},this.logger);const r={preloadBlob:async s=>{var o;const n=l.ulid();a([`${this.id}`,`${n}.json`],{timeStamp:Date.now(),requestType:"preloadBlob",requestData:{blobIds:s}},this.logger);const u=performance.now();try{return await t.preloadBlob(s)}finally{const c=performance.now();(o=this.logger)==null||o.call(this,"info",`PFrame ${this.id} preloaded ${s.length} blobs ${JSON.stringify(s)}, took ${f(Math.round(c-u))}`)}},resolveBlobContent:async s=>{var o;const n=l.ulid();a([`${this.id}`,`${n}.json`],{timeStamp:Date.now(),requestType:"resolveBlobContent",requestData:{blobId:s}},this.logger);const u=await t.resolveBlobContent(s);return(o=this.logger)==null||o.call(this,"info",`PFrame ${this.id} resolved blob ${s}`),a([`${this.id}`,"data",`${s}`],u,this.logger),u}};try{return d.pFrameSetDataSource(this.frame,r)}catch(s){throw new Error(`PFrame ${this.id} setDataSource request ${e} failed, dataSource: ${t.toString()}, error:
4
4
  ${s.toString()}`)}}setColumnData(t,e){const r=l.ulid();a([`${this.id}`,`${r}.json`],{timeStamp:Date.now(),requestType:"setColumnData",requestData:{columnId:h(t),dataInfo:e}},this.logger),a([`${this.id}`,"data",`${h(t)}.datainfo`],{...e},this.logger);try{return d.pFrameSetColumnData(this.frame,t,e)}catch(s){throw new Error(`PFrame ${this.id} setColumnData request ${r} failed, columnId: ${JSON.stringify(t)}, dataInfo: ${JSON.stringify(e)}, error:
5
5
  ${s.toString()}`)}}dispose(){var e;const t=l.ulid();a([`${this.id}`,`${t}.json`],{timeStamp:Date.now(),requestType:"dispose"},this.logger);try{d.pFrameDispose(this.frame),(e=this.logger)==null||e.call(this,"info",`PFrame ${this.id} disposed`)}catch(r){throw new Error(`PFrame ${this.id} dispose request ${t} failed, error:
6
6
  ${r.toString()}`)}}[Symbol.dispose](){this.dispose()}async findColumns(t){var s;const e=l.ulid();a([`${this.id}`,`${e}.json`],{timeStamp:Date.now(),requestType:"findColumns",requestData:t},this.logger);const r=performance.now();try{return await d.pFrameFindColumns(this.frame,t)}catch(n){throw new Error(`PFrame ${this.id} findColumns request ${e} failed, request: ${JSON.stringify(t)}, error:
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../export/addon.ts","../export/dump.ts","../export/wrapper.ts","../export/export.ts"],"sourcesContent":["import { createRequire } from 'node:module';\nimport { dirname, resolve } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport gyp from '@mapbox/node-pre-gyp';\nimport type { AddonSymbol } from './addon-def';\n\nconst nodeFileUrl = import.meta.url;\nconst nodeDirname = dirname(fileURLToPath(nodeFileUrl));\nconst nodeRequire = createRequire(nodeFileUrl);\n\nconst { find: findAddon } = gyp;\n\n// Pre-gyp reads binary section from package.json and constructs a path to addon\n// https://github.com/mapbox/node-pre-gyp/blob/a541932680034f5de9e7365ef8d9a0d7a11cc1a9/lib/package.js#L35\n// Require calls dlopen under the hood\n// https://nodejs.org/api/process.html#processdlopenmodule-filename-flags\n// DLOpen then searches for napi_register_module_v1 in addon export table\n// https://github.com/search?q=repo%3Anodejs%2Fnode%20NAPI_MODULE_INITIALIZER&type=code\n// And neon exports napi_register_module_v1 from #[neon::main]\n// https://github.com/neon-bindings/neon/blob/b1728fa21e968ccde9611ac9955cf6d638be16e6/crates/neon/src/context/internal.rs#L76\nconst AddonSymbol = nodeRequire(\n findAddon(resolve(nodeDirname, '../package.json'))\n) as AddonSymbol;\n\nexport { AddonSymbol };\n","import { createHash } from 'node:crypto';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport { Readable, Writable } from 'node:stream';\nimport type { PFrameInternal } from '@milaboratories/pl-model-middle-layer';\nimport {\n PObjectId,\n PTableColumnId,\n PTableRecordFilter,\n PTableSorting,\n UniqueValuesRequest\n} from '@milaboratories/pl-model-common';\n\nasync function fileExists(path: string): Promise<boolean> {\n try {\n await fs.promises.access(path);\n return true;\n } catch {\n return false;\n }\n}\n\nasync function ensureDirExists(fileOrDir: string): Promise<void> {\n if (!(await fileExists(fileOrDir))) {\n await fs.promises.mkdir(fileOrDir, { recursive: true });\n }\n}\n\nasync function writeFile(\n filePath: string,\n data: string | Uint8Array\n): Promise<void> {\n const tempPath = `${filePath}.tmp`;\n if (await fileExists(tempPath)) {\n await fs.promises.rm(tempPath, { recursive: true });\n }\n\n const buffer = typeof data === 'string' ? Buffer.from(data, 'utf8') : data;\n const source = Readable.from(buffer);\n const destination = fs.createWriteStream(tempPath, { flags: 'wx' });\n await Readable.toWeb(source).pipeTo(Writable.toWeb(destination));\n\n await fs.promises.rename(tempPath, filePath);\n}\n\nexport function hashColumnId(columnId: PObjectId): PObjectId {\n return createHash('sha256').update(columnId).digest('hex') as PObjectId;\n}\n\nexport function hashTableColumnId(tableId: PTableColumnId): PTableColumnId {\n if (tableId.type === 'column') {\n return {\n ...tableId,\n id: hashColumnId(tableId.id)\n };\n }\n return tableId;\n}\n\nexport function hashFilterColumnId(\n filter: PTableRecordFilter\n): PTableRecordFilter {\n return {\n ...filter,\n column: hashTableColumnId(filter.column)\n };\n}\n\nexport function hashUniqueValuesRequestColumnId(\n request: UniqueValuesRequest\n): UniqueValuesRequest {\n return {\n ...request,\n columnId: hashColumnId(request.columnId),\n filters: request.filters.map(hashFilterColumnId)\n };\n}\n\nexport function hashSortingColumnId(sorting: PTableSorting): PTableSorting {\n return {\n ...sorting,\n column: hashTableColumnId(sorting.column)\n };\n}\n\nfunction hashJoinEntryColumnId(\n entry: PFrameInternal.JoinEntryV3\n): PFrameInternal.JoinEntryV3 {\n const type = entry.type;\n switch (type) {\n case 'column':\n return {\n ...entry,\n columnId: hashColumnId(entry.columnId)\n };\n case 'slicedColumn':\n return {\n ...entry,\n columnId: hashColumnId(entry.columnId),\n newId: hashColumnId(entry.newId)\n };\n case 'inlineColumn':\n return {\n ...entry,\n newId: hashColumnId(entry.newId)\n };\n case 'inner':\n return {\n ...entry,\n entries: entry.entries.map(hashJoinEntryColumnId)\n };\n case 'full':\n return {\n ...entry,\n entries: entry.entries.map(hashJoinEntryColumnId)\n };\n case 'outer':\n return {\n ...entry,\n primary: hashJoinEntryColumnId(entry.primary),\n secondary: entry.secondary.map(hashJoinEntryColumnId)\n };\n default:\n throw new Error(`Unsupported join entry type: ${type}`);\n }\n}\n\nexport function hashCreateTableRequestColumnId(\n request: PFrameInternal.CreateTableRequestV3\n): PFrameInternal.CreateTableRequestV3 {\n return {\n ...request,\n src: hashJoinEntryColumnId(request.src),\n filters: request.filters.map(hashFilterColumnId)\n };\n}\n\nexport async function dump(\n relativePath: string[],\n data: { [key: string]: Object } | Uint8Array,\n logger?: PFrameInternal.Logger\n): Promise<void> {\n if (!process.env.MI_DUMP_PFRAMES_RS) return;\n try {\n const relativeUri = relativePath.map((part) => encodeURIComponent(part));\n const fileDir = path.join(\n process.env.MI_DUMP_PFRAMES_RS,\n ...relativeUri.slice(0, -1)\n );\n await ensureDirExists(fileDir);\n\n const filePath = path.join(process.env.MI_DUMP_PFRAMES_RS, ...relativeUri);\n const fileData = ArrayBuffer.isView(data)\n ? (data as Uint8Array)\n : JSON.stringify(data, null, 2);\n await writeFile(filePath, fileData);\n } catch (error: unknown) {\n logger?.('warn', `error while dumping PFrames data: ${error}`);\n }\n}\n","import humanizeDuration from 'humanize-duration';\nimport { ulid } from 'ulid';\nimport {\n DataInfo,\n PColumnInfo,\n PColumnSpec,\n PObjectId,\n PTableColumnId,\n PTableColumnSpec,\n PTableRecordFilter,\n PTableShape,\n PTableSorting,\n PTableVector,\n TableRange,\n UniqueValuesRequest,\n UniqueValuesResponse\n} from '@milaboratories/pl-model-common';\nimport type { PFrameInternal } from '@milaboratories/pl-model-middle-layer';\nimport type { NodeFrameSymbol, NodeTableSymbol } from './addon-def';\nimport { AddonSymbol } from './addon';\nimport {\n hashColumnId,\n dump,\n hashTableColumnId,\n hashFilterColumnId,\n hashUniqueValuesRequestColumnId,\n hashSortingColumnId,\n hashCreateTableRequestColumnId\n} from './dump';\n\nexport class PFrame implements PFrameInternal.PFrameV7 {\n public readonly id: string = ulid();\n private readonly frame: NodeFrameSymbol;\n\n static async pprofDump(): Promise<Uint8Array> {\n return AddonSymbol.pprofDump();\n }\n\n constructor(\n spillPath: string,\n public readonly logger?: PFrameInternal.Logger\n ) {\n dump(\n [`${this.id}`, `${this.id}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'create'\n },\n this.logger\n );\n\n try {\n this.frame = AddonSymbol.pFrameCreate(spillPath, logger);\n this.logger?.('info', `PFrame ${this.id} created`);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} creation failed, ` +\n `logger: ${logger?.toString()}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n addColumnSpec(columnId: PObjectId, columnSpec: PColumnSpec): void {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'addColumnSpec',\n requestData: {\n columnId: hashColumnId(columnId),\n columnSpec\n }\n },\n this.logger\n );\n\n dump(\n [`${this.id}`, `data`, `${hashColumnId(columnId)}.spec`],\n {\n ...columnSpec\n },\n this.logger\n );\n\n try {\n return AddonSymbol.pFrameAddColumnSpec(this.frame, columnId, columnSpec);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} addColumnSpec request ${requestId} failed, ` +\n `columnId: ${JSON.stringify(columnId)}, ` +\n `columnSpec: ${JSON.stringify(columnSpec)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n setDataSource(dataSource: PFrameInternal.PFrameDataSource): void {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'setDataSource'\n },\n this.logger\n );\n\n let wrappedDataSource = {\n preloadBlob: async (\n blobIds: PFrameInternal.PFrameBlobId[]\n ): Promise<void> => {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'preloadBlob',\n requestData: {\n blobIds\n }\n },\n this.logger\n );\n\n const t0 = performance.now();\n try {\n return dataSource.preloadBlob(blobIds);\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} preloaded ${blobIds.length} blobs ${JSON.stringify(blobIds)}, took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n },\n resolveBlobContent: async (\n blobId: PFrameInternal.PFrameBlobId\n ): Promise<Uint8Array> => {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'resolveBlobContent',\n requestData: {\n blobId\n }\n },\n this.logger\n );\n\n const blob = await dataSource.resolveBlobContent(blobId);\n this.logger?.('info', `PFrame ${this.id} resolved blob ${blobId}`);\n dump([`${this.id}`, `data`, `${blobId}`], blob, this.logger);\n\n return blob;\n }\n };\n\n try {\n return AddonSymbol.pFrameSetDataSource(this.frame, wrappedDataSource);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} setDataSource request ${requestId} failed, ` +\n `dataSource: ${dataSource.toString()}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n setColumnData(\n columnId: PObjectId,\n dataInfo: DataInfo<PFrameInternal.PFrameBlobId>\n ): void {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'setColumnData',\n requestData: {\n columnId: hashColumnId(columnId),\n dataInfo\n }\n },\n this.logger\n );\n\n dump(\n [`${this.id}`, `data`, `${hashColumnId(columnId)}.datainfo`],\n {\n ...dataInfo\n },\n this.logger\n );\n\n try {\n return AddonSymbol.pFrameSetColumnData(this.frame, columnId, dataInfo);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} setColumnData request ${requestId} failed, ` +\n `columnId: ${JSON.stringify(columnId)}, ` +\n `dataInfo: ${JSON.stringify(dataInfo)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n dispose(): void {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'dispose'\n },\n this.logger\n );\n\n try {\n AddonSymbol.pFrameDispose(this.frame);\n this.logger?.('info', `PFrame ${this.id} disposed`);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} dispose request ${requestId} failed, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n [Symbol.dispose](): void {\n this.dispose();\n }\n\n async findColumns(\n request: PFrameInternal.FindColumnsRequest\n ): Promise<PFrameInternal.FindColumnsResponse> {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'findColumns',\n requestData: request\n },\n this.logger\n );\n\n const t0 = performance.now();\n try {\n return await AddonSymbol.pFrameFindColumns(this.frame, request);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} findColumns request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} findColumns request ${requestId} took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n async deleteColumn(\n request: PFrameInternal.DeleteColumnFromColumnsRequest\n ): Promise<PFrameInternal.DeleteColumnFromColumnsResponse> {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'deleteColumn',\n requestData: request\n },\n this.logger\n );\n\n const t0 = performance.now();\n try {\n return await AddonSymbol.pFrameDeleteColumn(this.frame, request);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} deleteColumn request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} deleteColumn request ${requestId} took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n async getColumnSpec(columnId: PObjectId): Promise<PColumnSpec> {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getColumnSpec',\n requestData: {\n columnId: hashColumnId(columnId)\n }\n },\n this.logger\n );\n\n const t0 = performance.now();\n try {\n return await AddonSymbol.pFrameGetColumnSpec(this.frame, columnId);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} getColumnSpec request ${requestId} failed, ` +\n `columnId: ${JSON.stringify(columnId)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} getColumnSpec request ${requestId} took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n async listColumns(): Promise<PColumnInfo[]> {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'listColumns'\n },\n this.logger\n );\n\n const t0 = performance.now();\n try {\n return await AddonSymbol.pFrameListColumns(this.frame);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} listColumns request ${requestId} failed, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} listColumns request ${requestId} took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n createTable(\n request: PFrameInternal.CreateTableRequestV3\n ): PFrameInternal.PTableV5 {\n const requestId = ulid();\n const dumpData = {\n timeStamp: Date.now(),\n requestType: 'createTable',\n requestData: hashCreateTableRequestColumnId(request)\n };\n dump([`${this.id}`, `${requestId}.json`], dumpData, this.logger);\n dump(\n [`${this.id}`, `${requestId}`, `${requestId}.json`],\n dumpData,\n this.logger\n );\n\n this.logger?.(\n 'info',\n `PFrame ${this.id} createTable request ${requestId} started`\n );\n const t0 = performance.now();\n try {\n const boxed = AddonSymbol.pFrameCreateTable(\n this.frame,\n requestId,\n request\n );\n return new PTable(this, requestId, boxed);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} createTable request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} createTable request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n async getUniqueValues(\n request: UniqueValuesRequest,\n ops?: {\n signal?: AbortSignal;\n }\n ): Promise<UniqueValuesResponse> {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getUniqueValues',\n requestData: hashUniqueValuesRequestColumnId(request)\n },\n this.logger\n );\n\n this.logger?.(\n 'info',\n `PFrame ${this.id} getUniqueValues request ${requestId} started`\n );\n const t0 = performance.now();\n try {\n ops?.signal?.throwIfAborted();\n return await AddonSymbol.pFrameGetUniqueValues(\n this.frame,\n requestId,\n request,\n ops?.signal\n );\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} getUniqueValues request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} getUniqueValues request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n}\n\nclass PTable implements PFrameInternal.PTableV5 {\n constructor(\n private readonly frame: PFrame,\n public readonly id: string,\n private readonly table: NodeTableSymbol\n ) {\n this.frame.logger?.('info', `PTable ${this.id} created`);\n }\n\n getSpec(): PTableColumnSpec[] {\n const requestId = ulid();\n dump(\n [`${this.frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getSpec'\n },\n this.frame.logger\n );\n\n try {\n return AddonSymbol.pTableGetSpec(this.table);\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} getSpec request ${requestId} failed, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n getColumnIndices(columnIds: PTableColumnId[]): number[] {\n const requestId = ulid();\n dump(\n [`${this.frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getColumnIndices',\n requestData: {\n columnIds: columnIds.map(hashTableColumnId)\n }\n },\n this.frame.logger\n );\n\n try {\n return AddonSymbol.pTableGetColumnIndices(this.table, columnIds);\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} getColumnIndices request ${requestId} failed, ` +\n `columnIds: ${JSON.stringify(columnIds)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n async getShape(ops?: { signal?: AbortSignal }): Promise<PTableShape> {\n const requestId = ulid();\n dump(\n [`${this.frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getShape'\n },\n this.frame.logger\n );\n\n try {\n return await AddonSymbol.pTableGetShape(this.table, ops?.signal);\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} getShape request ${requestId} failed, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n async getData(\n columnIndices: number[],\n ops?: {\n range?: TableRange | undefined;\n signal?: AbortSignal | undefined;\n }\n ): Promise<PTableVector[]> {\n const requestId = ulid();\n dump(\n [`${this.frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getData',\n requestData: {\n columnIndices,\n range: ops?.range ?? null\n }\n },\n this.frame.logger\n );\n\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} getData request ${requestId} started`\n );\n let rowCount = 0;\n const t0 = performance.now();\n try {\n ops?.signal?.throwIfAborted();\n const result = await AddonSymbol.pTableGetData(\n this.table,\n requestId,\n columnIndices,\n ops?.range,\n ops?.signal\n );\n rowCount = result[0].data.length;\n return result;\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} getData request ${requestId} failed, ` +\n `columnIndices: ${JSON.stringify(columnIndices)}, ` +\n `range: ${ops?.range ? JSON.stringify(ops.range) : undefined}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} getData request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))} (${rowCount} rows)`\n );\n }\n }\n\n filter(request: PTableRecordFilter[]): PFrameInternal.PTableV5 {\n const requestId = ulid();\n const dumpData = {\n timeStamp: Date.now(),\n table: this.id,\n requestType: 'filter',\n requestData: {\n filters: request.map(hashFilterColumnId)\n }\n };\n dump(\n [`${this.frame.id}`, `${requestId}.json`],\n dumpData,\n this.frame.logger\n );\n dump(\n [`${this.frame.id}`, `${requestId}`, `${requestId}.json`],\n dumpData,\n this.frame.logger\n );\n\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} filter request ${requestId} started`\n );\n const t0 = performance.now();\n try {\n const boxed = AddonSymbol.pTableFilter(this.table, requestId, request);\n return new PTable(this.frame, requestId, boxed);\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} filter request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} filter request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n sort(request: PTableSorting[]): PFrameInternal.PTableV5 {\n const requestId = ulid();\n const dumpData = {\n timeStamp: Date.now(),\n table: this.id,\n requestType: 'sort',\n requestData: request.map(hashSortingColumnId)\n };\n dump(\n [`${this.frame.id}`, `${requestId}.json`],\n dumpData,\n this.frame.logger\n );\n dump(\n [`${this.frame.id}`, `${requestId}`, `${requestId}.json`],\n dumpData,\n this.frame.logger\n );\n\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} sort request ${requestId} started`\n );\n const t0 = performance.now();\n try {\n const boxed = AddonSymbol.pTableSort(this.table, requestId, request);\n return new PTable(this.frame, requestId, boxed);\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} sort request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} sort request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n dispose() {\n const requestId = ulid();\n dump(\n [`${this.frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'dispose'\n },\n this.frame.logger\n );\n\n try {\n AddonSymbol.pTableDispose(this.table);\n this.frame.logger?.('info', `PTable ${this.id} disposed`);\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} dispose request ${requestId} failed, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n [Symbol.dispose]() {\n this.dispose();\n }\n}\n","import type { PFrameInternal } from '@milaboratories/pl-model-middle-layer';\nimport { PFrame as PFrameImpl } from './wrapper';\n\nexport type PFrame = {\n new (\n spillPath: string,\n logger?: PFrameInternal.Logger\n ): PFrameInternal.PFrameV7;\n\n pprofDump: () => Promise<Uint8Array>;\n};\n\nexport const PFrame: PFrame = PFrameImpl;\n"],"names":["nodeFileUrl","_documentCurrentScript","nodeDirname","dirname","fileURLToPath","nodeRequire","createRequire","findAddon","gyp","AddonSymbol","resolve","fileExists","path","fs","ensureDirExists","fileOrDir","writeFile","filePath","data","tempPath","buffer","source","Readable","destination","Writable","hashColumnId","columnId","createHash","hashTableColumnId","tableId","hashFilterColumnId","filter","hashUniqueValuesRequestColumnId","request","hashSortingColumnId","sorting","hashJoinEntryColumnId","entry","type","hashCreateTableRequestColumnId","dump","relativePath","logger","relativeUri","part","fileDir","fileData","error","PFrame$1","spillPath","__publicField","ulid","_a","err","columnSpec","requestId","dataSource","wrappedDataSource","blobIds","t0","t1","humanizeDuration","blobId","blob","dataInfo","dumpData","boxed","PTable","_b","ops","_c","frame","id","table","columnIds","columnIndices","rowCount","result","_e","_d","PFrame","PFrameImpl"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../export/addon.ts","../export/dump.ts","../export/wrapper.ts","../export/export.ts"],"sourcesContent":["import { createRequire } from 'node:module';\nimport { dirname, resolve } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport gyp from '@mapbox/node-pre-gyp';\nimport type { AddonSymbol } from './addon-def';\n\nconst nodeFileUrl = import.meta.url;\nconst nodeDirname = dirname(fileURLToPath(nodeFileUrl));\nconst nodeRequire = createRequire(nodeFileUrl);\n\nconst { find: findAddon } = gyp;\n\n// Pre-gyp reads binary section from package.json and constructs a path to addon\n// https://github.com/mapbox/node-pre-gyp/blob/a541932680034f5de9e7365ef8d9a0d7a11cc1a9/lib/package.js#L35\n// Require calls dlopen under the hood\n// https://nodejs.org/api/process.html#processdlopenmodule-filename-flags\n// DLOpen then searches for napi_register_module_v1 in addon export table\n// https://github.com/search?q=repo%3Anodejs%2Fnode%20NAPI_MODULE_INITIALIZER&type=code\n// And neon exports napi_register_module_v1 from #[neon::main]\n// https://github.com/neon-bindings/neon/blob/b1728fa21e968ccde9611ac9955cf6d638be16e6/crates/neon/src/context/internal.rs#L76\nconst AddonSymbol = nodeRequire(\n findAddon(resolve(nodeDirname, '../package.json'))\n) as AddonSymbol;\n\nexport { AddonSymbol };\n","import { createHash } from 'node:crypto';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport { Readable, Writable } from 'node:stream';\nimport type { PFrameInternal } from '@milaboratories/pl-model-middle-layer';\nimport {\n PObjectId,\n PTableColumnId,\n PTableRecordFilter,\n PTableSorting,\n UniqueValuesRequest\n} from '@milaboratories/pl-model-common';\n\nasync function fileExists(path: string): Promise<boolean> {\n try {\n await fs.promises.access(path);\n return true;\n } catch {\n return false;\n }\n}\n\nasync function ensureDirExists(fileOrDir: string): Promise<void> {\n if (!(await fileExists(fileOrDir))) {\n await fs.promises.mkdir(fileOrDir, { recursive: true });\n }\n}\n\nasync function writeFile(\n filePath: string,\n data: string | Uint8Array\n): Promise<void> {\n const tempPath = `${filePath}.tmp`;\n if (await fileExists(tempPath)) {\n await fs.promises.rm(tempPath, { recursive: true });\n }\n\n const buffer = typeof data === 'string' ? Buffer.from(data, 'utf8') : data;\n const source = Readable.from(buffer);\n const destination = fs.createWriteStream(tempPath, { flags: 'wx' });\n await Readable.toWeb(source).pipeTo(Writable.toWeb(destination));\n\n await fs.promises.rename(tempPath, filePath);\n}\n\nexport function hashColumnId(columnId: PObjectId): PObjectId {\n return createHash('sha256').update(columnId).digest('hex') as PObjectId;\n}\n\nexport function hashTableColumnId(tableId: PTableColumnId): PTableColumnId {\n if (tableId.type === 'column') {\n return {\n ...tableId,\n id: hashColumnId(tableId.id)\n };\n }\n return tableId;\n}\n\nexport function hashFilterColumnId(\n filter: PTableRecordFilter\n): PTableRecordFilter {\n return {\n ...filter,\n column: hashTableColumnId(filter.column)\n };\n}\n\nexport function hashUniqueValuesRequestColumnId(\n request: UniqueValuesRequest\n): UniqueValuesRequest {\n return {\n ...request,\n columnId: hashColumnId(request.columnId),\n filters: request.filters.map(hashFilterColumnId)\n };\n}\n\nexport function hashSortingColumnId(sorting: PTableSorting): PTableSorting {\n return {\n ...sorting,\n column: hashTableColumnId(sorting.column)\n };\n}\n\nfunction hashJoinEntryColumnId(\n entry: PFrameInternal.JoinEntryV3\n): PFrameInternal.JoinEntryV3 {\n const type = entry.type;\n switch (type) {\n case 'column':\n return {\n ...entry,\n columnId: hashColumnId(entry.columnId)\n };\n case 'slicedColumn':\n return {\n ...entry,\n columnId: hashColumnId(entry.columnId),\n newId: hashColumnId(entry.newId)\n };\n case 'inlineColumn':\n return {\n ...entry,\n newId: hashColumnId(entry.newId)\n };\n case 'inner':\n return {\n ...entry,\n entries: entry.entries.map(hashJoinEntryColumnId)\n };\n case 'full':\n return {\n ...entry,\n entries: entry.entries.map(hashJoinEntryColumnId)\n };\n case 'outer':\n return {\n ...entry,\n primary: hashJoinEntryColumnId(entry.primary),\n secondary: entry.secondary.map(hashJoinEntryColumnId)\n };\n default:\n throw new Error(`Unsupported join entry type: ${type}`);\n }\n}\n\nexport function hashCreateTableRequestColumnId(\n request: PFrameInternal.CreateTableRequestV3\n): PFrameInternal.CreateTableRequestV3 {\n return {\n ...request,\n src: hashJoinEntryColumnId(request.src),\n filters: request.filters.map(hashFilterColumnId)\n };\n}\n\nexport async function dump(\n relativePath: string[],\n data: { [key: string]: Object } | Uint8Array,\n logger?: PFrameInternal.Logger\n): Promise<void> {\n if (!process.env.MI_DUMP_PFRAMES_RS) return;\n try {\n const relativeUri = relativePath.map((part) => encodeURIComponent(part));\n const fileDir = path.join(\n process.env.MI_DUMP_PFRAMES_RS,\n ...relativeUri.slice(0, -1)\n );\n await ensureDirExists(fileDir);\n\n const filePath = path.join(process.env.MI_DUMP_PFRAMES_RS, ...relativeUri);\n const fileData = ArrayBuffer.isView(data)\n ? (data as Uint8Array)\n : JSON.stringify(data, null, 2);\n await writeFile(filePath, fileData);\n } catch (error: unknown) {\n logger?.('warn', `error while dumping PFrames data: ${error}`);\n }\n}\n","import humanizeDuration from 'humanize-duration';\nimport { ulid } from 'ulid';\nimport {\n DataInfo,\n PColumnInfo,\n PColumnSpec,\n PObjectId,\n PTableColumnId,\n PTableColumnSpec,\n PTableRecordFilter,\n PTableShape,\n PTableSorting,\n PTableVector,\n TableRange,\n UniqueValuesRequest,\n UniqueValuesResponse\n} from '@milaboratories/pl-model-common';\nimport type { PFrameInternal } from '@milaboratories/pl-model-middle-layer';\nimport type { NodeFrameSymbol, NodeTableSymbol } from './addon-def';\nimport { AddonSymbol } from './addon';\nimport {\n hashColumnId,\n dump,\n hashTableColumnId,\n hashFilterColumnId,\n hashUniqueValuesRequestColumnId,\n hashSortingColumnId,\n hashCreateTableRequestColumnId\n} from './dump';\n\nexport class PFrame implements PFrameInternal.PFrameV7 {\n public readonly id: string = ulid();\n private readonly frame: NodeFrameSymbol;\n\n static async pprofDump(): Promise<Uint8Array> {\n return AddonSymbol.pprofDump();\n }\n\n constructor(\n spillPath: string,\n public readonly logger?: PFrameInternal.Logger\n ) {\n dump(\n [`${this.id}`, `${this.id}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'create'\n },\n this.logger\n );\n\n try {\n this.frame = AddonSymbol.pFrameCreate(spillPath, logger);\n this.logger?.('info', `PFrame ${this.id} created`);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} creation failed, ` +\n `logger: ${logger?.toString()}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n addColumnSpec(columnId: PObjectId, columnSpec: PColumnSpec): void {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'addColumnSpec',\n requestData: {\n columnId: hashColumnId(columnId),\n columnSpec\n }\n },\n this.logger\n );\n\n dump(\n [`${this.id}`, `data`, `${hashColumnId(columnId)}.spec`],\n {\n ...columnSpec\n },\n this.logger\n );\n\n try {\n return AddonSymbol.pFrameAddColumnSpec(this.frame, columnId, columnSpec);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} addColumnSpec request ${requestId} failed, ` +\n `columnId: ${JSON.stringify(columnId)}, ` +\n `columnSpec: ${JSON.stringify(columnSpec)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n setDataSource(dataSource: PFrameInternal.PFrameDataSource): void {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'setDataSource'\n },\n this.logger\n );\n\n const wrappedDataSource = {\n preloadBlob: async (\n blobIds: PFrameInternal.PFrameBlobId[]\n ): Promise<void> => {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'preloadBlob',\n requestData: {\n blobIds\n }\n },\n this.logger\n );\n\n const t0 = performance.now();\n try {\n return await dataSource.preloadBlob(blobIds);\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} preloaded ${blobIds.length} blobs ${JSON.stringify(blobIds)}, took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n },\n resolveBlobContent: async (\n blobId: PFrameInternal.PFrameBlobId\n ): Promise<Uint8Array> => {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'resolveBlobContent',\n requestData: {\n blobId\n }\n },\n this.logger\n );\n\n const blob = await dataSource.resolveBlobContent(blobId);\n this.logger?.('info', `PFrame ${this.id} resolved blob ${blobId}`);\n dump([`${this.id}`, `data`, `${blobId}`], blob, this.logger);\n\n return blob;\n }\n };\n\n try {\n return AddonSymbol.pFrameSetDataSource(this.frame, wrappedDataSource);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} setDataSource request ${requestId} failed, ` +\n `dataSource: ${dataSource.toString()}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n setColumnData(\n columnId: PObjectId,\n dataInfo: DataInfo<PFrameInternal.PFrameBlobId>\n ): void {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'setColumnData',\n requestData: {\n columnId: hashColumnId(columnId),\n dataInfo\n }\n },\n this.logger\n );\n\n dump(\n [`${this.id}`, `data`, `${hashColumnId(columnId)}.datainfo`],\n {\n ...dataInfo\n },\n this.logger\n );\n\n try {\n return AddonSymbol.pFrameSetColumnData(this.frame, columnId, dataInfo);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} setColumnData request ${requestId} failed, ` +\n `columnId: ${JSON.stringify(columnId)}, ` +\n `dataInfo: ${JSON.stringify(dataInfo)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n dispose(): void {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'dispose'\n },\n this.logger\n );\n\n try {\n AddonSymbol.pFrameDispose(this.frame);\n this.logger?.('info', `PFrame ${this.id} disposed`);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} dispose request ${requestId} failed, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n [Symbol.dispose](): void {\n this.dispose();\n }\n\n async findColumns(\n request: PFrameInternal.FindColumnsRequest\n ): Promise<PFrameInternal.FindColumnsResponse> {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'findColumns',\n requestData: request\n },\n this.logger\n );\n\n const t0 = performance.now();\n try {\n return await AddonSymbol.pFrameFindColumns(this.frame, request);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} findColumns request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} findColumns request ${requestId} took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n async deleteColumn(\n request: PFrameInternal.DeleteColumnFromColumnsRequest\n ): Promise<PFrameInternal.DeleteColumnFromColumnsResponse> {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'deleteColumn',\n requestData: request\n },\n this.logger\n );\n\n const t0 = performance.now();\n try {\n return await AddonSymbol.pFrameDeleteColumn(this.frame, request);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} deleteColumn request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} deleteColumn request ${requestId} took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n async getColumnSpec(columnId: PObjectId): Promise<PColumnSpec> {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getColumnSpec',\n requestData: {\n columnId: hashColumnId(columnId)\n }\n },\n this.logger\n );\n\n const t0 = performance.now();\n try {\n return await AddonSymbol.pFrameGetColumnSpec(this.frame, columnId);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} getColumnSpec request ${requestId} failed, ` +\n `columnId: ${JSON.stringify(columnId)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} getColumnSpec request ${requestId} took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n async listColumns(): Promise<PColumnInfo[]> {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'listColumns'\n },\n this.logger\n );\n\n const t0 = performance.now();\n try {\n return await AddonSymbol.pFrameListColumns(this.frame);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} listColumns request ${requestId} failed, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} listColumns request ${requestId} took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n createTable(\n request: PFrameInternal.CreateTableRequestV3\n ): PFrameInternal.PTableV5 {\n const requestId = ulid();\n const dumpData = {\n timeStamp: Date.now(),\n requestType: 'createTable',\n requestData: hashCreateTableRequestColumnId(request)\n };\n dump([`${this.id}`, `${requestId}.json`], dumpData, this.logger);\n dump(\n [`${this.id}`, `${requestId}`, `${requestId}.json`],\n dumpData,\n this.logger\n );\n\n this.logger?.(\n 'info',\n `PFrame ${this.id} createTable request ${requestId} started`\n );\n const t0 = performance.now();\n try {\n const boxed = AddonSymbol.pFrameCreateTable(\n this.frame,\n requestId,\n request\n );\n return new PTable(this, requestId, boxed);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} createTable request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} createTable request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n async getUniqueValues(\n request: UniqueValuesRequest,\n ops?: {\n signal?: AbortSignal;\n }\n ): Promise<UniqueValuesResponse> {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getUniqueValues',\n requestData: hashUniqueValuesRequestColumnId(request)\n },\n this.logger\n );\n\n this.logger?.(\n 'info',\n `PFrame ${this.id} getUniqueValues request ${requestId} started`\n );\n const t0 = performance.now();\n try {\n ops?.signal?.throwIfAborted();\n return await AddonSymbol.pFrameGetUniqueValues(\n this.frame,\n requestId,\n request,\n ops?.signal\n );\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} getUniqueValues request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} getUniqueValues request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n}\n\nclass PTable implements PFrameInternal.PTableV5 {\n constructor(\n private readonly frame: PFrame,\n public readonly id: string,\n private readonly table: NodeTableSymbol\n ) {\n this.frame.logger?.('info', `PTable ${this.id} created`);\n }\n\n getSpec(): PTableColumnSpec[] {\n const requestId = ulid();\n dump(\n [`${this.frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getSpec'\n },\n this.frame.logger\n );\n\n try {\n return AddonSymbol.pTableGetSpec(this.table);\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} getSpec request ${requestId} failed, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n getColumnIndices(columnIds: PTableColumnId[]): number[] {\n const requestId = ulid();\n dump(\n [`${this.frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getColumnIndices',\n requestData: {\n columnIds: columnIds.map(hashTableColumnId)\n }\n },\n this.frame.logger\n );\n\n try {\n return AddonSymbol.pTableGetColumnIndices(this.table, columnIds);\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} getColumnIndices request ${requestId} failed, ` +\n `columnIds: ${JSON.stringify(columnIds)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n async getShape(ops?: { signal?: AbortSignal }): Promise<PTableShape> {\n const requestId = ulid();\n dump(\n [`${this.frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getShape'\n },\n this.frame.logger\n );\n\n try {\n return await AddonSymbol.pTableGetShape(this.table, ops?.signal);\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} getShape request ${requestId} failed, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n async getData(\n columnIndices: number[],\n ops?: {\n range?: TableRange | undefined;\n signal?: AbortSignal | undefined;\n }\n ): Promise<PTableVector[]> {\n const requestId = ulid();\n dump(\n [`${this.frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getData',\n requestData: {\n columnIndices,\n range: ops?.range ?? null\n }\n },\n this.frame.logger\n );\n\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} getData request ${requestId} started`\n );\n let rowCount = 0;\n const t0 = performance.now();\n try {\n ops?.signal?.throwIfAborted();\n const result = await AddonSymbol.pTableGetData(\n this.table,\n requestId,\n columnIndices,\n ops?.range,\n ops?.signal\n );\n rowCount = result[0].data.length;\n return result;\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} getData request ${requestId} failed, ` +\n `columnIndices: ${JSON.stringify(columnIndices)}, ` +\n `range: ${ops?.range ? JSON.stringify(ops.range) : undefined}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} getData request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))} (${rowCount} rows)`\n );\n }\n }\n\n filter(request: PTableRecordFilter[]): PFrameInternal.PTableV5 {\n const requestId = ulid();\n const dumpData = {\n timeStamp: Date.now(),\n table: this.id,\n requestType: 'filter',\n requestData: {\n filters: request.map(hashFilterColumnId)\n }\n };\n dump(\n [`${this.frame.id}`, `${requestId}.json`],\n dumpData,\n this.frame.logger\n );\n dump(\n [`${this.frame.id}`, `${requestId}`, `${requestId}.json`],\n dumpData,\n this.frame.logger\n );\n\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} filter request ${requestId} started`\n );\n const t0 = performance.now();\n try {\n const boxed = AddonSymbol.pTableFilter(this.table, requestId, request);\n return new PTable(this.frame, requestId, boxed);\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} filter request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} filter request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n sort(request: PTableSorting[]): PFrameInternal.PTableV5 {\n const requestId = ulid();\n const dumpData = {\n timeStamp: Date.now(),\n table: this.id,\n requestType: 'sort',\n requestData: request.map(hashSortingColumnId)\n };\n dump(\n [`${this.frame.id}`, `${requestId}.json`],\n dumpData,\n this.frame.logger\n );\n dump(\n [`${this.frame.id}`, `${requestId}`, `${requestId}.json`],\n dumpData,\n this.frame.logger\n );\n\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} sort request ${requestId} started`\n );\n const t0 = performance.now();\n try {\n const boxed = AddonSymbol.pTableSort(this.table, requestId, request);\n return new PTable(this.frame, requestId, boxed);\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} sort request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} sort request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n dispose() {\n const requestId = ulid();\n dump(\n [`${this.frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'dispose'\n },\n this.frame.logger\n );\n\n try {\n AddonSymbol.pTableDispose(this.table);\n this.frame.logger?.('info', `PTable ${this.id} disposed`);\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} dispose request ${requestId} failed, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n [Symbol.dispose]() {\n this.dispose();\n }\n}\n","import type { PFrameInternal } from '@milaboratories/pl-model-middle-layer';\nimport { PFrame as PFrameImpl } from './wrapper';\n\nexport type PFrame = {\n new (\n spillPath: string,\n logger?: PFrameInternal.Logger\n ): PFrameInternal.PFrameV7;\n\n pprofDump: () => Promise<Uint8Array>;\n};\n\nexport const PFrame: PFrame = PFrameImpl;\n"],"names":["nodeFileUrl","_documentCurrentScript","nodeDirname","dirname","fileURLToPath","nodeRequire","createRequire","findAddon","gyp","AddonSymbol","resolve","fileExists","path","fs","ensureDirExists","fileOrDir","writeFile","filePath","data","tempPath","buffer","source","Readable","destination","Writable","hashColumnId","columnId","createHash","hashTableColumnId","tableId","hashFilterColumnId","filter","hashUniqueValuesRequestColumnId","request","hashSortingColumnId","sorting","hashJoinEntryColumnId","entry","type","hashCreateTableRequestColumnId","dump","relativePath","logger","relativeUri","part","fileDir","fileData","error","PFrame$1","spillPath","__publicField","ulid","_a","err","columnSpec","requestId","dataSource","wrappedDataSource","blobIds","t0","t1","humanizeDuration","blobId","blob","dataInfo","dumpData","boxed","PTable","_b","ops","_c","frame","id","table","columnIds","columnIndices","rowCount","result","_e","_d","PFrame","PFrameImpl"],"mappings":"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"}
@@ -181,7 +181,7 @@ ${s.toString()}`
181
181
  },
182
182
  this.logger
183
183
  );
184
- let r = {
184
+ const r = {
185
185
  preloadBlob: async (s) => {
186
186
  var n;
187
187
  const a = l();
@@ -198,7 +198,7 @@ ${s.toString()}`
198
198
  );
199
199
  const m = performance.now();
200
200
  try {
201
- return t.preloadBlob(s);
201
+ return await t.preloadBlob(s);
202
202
  } finally {
203
203
  const h = performance.now();
204
204
  (n = this.logger) == null || n.call(
@@ -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 DataInfo,\n PColumnInfo,\n PColumnSpec,\n PObjectId,\n PTableColumnId,\n PTableColumnSpec,\n PTableRecordFilter,\n PTableShape,\n PTableSorting,\n PTableVector,\n TableRange,\n UniqueValuesRequest,\n UniqueValuesResponse\n} from '@milaboratories/pl-model-common';\nimport type { PFrameInternal } from '@milaboratories/pl-model-middle-layer';\nimport type { NodeFrameSymbol, NodeTableSymbol } from './addon-def';\nimport { AddonSymbol } from './addon';\nimport {\n hashColumnId,\n dump,\n hashTableColumnId,\n hashFilterColumnId,\n hashUniqueValuesRequestColumnId,\n hashSortingColumnId,\n hashCreateTableRequestColumnId\n} from './dump';\n\nexport class PFrame implements PFrameInternal.PFrameV7 {\n public readonly id: string = ulid();\n private readonly frame: NodeFrameSymbol;\n\n static async pprofDump(): Promise<Uint8Array> {\n return AddonSymbol.pprofDump();\n }\n\n constructor(\n spillPath: string,\n public readonly logger?: PFrameInternal.Logger\n ) {\n dump(\n [`${this.id}`, `${this.id}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'create'\n },\n this.logger\n );\n\n try {\n this.frame = AddonSymbol.pFrameCreate(spillPath, logger);\n this.logger?.('info', `PFrame ${this.id} created`);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} creation failed, ` +\n `logger: ${logger?.toString()}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n addColumnSpec(columnId: PObjectId, columnSpec: PColumnSpec): void {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'addColumnSpec',\n requestData: {\n columnId: hashColumnId(columnId),\n columnSpec\n }\n },\n this.logger\n );\n\n dump(\n [`${this.id}`, `data`, `${hashColumnId(columnId)}.spec`],\n {\n ...columnSpec\n },\n this.logger\n );\n\n try {\n return AddonSymbol.pFrameAddColumnSpec(this.frame, columnId, columnSpec);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} addColumnSpec request ${requestId} failed, ` +\n `columnId: ${JSON.stringify(columnId)}, ` +\n `columnSpec: ${JSON.stringify(columnSpec)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n setDataSource(dataSource: PFrameInternal.PFrameDataSource): void {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'setDataSource'\n },\n this.logger\n );\n\n let wrappedDataSource = {\n preloadBlob: async (\n blobIds: PFrameInternal.PFrameBlobId[]\n ): Promise<void> => {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'preloadBlob',\n requestData: {\n blobIds\n }\n },\n this.logger\n );\n\n const t0 = performance.now();\n try {\n return dataSource.preloadBlob(blobIds);\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} preloaded ${blobIds.length} blobs ${JSON.stringify(blobIds)}, took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n },\n resolveBlobContent: async (\n blobId: PFrameInternal.PFrameBlobId\n ): Promise<Uint8Array> => {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'resolveBlobContent',\n requestData: {\n blobId\n }\n },\n this.logger\n );\n\n const blob = await dataSource.resolveBlobContent(blobId);\n this.logger?.('info', `PFrame ${this.id} resolved blob ${blobId}`);\n dump([`${this.id}`, `data`, `${blobId}`], blob, this.logger);\n\n return blob;\n }\n };\n\n try {\n return AddonSymbol.pFrameSetDataSource(this.frame, wrappedDataSource);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} setDataSource request ${requestId} failed, ` +\n `dataSource: ${dataSource.toString()}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n setColumnData(\n columnId: PObjectId,\n dataInfo: DataInfo<PFrameInternal.PFrameBlobId>\n ): void {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'setColumnData',\n requestData: {\n columnId: hashColumnId(columnId),\n dataInfo\n }\n },\n this.logger\n );\n\n dump(\n [`${this.id}`, `data`, `${hashColumnId(columnId)}.datainfo`],\n {\n ...dataInfo\n },\n this.logger\n );\n\n try {\n return AddonSymbol.pFrameSetColumnData(this.frame, columnId, dataInfo);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} setColumnData request ${requestId} failed, ` +\n `columnId: ${JSON.stringify(columnId)}, ` +\n `dataInfo: ${JSON.stringify(dataInfo)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n dispose(): void {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'dispose'\n },\n this.logger\n );\n\n try {\n AddonSymbol.pFrameDispose(this.frame);\n this.logger?.('info', `PFrame ${this.id} disposed`);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} dispose request ${requestId} failed, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n [Symbol.dispose](): void {\n this.dispose();\n }\n\n async findColumns(\n request: PFrameInternal.FindColumnsRequest\n ): Promise<PFrameInternal.FindColumnsResponse> {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'findColumns',\n requestData: request\n },\n this.logger\n );\n\n const t0 = performance.now();\n try {\n return await AddonSymbol.pFrameFindColumns(this.frame, request);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} findColumns request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} findColumns request ${requestId} took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n async deleteColumn(\n request: PFrameInternal.DeleteColumnFromColumnsRequest\n ): Promise<PFrameInternal.DeleteColumnFromColumnsResponse> {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'deleteColumn',\n requestData: request\n },\n this.logger\n );\n\n const t0 = performance.now();\n try {\n return await AddonSymbol.pFrameDeleteColumn(this.frame, request);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} deleteColumn request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} deleteColumn request ${requestId} took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n async getColumnSpec(columnId: PObjectId): Promise<PColumnSpec> {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getColumnSpec',\n requestData: {\n columnId: hashColumnId(columnId)\n }\n },\n this.logger\n );\n\n const t0 = performance.now();\n try {\n return await AddonSymbol.pFrameGetColumnSpec(this.frame, columnId);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} getColumnSpec request ${requestId} failed, ` +\n `columnId: ${JSON.stringify(columnId)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} getColumnSpec request ${requestId} took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n async listColumns(): Promise<PColumnInfo[]> {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'listColumns'\n },\n this.logger\n );\n\n const t0 = performance.now();\n try {\n return await AddonSymbol.pFrameListColumns(this.frame);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} listColumns request ${requestId} failed, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} listColumns request ${requestId} took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n createTable(\n request: PFrameInternal.CreateTableRequestV3\n ): PFrameInternal.PTableV5 {\n const requestId = ulid();\n const dumpData = {\n timeStamp: Date.now(),\n requestType: 'createTable',\n requestData: hashCreateTableRequestColumnId(request)\n };\n dump([`${this.id}`, `${requestId}.json`], dumpData, this.logger);\n dump(\n [`${this.id}`, `${requestId}`, `${requestId}.json`],\n dumpData,\n this.logger\n );\n\n this.logger?.(\n 'info',\n `PFrame ${this.id} createTable request ${requestId} started`\n );\n const t0 = performance.now();\n try {\n const boxed = AddonSymbol.pFrameCreateTable(\n this.frame,\n requestId,\n request\n );\n return new PTable(this, requestId, boxed);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} createTable request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} createTable request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n async getUniqueValues(\n request: UniqueValuesRequest,\n ops?: {\n signal?: AbortSignal;\n }\n ): Promise<UniqueValuesResponse> {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getUniqueValues',\n requestData: hashUniqueValuesRequestColumnId(request)\n },\n this.logger\n );\n\n this.logger?.(\n 'info',\n `PFrame ${this.id} getUniqueValues request ${requestId} started`\n );\n const t0 = performance.now();\n try {\n ops?.signal?.throwIfAborted();\n return await AddonSymbol.pFrameGetUniqueValues(\n this.frame,\n requestId,\n request,\n ops?.signal\n );\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} getUniqueValues request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} getUniqueValues request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n}\n\nclass PTable implements PFrameInternal.PTableV5 {\n constructor(\n private readonly frame: PFrame,\n public readonly id: string,\n private readonly table: NodeTableSymbol\n ) {\n this.frame.logger?.('info', `PTable ${this.id} created`);\n }\n\n getSpec(): PTableColumnSpec[] {\n const requestId = ulid();\n dump(\n [`${this.frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getSpec'\n },\n this.frame.logger\n );\n\n try {\n return AddonSymbol.pTableGetSpec(this.table);\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} getSpec request ${requestId} failed, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n getColumnIndices(columnIds: PTableColumnId[]): number[] {\n const requestId = ulid();\n dump(\n [`${this.frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getColumnIndices',\n requestData: {\n columnIds: columnIds.map(hashTableColumnId)\n }\n },\n this.frame.logger\n );\n\n try {\n return AddonSymbol.pTableGetColumnIndices(this.table, columnIds);\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} getColumnIndices request ${requestId} failed, ` +\n `columnIds: ${JSON.stringify(columnIds)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n async getShape(ops?: { signal?: AbortSignal }): Promise<PTableShape> {\n const requestId = ulid();\n dump(\n [`${this.frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getShape'\n },\n this.frame.logger\n );\n\n try {\n return await AddonSymbol.pTableGetShape(this.table, ops?.signal);\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} getShape request ${requestId} failed, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n async getData(\n columnIndices: number[],\n ops?: {\n range?: TableRange | undefined;\n signal?: AbortSignal | undefined;\n }\n ): Promise<PTableVector[]> {\n const requestId = ulid();\n dump(\n [`${this.frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getData',\n requestData: {\n columnIndices,\n range: ops?.range ?? null\n }\n },\n this.frame.logger\n );\n\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} getData request ${requestId} started`\n );\n let rowCount = 0;\n const t0 = performance.now();\n try {\n ops?.signal?.throwIfAborted();\n const result = await AddonSymbol.pTableGetData(\n this.table,\n requestId,\n columnIndices,\n ops?.range,\n ops?.signal\n );\n rowCount = result[0].data.length;\n return result;\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} getData request ${requestId} failed, ` +\n `columnIndices: ${JSON.stringify(columnIndices)}, ` +\n `range: ${ops?.range ? JSON.stringify(ops.range) : undefined}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} getData request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))} (${rowCount} rows)`\n );\n }\n }\n\n filter(request: PTableRecordFilter[]): PFrameInternal.PTableV5 {\n const requestId = ulid();\n const dumpData = {\n timeStamp: Date.now(),\n table: this.id,\n requestType: 'filter',\n requestData: {\n filters: request.map(hashFilterColumnId)\n }\n };\n dump(\n [`${this.frame.id}`, `${requestId}.json`],\n dumpData,\n this.frame.logger\n );\n dump(\n [`${this.frame.id}`, `${requestId}`, `${requestId}.json`],\n dumpData,\n this.frame.logger\n );\n\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} filter request ${requestId} started`\n );\n const t0 = performance.now();\n try {\n const boxed = AddonSymbol.pTableFilter(this.table, requestId, request);\n return new PTable(this.frame, requestId, boxed);\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} filter request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} filter request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n sort(request: PTableSorting[]): PFrameInternal.PTableV5 {\n const requestId = ulid();\n const dumpData = {\n timeStamp: Date.now(),\n table: this.id,\n requestType: 'sort',\n requestData: request.map(hashSortingColumnId)\n };\n dump(\n [`${this.frame.id}`, `${requestId}.json`],\n dumpData,\n this.frame.logger\n );\n dump(\n [`${this.frame.id}`, `${requestId}`, `${requestId}.json`],\n dumpData,\n this.frame.logger\n );\n\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} sort request ${requestId} started`\n );\n const t0 = performance.now();\n try {\n const boxed = AddonSymbol.pTableSort(this.table, requestId, request);\n return new PTable(this.frame, requestId, boxed);\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} sort request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} sort request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n dispose() {\n const requestId = ulid();\n dump(\n [`${this.frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'dispose'\n },\n this.frame.logger\n );\n\n try {\n AddonSymbol.pTableDispose(this.table);\n this.frame.logger?.('info', `PTable ${this.id} disposed`);\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} dispose request ${requestId} failed, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n [Symbol.dispose]() {\n this.dispose();\n }\n}\n","import type { PFrameInternal } from '@milaboratories/pl-model-middle-layer';\nimport { PFrame as PFrameImpl } from './wrapper';\n\nexport type PFrame = {\n new (\n spillPath: string,\n logger?: PFrameInternal.Logger\n ): PFrameInternal.PFrameV7;\n\n pprofDump: () => Promise<Uint8Array>;\n};\n\nexport const PFrame: PFrame = PFrameImpl;\n"],"names":["nodeFileUrl","nodeDirname","dirname","fileURLToPath","nodeRequire","createRequire","findAddon","gyp","AddonSymbol","resolve","fileExists","path","fs","ensureDirExists","fileOrDir","writeFile","filePath","data","tempPath","buffer","source","Readable","destination","Writable","hashColumnId","columnId","createHash","hashTableColumnId","tableId","hashFilterColumnId","filter","hashUniqueValuesRequestColumnId","request","hashSortingColumnId","sorting","hashJoinEntryColumnId","entry","type","hashCreateTableRequestColumnId","dump","relativePath","logger","relativeUri","part","fileDir","fileData","error","PFrame$1","spillPath","__publicField","ulid","_a","err","columnSpec","requestId","dataSource","wrappedDataSource","blobIds","t0","t1","humanizeDuration","blobId","blob","dataInfo","dumpData","boxed","PTable","_b","ops","_c","frame","id","table","columnIds","columnIndices","rowCount","result","_e","_d","PFrame","PFrameImpl"],"mappings":"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"}
1
+ {"version":3,"file":"index.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 DataInfo,\n PColumnInfo,\n PColumnSpec,\n PObjectId,\n PTableColumnId,\n PTableColumnSpec,\n PTableRecordFilter,\n PTableShape,\n PTableSorting,\n PTableVector,\n TableRange,\n UniqueValuesRequest,\n UniqueValuesResponse\n} from '@milaboratories/pl-model-common';\nimport type { PFrameInternal } from '@milaboratories/pl-model-middle-layer';\nimport type { NodeFrameSymbol, NodeTableSymbol } from './addon-def';\nimport { AddonSymbol } from './addon';\nimport {\n hashColumnId,\n dump,\n hashTableColumnId,\n hashFilterColumnId,\n hashUniqueValuesRequestColumnId,\n hashSortingColumnId,\n hashCreateTableRequestColumnId\n} from './dump';\n\nexport class PFrame implements PFrameInternal.PFrameV7 {\n public readonly id: string = ulid();\n private readonly frame: NodeFrameSymbol;\n\n static async pprofDump(): Promise<Uint8Array> {\n return AddonSymbol.pprofDump();\n }\n\n constructor(\n spillPath: string,\n public readonly logger?: PFrameInternal.Logger\n ) {\n dump(\n [`${this.id}`, `${this.id}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'create'\n },\n this.logger\n );\n\n try {\n this.frame = AddonSymbol.pFrameCreate(spillPath, logger);\n this.logger?.('info', `PFrame ${this.id} created`);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} creation failed, ` +\n `logger: ${logger?.toString()}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n addColumnSpec(columnId: PObjectId, columnSpec: PColumnSpec): void {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'addColumnSpec',\n requestData: {\n columnId: hashColumnId(columnId),\n columnSpec\n }\n },\n this.logger\n );\n\n dump(\n [`${this.id}`, `data`, `${hashColumnId(columnId)}.spec`],\n {\n ...columnSpec\n },\n this.logger\n );\n\n try {\n return AddonSymbol.pFrameAddColumnSpec(this.frame, columnId, columnSpec);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} addColumnSpec request ${requestId} failed, ` +\n `columnId: ${JSON.stringify(columnId)}, ` +\n `columnSpec: ${JSON.stringify(columnSpec)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n setDataSource(dataSource: PFrameInternal.PFrameDataSource): void {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'setDataSource'\n },\n this.logger\n );\n\n const wrappedDataSource = {\n preloadBlob: async (\n blobIds: PFrameInternal.PFrameBlobId[]\n ): Promise<void> => {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'preloadBlob',\n requestData: {\n blobIds\n }\n },\n this.logger\n );\n\n const t0 = performance.now();\n try {\n return await dataSource.preloadBlob(blobIds);\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} preloaded ${blobIds.length} blobs ${JSON.stringify(blobIds)}, took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n },\n resolveBlobContent: async (\n blobId: PFrameInternal.PFrameBlobId\n ): Promise<Uint8Array> => {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'resolveBlobContent',\n requestData: {\n blobId\n }\n },\n this.logger\n );\n\n const blob = await dataSource.resolveBlobContent(blobId);\n this.logger?.('info', `PFrame ${this.id} resolved blob ${blobId}`);\n dump([`${this.id}`, `data`, `${blobId}`], blob, this.logger);\n\n return blob;\n }\n };\n\n try {\n return AddonSymbol.pFrameSetDataSource(this.frame, wrappedDataSource);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} setDataSource request ${requestId} failed, ` +\n `dataSource: ${dataSource.toString()}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n setColumnData(\n columnId: PObjectId,\n dataInfo: DataInfo<PFrameInternal.PFrameBlobId>\n ): void {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'setColumnData',\n requestData: {\n columnId: hashColumnId(columnId),\n dataInfo\n }\n },\n this.logger\n );\n\n dump(\n [`${this.id}`, `data`, `${hashColumnId(columnId)}.datainfo`],\n {\n ...dataInfo\n },\n this.logger\n );\n\n try {\n return AddonSymbol.pFrameSetColumnData(this.frame, columnId, dataInfo);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} setColumnData request ${requestId} failed, ` +\n `columnId: ${JSON.stringify(columnId)}, ` +\n `dataInfo: ${JSON.stringify(dataInfo)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n dispose(): void {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'dispose'\n },\n this.logger\n );\n\n try {\n AddonSymbol.pFrameDispose(this.frame);\n this.logger?.('info', `PFrame ${this.id} disposed`);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} dispose request ${requestId} failed, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n [Symbol.dispose](): void {\n this.dispose();\n }\n\n async findColumns(\n request: PFrameInternal.FindColumnsRequest\n ): Promise<PFrameInternal.FindColumnsResponse> {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'findColumns',\n requestData: request\n },\n this.logger\n );\n\n const t0 = performance.now();\n try {\n return await AddonSymbol.pFrameFindColumns(this.frame, request);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} findColumns request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} findColumns request ${requestId} took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n async deleteColumn(\n request: PFrameInternal.DeleteColumnFromColumnsRequest\n ): Promise<PFrameInternal.DeleteColumnFromColumnsResponse> {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'deleteColumn',\n requestData: request\n },\n this.logger\n );\n\n const t0 = performance.now();\n try {\n return await AddonSymbol.pFrameDeleteColumn(this.frame, request);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} deleteColumn request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} deleteColumn request ${requestId} took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n async getColumnSpec(columnId: PObjectId): Promise<PColumnSpec> {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getColumnSpec',\n requestData: {\n columnId: hashColumnId(columnId)\n }\n },\n this.logger\n );\n\n const t0 = performance.now();\n try {\n return await AddonSymbol.pFrameGetColumnSpec(this.frame, columnId);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} getColumnSpec request ${requestId} failed, ` +\n `columnId: ${JSON.stringify(columnId)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} getColumnSpec request ${requestId} took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n async listColumns(): Promise<PColumnInfo[]> {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'listColumns'\n },\n this.logger\n );\n\n const t0 = performance.now();\n try {\n return await AddonSymbol.pFrameListColumns(this.frame);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} listColumns request ${requestId} failed, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} listColumns request ${requestId} took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n createTable(\n request: PFrameInternal.CreateTableRequestV3\n ): PFrameInternal.PTableV5 {\n const requestId = ulid();\n const dumpData = {\n timeStamp: Date.now(),\n requestType: 'createTable',\n requestData: hashCreateTableRequestColumnId(request)\n };\n dump([`${this.id}`, `${requestId}.json`], dumpData, this.logger);\n dump(\n [`${this.id}`, `${requestId}`, `${requestId}.json`],\n dumpData,\n this.logger\n );\n\n this.logger?.(\n 'info',\n `PFrame ${this.id} createTable request ${requestId} started`\n );\n const t0 = performance.now();\n try {\n const boxed = AddonSymbol.pFrameCreateTable(\n this.frame,\n requestId,\n request\n );\n return new PTable(this, requestId, boxed);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} createTable request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} createTable request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n async getUniqueValues(\n request: UniqueValuesRequest,\n ops?: {\n signal?: AbortSignal;\n }\n ): Promise<UniqueValuesResponse> {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getUniqueValues',\n requestData: hashUniqueValuesRequestColumnId(request)\n },\n this.logger\n );\n\n this.logger?.(\n 'info',\n `PFrame ${this.id} getUniqueValues request ${requestId} started`\n );\n const t0 = performance.now();\n try {\n ops?.signal?.throwIfAborted();\n return await AddonSymbol.pFrameGetUniqueValues(\n this.frame,\n requestId,\n request,\n ops?.signal\n );\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} getUniqueValues request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} getUniqueValues request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n}\n\nclass PTable implements PFrameInternal.PTableV5 {\n constructor(\n private readonly frame: PFrame,\n public readonly id: string,\n private readonly table: NodeTableSymbol\n ) {\n this.frame.logger?.('info', `PTable ${this.id} created`);\n }\n\n getSpec(): PTableColumnSpec[] {\n const requestId = ulid();\n dump(\n [`${this.frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getSpec'\n },\n this.frame.logger\n );\n\n try {\n return AddonSymbol.pTableGetSpec(this.table);\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} getSpec request ${requestId} failed, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n getColumnIndices(columnIds: PTableColumnId[]): number[] {\n const requestId = ulid();\n dump(\n [`${this.frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getColumnIndices',\n requestData: {\n columnIds: columnIds.map(hashTableColumnId)\n }\n },\n this.frame.logger\n );\n\n try {\n return AddonSymbol.pTableGetColumnIndices(this.table, columnIds);\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} getColumnIndices request ${requestId} failed, ` +\n `columnIds: ${JSON.stringify(columnIds)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n async getShape(ops?: { signal?: AbortSignal }): Promise<PTableShape> {\n const requestId = ulid();\n dump(\n [`${this.frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getShape'\n },\n this.frame.logger\n );\n\n try {\n return await AddonSymbol.pTableGetShape(this.table, ops?.signal);\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} getShape request ${requestId} failed, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n async getData(\n columnIndices: number[],\n ops?: {\n range?: TableRange | undefined;\n signal?: AbortSignal | undefined;\n }\n ): Promise<PTableVector[]> {\n const requestId = ulid();\n dump(\n [`${this.frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getData',\n requestData: {\n columnIndices,\n range: ops?.range ?? null\n }\n },\n this.frame.logger\n );\n\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} getData request ${requestId} started`\n );\n let rowCount = 0;\n const t0 = performance.now();\n try {\n ops?.signal?.throwIfAborted();\n const result = await AddonSymbol.pTableGetData(\n this.table,\n requestId,\n columnIndices,\n ops?.range,\n ops?.signal\n );\n rowCount = result[0].data.length;\n return result;\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} getData request ${requestId} failed, ` +\n `columnIndices: ${JSON.stringify(columnIndices)}, ` +\n `range: ${ops?.range ? JSON.stringify(ops.range) : undefined}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} getData request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))} (${rowCount} rows)`\n );\n }\n }\n\n filter(request: PTableRecordFilter[]): PFrameInternal.PTableV5 {\n const requestId = ulid();\n const dumpData = {\n timeStamp: Date.now(),\n table: this.id,\n requestType: 'filter',\n requestData: {\n filters: request.map(hashFilterColumnId)\n }\n };\n dump(\n [`${this.frame.id}`, `${requestId}.json`],\n dumpData,\n this.frame.logger\n );\n dump(\n [`${this.frame.id}`, `${requestId}`, `${requestId}.json`],\n dumpData,\n this.frame.logger\n );\n\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} filter request ${requestId} started`\n );\n const t0 = performance.now();\n try {\n const boxed = AddonSymbol.pTableFilter(this.table, requestId, request);\n return new PTable(this.frame, requestId, boxed);\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} filter request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} filter request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n sort(request: PTableSorting[]): PFrameInternal.PTableV5 {\n const requestId = ulid();\n const dumpData = {\n timeStamp: Date.now(),\n table: this.id,\n requestType: 'sort',\n requestData: request.map(hashSortingColumnId)\n };\n dump(\n [`${this.frame.id}`, `${requestId}.json`],\n dumpData,\n this.frame.logger\n );\n dump(\n [`${this.frame.id}`, `${requestId}`, `${requestId}.json`],\n dumpData,\n this.frame.logger\n );\n\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} sort request ${requestId} started`\n );\n const t0 = performance.now();\n try {\n const boxed = AddonSymbol.pTableSort(this.table, requestId, request);\n return new PTable(this.frame, requestId, boxed);\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} sort request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} sort request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n dispose() {\n const requestId = ulid();\n dump(\n [`${this.frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'dispose'\n },\n this.frame.logger\n );\n\n try {\n AddonSymbol.pTableDispose(this.table);\n this.frame.logger?.('info', `PTable ${this.id} disposed`);\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} dispose request ${requestId} failed, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n [Symbol.dispose]() {\n this.dispose();\n }\n}\n","import type { PFrameInternal } from '@milaboratories/pl-model-middle-layer';\nimport { PFrame as PFrameImpl } from './wrapper';\n\nexport type PFrame = {\n new (\n spillPath: string,\n logger?: PFrameInternal.Logger\n ): PFrameInternal.PFrameV7;\n\n pprofDump: () => Promise<Uint8Array>;\n};\n\nexport const PFrame: PFrame = PFrameImpl;\n"],"names":["nodeFileUrl","nodeDirname","dirname","fileURLToPath","nodeRequire","createRequire","findAddon","gyp","AddonSymbol","resolve","fileExists","path","fs","ensureDirExists","fileOrDir","writeFile","filePath","data","tempPath","buffer","source","Readable","destination","Writable","hashColumnId","columnId","createHash","hashTableColumnId","tableId","hashFilterColumnId","filter","hashUniqueValuesRequestColumnId","request","hashSortingColumnId","sorting","hashJoinEntryColumnId","entry","type","hashCreateTableRequestColumnId","dump","relativePath","logger","relativeUri","part","fileDir","fileData","error","PFrame$1","spillPath","__publicField","ulid","_a","err","columnSpec","requestId","dataSource","wrappedDataSource","blobIds","t0","t1","humanizeDuration","blobId","blob","dataInfo","dumpData","boxed","PTable","_b","ops","_c","frame","id","table","columnIds","columnIndices","rowCount","result","_e","_d","PFrame","PFrameImpl"],"mappings":"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"}
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.44",
4
+ "version": "1.0.45",
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.38",
21
+ "@milaboratories/pl-model-middle-layer": "1.7.39",
22
22
  "@types/humanize-duration": "^3.27.4",
23
23
  "humanize-duration": "^3.33.0",
24
24
  "ulid": "^3.0.1"