@milaboratories/pframes-rs-node 1.0.40 → 1.0.42

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/dump.ts CHANGED
@@ -1,7 +1,15 @@
1
+ import { createHash } from 'node:crypto';
1
2
  import fs from 'node:fs';
2
3
  import path from 'node:path';
3
4
  import { Readable, Writable } from 'node:stream';
4
5
  import type { PFrameInternal } from '@milaboratories/pl-model-middle-layer';
6
+ import {
7
+ PObjectId,
8
+ PTableColumnId,
9
+ PTableRecordFilter,
10
+ PTableSorting,
11
+ UniqueValuesRequest
12
+ } from '@milaboratories/pl-model-common';
5
13
 
6
14
  async function fileExists(path: string): Promise<boolean> {
7
15
  try {
@@ -35,6 +43,98 @@ async function writeFile(
35
43
  await fs.promises.rename(tempPath, filePath);
36
44
  }
37
45
 
46
+ export function hashColumnId(columnId: PObjectId): PObjectId {
47
+ return createHash('sha256').update(columnId).digest('hex') as PObjectId;
48
+ }
49
+
50
+ export function hashTableColumnId(tableId: PTableColumnId): PTableColumnId {
51
+ if (tableId.type === 'column') {
52
+ return {
53
+ ...tableId,
54
+ id: hashColumnId(tableId.id)
55
+ };
56
+ }
57
+ return tableId;
58
+ }
59
+
60
+ export function hashFilterColumnId(
61
+ filter: PTableRecordFilter
62
+ ): PTableRecordFilter {
63
+ return {
64
+ ...filter,
65
+ column: hashTableColumnId(filter.column)
66
+ };
67
+ }
68
+
69
+ export function hashUniqueValuesRequestColumnId(
70
+ request: UniqueValuesRequest
71
+ ): UniqueValuesRequest {
72
+ return {
73
+ ...request,
74
+ columnId: hashColumnId(request.columnId),
75
+ filters: request.filters.map(hashFilterColumnId)
76
+ };
77
+ }
78
+
79
+ export function hashSortingColumnId(sorting: PTableSorting): PTableSorting {
80
+ return {
81
+ ...sorting,
82
+ column: hashTableColumnId(sorting.column)
83
+ };
84
+ }
85
+
86
+ function hashJoinEntryColumnId(
87
+ entry: PFrameInternal.JoinEntryV3
88
+ ): PFrameInternal.JoinEntryV3 {
89
+ const type = entry.type;
90
+ switch (type) {
91
+ case 'column':
92
+ return {
93
+ ...entry,
94
+ columnId: hashColumnId(entry.columnId)
95
+ };
96
+ case 'slicedColumn':
97
+ return {
98
+ ...entry,
99
+ columnId: hashColumnId(entry.columnId),
100
+ newId: hashColumnId(entry.newId)
101
+ };
102
+ case 'inlineColumn':
103
+ return {
104
+ ...entry,
105
+ newId: hashColumnId(entry.newId)
106
+ };
107
+ case 'inner':
108
+ return {
109
+ ...entry,
110
+ entries: entry.entries.map(hashJoinEntryColumnId)
111
+ };
112
+ case 'full':
113
+ return {
114
+ ...entry,
115
+ entries: entry.entries.map(hashJoinEntryColumnId)
116
+ };
117
+ case 'outer':
118
+ return {
119
+ ...entry,
120
+ primary: hashJoinEntryColumnId(entry.primary),
121
+ secondary: entry.secondary.map(hashJoinEntryColumnId)
122
+ };
123
+ default:
124
+ throw new Error(`Unsupported join entry type: ${type}`);
125
+ }
126
+ }
127
+
128
+ export function hashCreateTableRequestColumnId(
129
+ request: PFrameInternal.CreateTableRequestV3
130
+ ): PFrameInternal.CreateTableRequestV3 {
131
+ return {
132
+ ...request,
133
+ src: hashJoinEntryColumnId(request.src),
134
+ filters: request.filters.map(hashFilterColumnId)
135
+ };
136
+ }
137
+
38
138
  export async function dump(
39
139
  relativePath: string[],
40
140
  data: { [key: string]: Object } | Uint8Array,
@@ -52,7 +152,7 @@ export async function dump(
52
152
  const filePath = path.join(process.env.MI_DUMP_PFRAMES_RS, ...relativeUri);
53
153
  const fileData = ArrayBuffer.isView(data)
54
154
  ? (data as Uint8Array)
55
- : JSON.stringify(data);
155
+ : JSON.stringify(data, null, 2);
56
156
  await writeFile(filePath, fileData);
57
157
  } catch (error: unknown) {
58
158
  logger?.('warn', `error while dumping PFrames data: ${error}`);
package/export/wrapper.ts CHANGED
@@ -18,7 +18,15 @@ import {
18
18
  import type { PFrameInternal } from '@milaboratories/pl-model-middle-layer';
19
19
  import type { NodeFrameSymbol, NodeTableSymbol } from './addon-def';
20
20
  import { AddonSymbol } from './addon';
21
- import { dump } from './dump';
21
+ import {
22
+ hashColumnId,
23
+ dump,
24
+ hashTableColumnId,
25
+ hashFilterColumnId,
26
+ hashUniqueValuesRequestColumnId,
27
+ hashSortingColumnId,
28
+ hashCreateTableRequestColumnId
29
+ } from './dump';
22
30
 
23
31
  export class PFrame implements PFrameInternal.PFrameV6 {
24
32
  public readonly id: string = ulid();
@@ -62,7 +70,7 @@ export class PFrame implements PFrameInternal.PFrameV6 {
62
70
  timeStamp: Date.now(),
63
71
  requestType: 'addColumnSpec',
64
72
  requestData: {
65
- columnId,
73
+ columnId: hashColumnId(columnId),
66
74
  columnSpec
67
75
  }
68
76
  },
@@ -70,7 +78,7 @@ export class PFrame implements PFrameInternal.PFrameV6 {
70
78
  );
71
79
 
72
80
  dump(
73
- [`${this.id}`, `data`, `${columnId}.spec`],
81
+ [`${this.id}`, `data`, `${hashColumnId(columnId)}.spec`],
74
82
  {
75
83
  ...columnSpec
76
84
  },
@@ -176,7 +184,7 @@ export class PFrame implements PFrameInternal.PFrameV6 {
176
184
  timeStamp: Date.now(),
177
185
  requestType: 'setColumnData',
178
186
  requestData: {
179
- columnId,
187
+ columnId: hashColumnId(columnId),
180
188
  dataInfo
181
189
  }
182
190
  },
@@ -184,7 +192,7 @@ export class PFrame implements PFrameInternal.PFrameV6 {
184
192
  );
185
193
 
186
194
  dump(
187
- [`${this.id}`, `data`, `${columnId}.datainfo`],
195
+ [`${this.id}`, `data`, `${hashColumnId(columnId)}.datainfo`],
188
196
  {
189
197
  ...dataInfo
190
198
  },
@@ -305,7 +313,7 @@ export class PFrame implements PFrameInternal.PFrameV6 {
305
313
  timeStamp: Date.now(),
306
314
  requestType: 'getColumnSpec',
307
315
  requestData: {
308
- columnId
316
+ columnId: hashColumnId(columnId)
309
317
  }
310
318
  },
311
319
  this.logger
@@ -367,7 +375,7 @@ export class PFrame implements PFrameInternal.PFrameV6 {
367
375
  const dumpData = {
368
376
  timeStamp: Date.now(),
369
377
  requestType: 'createTable',
370
- requestData: request
378
+ requestData: hashCreateTableRequestColumnId(request)
371
379
  };
372
380
  dump([`${this.id}`, `${requestId}.json`], dumpData, this.logger);
373
381
  dump(
@@ -416,7 +424,7 @@ export class PFrame implements PFrameInternal.PFrameV6 {
416
424
  {
417
425
  timeStamp: Date.now(),
418
426
  requestType: 'getUniqueValues',
419
- requestData: request
427
+ requestData: hashUniqueValuesRequestColumnId(request)
420
428
  },
421
429
  this.logger
422
430
  );
@@ -512,7 +520,7 @@ class PTable implements PFrameInternal.PTableV4 {
512
520
  timeStamp: Date.now(),
513
521
  requestType: 'getColumnIndices',
514
522
  requestData: {
515
- columnIds
523
+ columnIds: columnIds.map(hashTableColumnId)
516
524
  }
517
525
  },
518
526
  this.frame.logger
@@ -589,7 +597,9 @@ class PTable implements PFrameInternal.PTableV4 {
589
597
  timeStamp: Date.now(),
590
598
  table: this.id,
591
599
  requestType: 'filter',
592
- requestData: request
600
+ requestData: {
601
+ filters: request.map(hashFilterColumnId)
602
+ }
593
603
  };
594
604
  dump(
595
605
  [`${this.frame.id}`, `${requestId}.json`],
@@ -641,7 +651,7 @@ class PTable implements PFrameInternal.PTableV4 {
641
651
  timeStamp: Date.now(),
642
652
  table: this.id,
643
653
  requestType: 'sort',
644
- requestData: request
654
+ requestData: request.map(hashSortingColumnId)
645
655
  };
646
656
  dump(
647
657
  [`${this.frame.id}`, `${requestId}.json`],
@@ -1,4 +1,11 @@
1
1
  import { PFrameInternal } from '@milaboratories/pl-model-middle-layer';
2
+ import { PObjectId, PTableColumnId, PTableRecordFilter, PTableSorting, UniqueValuesRequest } from '@milaboratories/pl-model-common';
3
+ export declare function hashColumnId(columnId: PObjectId): PObjectId;
4
+ export declare function hashTableColumnId(tableId: PTableColumnId): PTableColumnId;
5
+ export declare function hashFilterColumnId(filter: PTableRecordFilter): PTableRecordFilter;
6
+ export declare function hashUniqueValuesRequestColumnId(request: UniqueValuesRequest): UniqueValuesRequest;
7
+ export declare function hashSortingColumnId(sorting: PTableSorting): PTableSorting;
8
+ export declare function hashCreateTableRequestColumnId(request: PFrameInternal.CreateTableRequestV3): PFrameInternal.CreateTableRequestV3;
2
9
  export declare function dump(relativePath: string[], data: {
3
10
  [key: string]: Object;
4
11
  } | Uint8Array, logger?: PFrameInternal.Logger): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"dump.d.ts","sourceRoot":"","sources":["../export/dump.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAkC5E,wBAAsB,IAAI,CACxB,YAAY,EAAE,MAAM,EAAE,EACtB,IAAI,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,GAAG,UAAU,EAC5C,MAAM,CAAC,EAAE,cAAc,CAAC,MAAM,GAC7B,OAAO,CAAC,IAAI,CAAC,CAkBf"}
1
+ {"version":3,"file":"dump.d.ts","sourceRoot":"","sources":["../export/dump.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EACL,SAAS,EACT,cAAc,EACd,kBAAkB,EAClB,aAAa,EACb,mBAAmB,EACpB,MAAM,iCAAiC,CAAC;AAkCzC,wBAAgB,YAAY,CAAC,QAAQ,EAAE,SAAS,GAAG,SAAS,CAE3D;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,cAAc,GAAG,cAAc,CAQzE;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,kBAAkB,GACzB,kBAAkB,CAKpB;AAED,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,mBAAmB,GAC3B,mBAAmB,CAMrB;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,aAAa,GAAG,aAAa,CAKzE;AA4CD,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,cAAc,CAAC,oBAAoB,GAC3C,cAAc,CAAC,oBAAoB,CAMrC;AAED,wBAAsB,IAAI,CACxB,YAAY,EAAE,MAAM,EAAE,EACtB,IAAI,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,GAAG,UAAU,EAC5C,MAAM,CAAC,EAAE,cAAc,CAAC,MAAM,GAC7B,OAAO,CAAC,IAAI,CAAC,CAkBf"}
@@ -1,20 +1,20 @@
1
- "use strict";var b=Object.defineProperty;var P=(h,t,e)=>t in h?b(h,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):h[t]=e;var w=(h,t,e)=>P(h,typeof t!="symbol"?t+"":t,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("humanize-duration"),d=require("ulid"),T=require("node:module"),p=require("node:path"),F=require("node:url"),C=require("@mapbox/node-pre-gyp"),f=require("node:fs"),q=require("node:stream");var y=typeof document<"u"?document.currentScript:null;const S=typeof document>"u"?require("url").pathToFileURL(__filename).href:y&&y.tagName.toUpperCase()==="SCRIPT"&&y.src||new URL("index.js",document.baseURI).href,j=p.dirname(F.fileURLToPath(S)),E=T.createRequire(S),{find:M}=C,u=E(M(p.resolve(j,"../package.json")));async function D(h){try{return await f.promises.access(h),!0}catch{return!1}}async function I(h){await D(h)||await f.promises.mkdir(h,{recursive:!0})}async function N(h,t){const e=`${h}.tmp`;await D(e)&&await f.promises.rm(e,{recursive:!0});const r=typeof t=="string"?Buffer.from(t,"utf8"):t,i=q.Readable.from(r),o=f.createWriteStream(e,{flags:"wx"});await q.Readable.toWeb(i).pipeTo(q.Writable.toWeb(o)),await f.promises.rename(e,h)}async function s(h,t,e){if(process.env.MI_DUMP_PFRAMES_RS)try{const r=h.map(a=>encodeURIComponent(a)),i=p.join(process.env.MI_DUMP_PFRAMES_RS,...r.slice(0,-1));await I(i);const o=p.join(process.env.MI_DUMP_PFRAMES_RS,...r),n=ArrayBuffer.isView(t)?t:JSON.stringify(t);await N(o,n)}catch(r){e==null||e("warn",`error while dumping PFrames data: ${r}`)}}let U=class{constructor(t,e){w(this,"id",d.ulid());w(this,"frame");var r;this.logger=e,s([`${this.id}`,`${this.id}.json`],{timeStamp:Date.now(),requestType:"create"},this.logger);try{this.frame=u.pFrameCreate(t,e),(r=this.logger)==null||r.call(this,"info",`PFrame ${this.id} created`)}catch(i){throw new Error(`PFrame ${this.id} creation failed, logger: ${e==null?void 0:e.toString()}, error:
2
- ${i.toString()}`)}}static async pprofDump(){return u.pprofDump()}addColumnSpec(t,e){const r=d.ulid();s([`${this.id}`,`${r}.json`],{timeStamp:Date.now(),requestType:"addColumnSpec",requestData:{columnId:t,columnSpec:e}},this.logger),s([`${this.id}`,"data",`${t}.spec`],{...e},this.logger);try{return u.pFrameAddColumnSpec(this.frame,t,e)}catch(i){throw new Error(`PFrame ${this.id} addColumnSpec request ${r} failed, columnId: ${JSON.stringify(t)}, columnSpec: ${JSON.stringify(e)}, error:
3
- ${i.toString()}`)}}setDataSource(t){const e=d.ulid();s([`${this.id}`,`${e}.json`],{timeStamp:Date.now(),requestType:"setDataSource"},this.logger);let r={preloadBlob:async i=>{var a;const o=d.ulid();s([`${this.id}`,`${o}.json`],{timeStamp:Date.now(),requestType:"preloadBlob",requestData:{blobIds:i}},this.logger);const n=performance.now();try{return t.preloadBlob(i)}finally{const m=performance.now();(a=this.logger)==null||a.call(this,"info",`PFrame ${this.id} preloaded ${i.length} blobs ${JSON.stringify(i)}, took ${l(Math.round(m-n))}`)}},resolveBlobContent:async i=>{var a;const o=d.ulid();s([`${this.id}`,`${o}.json`],{timeStamp:Date.now(),requestType:"resolveBlobContent",requestData:{blobId:i}},this.logger);const n=await t.resolveBlobContent(i);return(a=this.logger)==null||a.call(this,"info",`PFrame ${this.id} resolved blob ${i}`),s([`${this.id}`,"data",`${i}`],n,this.logger),n}};try{return u.pFrameSetDataSource(this.frame,r)}catch(i){throw new Error(`PFrame ${this.id} setDataSource request ${e} failed, dataSource: ${t.toString()}, error:
4
- ${i.toString()}`)}}setColumnData(t,e){const r=d.ulid();s([`${this.id}`,`${r}.json`],{timeStamp:Date.now(),requestType:"setColumnData",requestData:{columnId:t,dataInfo:e}},this.logger),s([`${this.id}`,"data",`${t}.datainfo`],{...e},this.logger);try{return u.pFrameSetColumnData(this.frame,t,e)}catch(i){throw new Error(`PFrame ${this.id} setColumnData request ${r} failed, columnId: ${JSON.stringify(t)}, dataInfo: ${JSON.stringify(e)}, error:
5
- ${i.toString()}`)}}dispose(){var e;const t=d.ulid();s([`${this.id}`,`${t}.json`],{timeStamp:Date.now(),requestType:"dispose"},this.logger);try{u.pFrameDispose(this.frame),(e=this.logger)==null||e.call(this,"info",`PFrame ${this.id} disposed`)}catch(r){throw new Error(`PFrame ${this.id} dispose request ${t} failed, error:
6
- ${r.toString()}`)}}[Symbol.dispose](){this.dispose()}async findColumns(t){var i;const e=d.ulid();s([`${this.id}`,`${e}.json`],{timeStamp:Date.now(),requestType:"findColumns",requestData:t},this.logger);const r=performance.now();try{return await u.pFrameFindColumns(this.frame,t)}catch(o){throw new Error(`PFrame ${this.id} findColumns request ${e} failed, request: ${JSON.stringify(t)}, error:
7
- ${o.toString()}`)}finally{const o=performance.now();(i=this.logger)==null||i.call(this,"info",`PFrame ${this.id} findColumns request ${e} took ${l(Math.round(o-r))}`)}}async deleteColumn(t){var i;const e=d.ulid();s([`${this.id}`,`${e}.json`],{timeStamp:Date.now(),requestType:"deleteColumn",requestData:t},this.logger);const r=performance.now();try{return await u.pFrameDeleteColumn(this.frame,t)}catch(o){throw new Error(`PFrame ${this.id} deleteColumn request ${e} failed, request: ${JSON.stringify(t)}, error:
8
- ${o.toString()}`)}finally{const o=performance.now();(i=this.logger)==null||i.call(this,"info",`PFrame ${this.id} deleteColumn request ${e} took ${l(Math.round(o-r))}`)}}async getColumnSpec(t){var i;const e=d.ulid();s([`${this.id}`,`${e}.json`],{timeStamp:Date.now(),requestType:"getColumnSpec",requestData:{columnId:t}},this.logger);const r=performance.now();try{return await u.pFrameGetColumnSpec(this.frame,t)}catch(o){throw new Error(`PFrame ${this.id} getColumnSpec request ${e} failed, columnId: ${JSON.stringify(t)}, error:
9
- ${o.toString()}`)}finally{const o=performance.now();(i=this.logger)==null||i.call(this,"info",`PFrame ${this.id} getColumnSpec request ${e} took ${l(Math.round(o-r))}`)}}async listColumns(){var r;const t=d.ulid();s([`${this.id}`,`${t}.json`],{timeStamp:Date.now(),requestType:"listColumns"},this.logger);const e=performance.now();try{return await u.pFrameListColumns(this.frame)}catch(i){throw new Error(`PFrame ${this.id} listColumns request ${t} failed, error:
10
- ${i.toString()}`)}finally{const i=performance.now();(r=this.logger)==null||r.call(this,"info",`PFrame ${this.id} listColumns request ${t} took ${l(Math.round(i-e))}`)}}async createTable(t,e){var n,a;const r=d.ulid(),i={timeStamp:Date.now(),requestType:"createTable",requestData:t};s([`${this.id}`,`${r}.json`],i,this.logger),s([`${this.id}`,`${r}`,`${r}.json`],i,this.logger),(n=this.logger)==null||n.call(this,"info",`PFrame ${this.id} createTable request ${r} started`);const o=performance.now();try{e==null||e.throwIfAborted();const m=await u.pFrameCreateTable(this.frame,r,t,e);return new g(this,r,m)}catch(m){throw new Error(`PFrame ${this.id} createTable request ${r} failed, request: ${JSON.stringify(t)}, error:
11
- ${m.toString()}`)}finally{const m=performance.now();(a=this.logger)==null||a.call(this,"info",`PFrame ${this.id} createTable request ${r} finished, took ${l(Math.round(m-o))}`)}}async getUniqueValues(t,e){var o,n;const r=d.ulid();s([`${this.id}`,`${r}.json`],{timeStamp:Date.now(),requestType:"getUniqueValues",requestData:t},this.logger),(o=this.logger)==null||o.call(this,"info",`PFrame ${this.id} getUniqueValues request ${r} started`);const i=performance.now();try{return e==null||e.throwIfAborted(),await u.pFrameGetUniqueValues(this.frame,r,t,e)}catch(a){throw new Error(`PFrame ${this.id} getUniqueValues request ${r} failed, request: ${JSON.stringify(t)}, error:
12
- ${a.toString()}`)}finally{const a=performance.now();(n=this.logger)==null||n.call(this,"info",`PFrame ${this.id} getUniqueValues request ${r} finished, took ${l(Math.round(a-i))}`)}}};class g{constructor(t,e,r){var i,o;this.frame=t,this.id=e,this.table=r,(o=(i=this.frame).logger)==null||o.call(i,"info",`PTable ${this.id} created`)}getShape(){const t=d.ulid();s([`${this.frame.id}`,`${this.id}`,`${t}.json`],{timeStamp:Date.now(),requestType:"getShape"},this.frame.logger);try{return u.pTableGetShape(this.table)}catch(e){throw new Error(`PTable ${this.id} getShape request ${t} failed, error:
13
- ${e.toString()}`)}}getSpec(){const t=d.ulid();s([`${this.frame.id}`,`${this.id}`,`${t}.json`],{timeStamp:Date.now(),requestType:"getSpec"},this.frame.logger);try{return u.pTableGetSpec(this.table)}catch(e){throw new Error(`PTable ${this.id} getSpec request ${t} failed, error:
14
- ${e.toString()}`)}}getColumnIndices(t){const e=d.ulid();s([`${this.frame.id}`,`${this.id}`,`${e}.json`],{timeStamp:Date.now(),requestType:"getColumnIndices",requestData:{columnIds:t}},this.frame.logger);try{return u.pTableGetColumnIndices(this.table,t)}catch(r){throw new Error(`PTable ${this.id} getColumnIndices request ${e} failed, columnIds: ${JSON.stringify(t)}, error:
15
- ${r.toString()}`)}}async getData(t,e,r){var n,a,m,$;const i=d.ulid();s([`${this.frame.id}`,`${this.id}`,`${i}.json`],{timeStamp:Date.now(),requestType:"getData",requestData:{columnIndices:t,range:e??null}},this.frame.logger),(a=(n=this.frame).logger)==null||a.call(n,"info",`PTable ${this.id} getData request ${i} started`);const o=performance.now();try{return r==null||r.throwIfAborted(),await u.pTableGetData(this.table,i,t,e,r)}catch(c){throw new Error(`PTable ${this.id} getData request ${i} failed, columnIndices: ${JSON.stringify(t)}, range: ${e?JSON.stringify(e):void 0}, error:
16
- ${c.toString()}`)}finally{const c=performance.now();($=(m=this.frame).logger)==null||$.call(m,"info",`PTable ${this.id} getData request ${i} finished, took ${l(Math.round(c-o))}`)}}async filter(t,e){var n,a,m,$;const r=d.ulid(),i={timeStamp:Date.now(),table:this.id,requestType:"filter",requestData:t};s([`${this.frame.id}`,`${r}.json`],i,this.frame.logger),s([`${this.frame.id}`,`${r}`,`${r}.json`],i,this.frame.logger),(a=(n=this.frame).logger)==null||a.call(n,"info",`PTable ${this.id} filter request ${r} started`);const o=performance.now();try{e==null||e.throwIfAborted();const c=await u.pTableFilter(this.table,r,t,e);return new g(this.frame,r,c)}catch(c){throw new Error(`PTable ${this.id} filter request ${r} failed, request: ${JSON.stringify(t)}, error:
17
- ${c.toString()}`)}finally{const c=performance.now();($=(m=this.frame).logger)==null||$.call(m,"info",`PTable ${this.id} filter request ${r} finished, took ${l(Math.round(c-o))}`)}}async sort(t,e){var n,a,m,$;const r=d.ulid(),i={timeStamp:Date.now(),table:this.id,requestType:"sort",requestData:t};s([`${this.frame.id}`,`${r}.json`],i,this.frame.logger),s([`${this.frame.id}`,`${r}`,`${r}.json`],i,this.frame.logger),(a=(n=this.frame).logger)==null||a.call(n,"info",`PTable ${this.id} sort request ${r} started`);const o=performance.now();try{e==null||e.throwIfAborted();const c=await u.pTableSort(this.table,r,t,e);return new g(this.frame,r,c)}catch(c){throw new Error(`PTable ${this.id} sort request ${r} failed, request: ${JSON.stringify(t)}, error:
18
- ${c.toString()}`)}finally{const c=performance.now();($=(m=this.frame).logger)==null||$.call(m,"info",`PTable ${this.id} sort request ${r} finished, took ${l(Math.round(c-o))}`)}}dispose(){var e,r;const t=d.ulid();s([`${this.frame.id}`,`${this.id}`,`${t}.json`],{timeStamp:Date.now(),requestType:"dispose"},this.frame.logger);try{u.pTableDispose(this.table),(r=(e=this.frame).logger)==null||r.call(e,"info",`PTable ${this.id} disposed`)}catch(i){throw new Error(`PTable ${this.id} dispose request ${t} failed, error:
19
- ${i.toString()}`)}}[Symbol.dispose](){this.dispose()}}const J=U;exports.PFrame=J;
1
+ "use strict";var F=Object.defineProperty;var I=(o,e,t)=>e in o?F(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t;var S=(o,e,t)=>I(o,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("humanize-duration"),d=require("ulid"),j=require("node:module"),w=require("node:path"),E=require("node:url"),M=require("@mapbox/node-pre-gyp"),U=require("node:crypto"),g=require("node:fs"),y=require("node:stream");var D=typeof document<"u"?document.currentScript:null;const P=typeof document>"u"?require("url").pathToFileURL(__filename).href:D&&D.tagName.toUpperCase()==="SCRIPT"&&D.src||new URL("index.js",document.baseURI).href,R=w.dirname(E.fileURLToPath(P)),J=j.createRequire(P),{find:N}=M,c=J(N(w.resolve(R,"../package.json")));async function C(o){try{return await g.promises.access(o),!0}catch{return!1}}async function O(o){await C(o)||await g.promises.mkdir(o,{recursive:!0})}async function v(o,e){const t=`${o}.tmp`;await C(t)&&await g.promises.rm(t,{recursive:!0});const r=typeof e=="string"?Buffer.from(e,"utf8"):e,i=y.Readable.from(r),s=g.createWriteStream(t,{flags:"wx"});await y.Readable.toWeb(i).pipeTo(y.Writable.toWeb(s)),await g.promises.rename(t,o)}function m(o){return U.createHash("sha256").update(o).digest("hex")}function b(o){return o.type==="column"?{...o,id:m(o.id)}:o}function T(o){return{...o,column:b(o.column)}}function _(o){return{...o,columnId:m(o.columnId),filters:o.filters.map(T)}}function k(o){return{...o,column:b(o.column)}}function p(o){const e=o.type;switch(e){case"column":return{...o,columnId:m(o.columnId)};case"slicedColumn":return{...o,columnId:m(o.columnId),newId:m(o.newId)};case"inlineColumn":return{...o,newId:m(o.newId)};case"inner":return{...o,entries:o.entries.map(p)};case"full":return{...o,entries:o.entries.map(p)};case"outer":return{...o,primary:p(o.primary),secondary:o.secondary.map(p)};default:throw new Error(`Unsupported join entry type: ${e}`)}}function A(o){return{...o,src:p(o.src),filters:o.filters.map(T)}}async function n(o,e,t){if(process.env.MI_DUMP_PFRAMES_RS)try{const r=o.map(a=>encodeURIComponent(a)),i=w.join(process.env.MI_DUMP_PFRAMES_RS,...r.slice(0,-1));await O(i);const s=w.join(process.env.MI_DUMP_PFRAMES_RS,...r),u=ArrayBuffer.isView(e)?e:JSON.stringify(e,null,2);await v(s,u)}catch(r){t==null||t("warn",`error while dumping PFrames data: ${r}`)}}let x=class{constructor(e,t){S(this,"id",d.ulid());S(this,"frame");var r;this.logger=t,n([`${this.id}`,`${this.id}.json`],{timeStamp:Date.now(),requestType:"create"},this.logger);try{this.frame=c.pFrameCreate(e,t),(r=this.logger)==null||r.call(this,"info",`PFrame ${this.id} created`)}catch(i){throw new Error(`PFrame ${this.id} creation failed, logger: ${t==null?void 0:t.toString()}, error:
2
+ ${i.toString()}`)}}static async pprofDump(){return c.pprofDump()}addColumnSpec(e,t){const r=d.ulid();n([`${this.id}`,`${r}.json`],{timeStamp:Date.now(),requestType:"addColumnSpec",requestData:{columnId:m(e),columnSpec:t}},this.logger),n([`${this.id}`,"data",`${m(e)}.spec`],{...t},this.logger);try{return c.pFrameAddColumnSpec(this.frame,e,t)}catch(i){throw new Error(`PFrame ${this.id} addColumnSpec request ${r} failed, columnId: ${JSON.stringify(e)}, columnSpec: ${JSON.stringify(t)}, error:
3
+ ${i.toString()}`)}}setDataSource(e){const t=d.ulid();n([`${this.id}`,`${t}.json`],{timeStamp:Date.now(),requestType:"setDataSource"},this.logger);let r={preloadBlob:async i=>{var a;const s=d.ulid();n([`${this.id}`,`${s}.json`],{timeStamp:Date.now(),requestType:"preloadBlob",requestData:{blobIds:i}},this.logger);const u=performance.now();try{return e.preloadBlob(i)}finally{const h=performance.now();(a=this.logger)==null||a.call(this,"info",`PFrame ${this.id} preloaded ${i.length} blobs ${JSON.stringify(i)}, took ${f(Math.round(h-u))}`)}},resolveBlobContent:async i=>{var a;const s=d.ulid();n([`${this.id}`,`${s}.json`],{timeStamp:Date.now(),requestType:"resolveBlobContent",requestData:{blobId:i}},this.logger);const u=await e.resolveBlobContent(i);return(a=this.logger)==null||a.call(this,"info",`PFrame ${this.id} resolved blob ${i}`),n([`${this.id}`,"data",`${i}`],u,this.logger),u}};try{return c.pFrameSetDataSource(this.frame,r)}catch(i){throw new Error(`PFrame ${this.id} setDataSource request ${t} failed, dataSource: ${e.toString()}, error:
4
+ ${i.toString()}`)}}setColumnData(e,t){const r=d.ulid();n([`${this.id}`,`${r}.json`],{timeStamp:Date.now(),requestType:"setColumnData",requestData:{columnId:m(e),dataInfo:t}},this.logger),n([`${this.id}`,"data",`${m(e)}.datainfo`],{...t},this.logger);try{return c.pFrameSetColumnData(this.frame,e,t)}catch(i){throw new Error(`PFrame ${this.id} setColumnData request ${r} failed, columnId: ${JSON.stringify(e)}, dataInfo: ${JSON.stringify(t)}, error:
5
+ ${i.toString()}`)}}dispose(){var t;const e=d.ulid();n([`${this.id}`,`${e}.json`],{timeStamp:Date.now(),requestType:"dispose"},this.logger);try{c.pFrameDispose(this.frame),(t=this.logger)==null||t.call(this,"info",`PFrame ${this.id} disposed`)}catch(r){throw new Error(`PFrame ${this.id} dispose request ${e} failed, error:
6
+ ${r.toString()}`)}}[Symbol.dispose](){this.dispose()}async findColumns(e){var i;const t=d.ulid();n([`${this.id}`,`${t}.json`],{timeStamp:Date.now(),requestType:"findColumns",requestData:e},this.logger);const r=performance.now();try{return await c.pFrameFindColumns(this.frame,e)}catch(s){throw new Error(`PFrame ${this.id} findColumns request ${t} failed, request: ${JSON.stringify(e)}, error:
7
+ ${s.toString()}`)}finally{const s=performance.now();(i=this.logger)==null||i.call(this,"info",`PFrame ${this.id} findColumns request ${t} took ${f(Math.round(s-r))}`)}}async deleteColumn(e){var i;const t=d.ulid();n([`${this.id}`,`${t}.json`],{timeStamp:Date.now(),requestType:"deleteColumn",requestData:e},this.logger);const r=performance.now();try{return await c.pFrameDeleteColumn(this.frame,e)}catch(s){throw new Error(`PFrame ${this.id} deleteColumn request ${t} failed, request: ${JSON.stringify(e)}, error:
8
+ ${s.toString()}`)}finally{const s=performance.now();(i=this.logger)==null||i.call(this,"info",`PFrame ${this.id} deleteColumn request ${t} took ${f(Math.round(s-r))}`)}}async getColumnSpec(e){var i;const t=d.ulid();n([`${this.id}`,`${t}.json`],{timeStamp:Date.now(),requestType:"getColumnSpec",requestData:{columnId:m(e)}},this.logger);const r=performance.now();try{return await c.pFrameGetColumnSpec(this.frame,e)}catch(s){throw new Error(`PFrame ${this.id} getColumnSpec request ${t} failed, columnId: ${JSON.stringify(e)}, error:
9
+ ${s.toString()}`)}finally{const s=performance.now();(i=this.logger)==null||i.call(this,"info",`PFrame ${this.id} getColumnSpec request ${t} took ${f(Math.round(s-r))}`)}}async listColumns(){var r;const e=d.ulid();n([`${this.id}`,`${e}.json`],{timeStamp:Date.now(),requestType:"listColumns"},this.logger);const t=performance.now();try{return await c.pFrameListColumns(this.frame)}catch(i){throw new Error(`PFrame ${this.id} listColumns request ${e} failed, error:
10
+ ${i.toString()}`)}finally{const i=performance.now();(r=this.logger)==null||r.call(this,"info",`PFrame ${this.id} listColumns request ${e} took ${f(Math.round(i-t))}`)}}async createTable(e,t){var u,a;const r=d.ulid(),i={timeStamp:Date.now(),requestType:"createTable",requestData:A(e)};n([`${this.id}`,`${r}.json`],i,this.logger),n([`${this.id}`,`${r}`,`${r}.json`],i,this.logger),(u=this.logger)==null||u.call(this,"info",`PFrame ${this.id} createTable request ${r} started`);const s=performance.now();try{t==null||t.throwIfAborted();const h=await c.pFrameCreateTable(this.frame,r,e,t);return new q(this,r,h)}catch(h){throw new Error(`PFrame ${this.id} createTable request ${r} failed, request: ${JSON.stringify(e)}, error:
11
+ ${h.toString()}`)}finally{const h=performance.now();(a=this.logger)==null||a.call(this,"info",`PFrame ${this.id} createTable request ${r} finished, took ${f(Math.round(h-s))}`)}}async getUniqueValues(e,t){var s,u;const r=d.ulid();n([`${this.id}`,`${r}.json`],{timeStamp:Date.now(),requestType:"getUniqueValues",requestData:_(e)},this.logger),(s=this.logger)==null||s.call(this,"info",`PFrame ${this.id} getUniqueValues request ${r} started`);const i=performance.now();try{return t==null||t.throwIfAborted(),await c.pFrameGetUniqueValues(this.frame,r,e,t)}catch(a){throw new Error(`PFrame ${this.id} getUniqueValues request ${r} failed, request: ${JSON.stringify(e)}, error:
12
+ ${a.toString()}`)}finally{const a=performance.now();(u=this.logger)==null||u.call(this,"info",`PFrame ${this.id} getUniqueValues request ${r} finished, took ${f(Math.round(a-i))}`)}}};class q{constructor(e,t,r){var i,s;this.frame=e,this.id=t,this.table=r,(s=(i=this.frame).logger)==null||s.call(i,"info",`PTable ${this.id} created`)}getShape(){const e=d.ulid();n([`${this.frame.id}`,`${this.id}`,`${e}.json`],{timeStamp:Date.now(),requestType:"getShape"},this.frame.logger);try{return c.pTableGetShape(this.table)}catch(t){throw new Error(`PTable ${this.id} getShape request ${e} failed, error:
13
+ ${t.toString()}`)}}getSpec(){const e=d.ulid();n([`${this.frame.id}`,`${this.id}`,`${e}.json`],{timeStamp:Date.now(),requestType:"getSpec"},this.frame.logger);try{return c.pTableGetSpec(this.table)}catch(t){throw new Error(`PTable ${this.id} getSpec request ${e} failed, error:
14
+ ${t.toString()}`)}}getColumnIndices(e){const t=d.ulid();n([`${this.frame.id}`,`${this.id}`,`${t}.json`],{timeStamp:Date.now(),requestType:"getColumnIndices",requestData:{columnIds:e.map(b)}},this.frame.logger);try{return c.pTableGetColumnIndices(this.table,e)}catch(r){throw new Error(`PTable ${this.id} getColumnIndices request ${t} failed, columnIds: ${JSON.stringify(e)}, error:
15
+ ${r.toString()}`)}}async getData(e,t,r){var u,a,h,$;const i=d.ulid();n([`${this.frame.id}`,`${this.id}`,`${i}.json`],{timeStamp:Date.now(),requestType:"getData",requestData:{columnIndices:e,range:t??null}},this.frame.logger),(a=(u=this.frame).logger)==null||a.call(u,"info",`PTable ${this.id} getData request ${i} started`);const s=performance.now();try{return r==null||r.throwIfAborted(),await c.pTableGetData(this.table,i,e,t,r)}catch(l){throw new Error(`PTable ${this.id} getData request ${i} failed, columnIndices: ${JSON.stringify(e)}, range: ${t?JSON.stringify(t):void 0}, error:
16
+ ${l.toString()}`)}finally{const l=performance.now();($=(h=this.frame).logger)==null||$.call(h,"info",`PTable ${this.id} getData request ${i} finished, took ${f(Math.round(l-s))}`)}}async filter(e,t){var u,a,h,$;const r=d.ulid(),i={timeStamp:Date.now(),table:this.id,requestType:"filter",requestData:{filters:e.map(T)}};n([`${this.frame.id}`,`${r}.json`],i,this.frame.logger),n([`${this.frame.id}`,`${r}`,`${r}.json`],i,this.frame.logger),(a=(u=this.frame).logger)==null||a.call(u,"info",`PTable ${this.id} filter request ${r} started`);const s=performance.now();try{t==null||t.throwIfAborted();const l=await c.pTableFilter(this.table,r,e,t);return new q(this.frame,r,l)}catch(l){throw new Error(`PTable ${this.id} filter request ${r} failed, request: ${JSON.stringify(e)}, error:
17
+ ${l.toString()}`)}finally{const l=performance.now();($=(h=this.frame).logger)==null||$.call(h,"info",`PTable ${this.id} filter request ${r} finished, took ${f(Math.round(l-s))}`)}}async sort(e,t){var u,a,h,$;const r=d.ulid(),i={timeStamp:Date.now(),table:this.id,requestType:"sort",requestData:e.map(k)};n([`${this.frame.id}`,`${r}.json`],i,this.frame.logger),n([`${this.frame.id}`,`${r}`,`${r}.json`],i,this.frame.logger),(a=(u=this.frame).logger)==null||a.call(u,"info",`PTable ${this.id} sort request ${r} started`);const s=performance.now();try{t==null||t.throwIfAborted();const l=await c.pTableSort(this.table,r,e,t);return new q(this.frame,r,l)}catch(l){throw new Error(`PTable ${this.id} sort request ${r} failed, request: ${JSON.stringify(e)}, error:
18
+ ${l.toString()}`)}finally{const l=performance.now();($=(h=this.frame).logger)==null||$.call(h,"info",`PTable ${this.id} sort request ${r} finished, took ${f(Math.round(l-s))}`)}}dispose(){var t,r;const e=d.ulid();n([`${this.frame.id}`,`${this.id}`,`${e}.json`],{timeStamp:Date.now(),requestType:"dispose"},this.frame.logger);try{c.pTableDispose(this.table),(r=(t=this.frame).logger)==null||r.call(t,"info",`PTable ${this.id} disposed`)}catch(i){throw new Error(`PTable ${this.id} dispose request ${e} failed, error:
19
+ ${i.toString()}`)}}[Symbol.dispose](){this.dispose()}}const B=x;exports.PFrame=B;
20
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../export/addon.ts","../export/dump.ts","../export/wrapper.ts","../export/export.ts"],"sourcesContent":["import { createRequire } from 'node:module';\nimport { dirname, resolve } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport gyp from '@mapbox/node-pre-gyp';\nimport type { AddonSymbol } from './addon-def';\n\nconst nodeFileUrl = import.meta.url;\nconst nodeDirname = dirname(fileURLToPath(nodeFileUrl));\nconst nodeRequire = createRequire(nodeFileUrl);\n\nconst { find: findAddon } = gyp;\n\n// Pre-gyp reads binary section from package.json and constructs a path to addon\n// https://github.com/mapbox/node-pre-gyp/blob/a541932680034f5de9e7365ef8d9a0d7a11cc1a9/lib/package.js#L35\n// Require calls dlopen under the hood\n// https://nodejs.org/api/process.html#processdlopenmodule-filename-flags\n// DLOpen then searches for napi_register_module_v1 in addon export table\n// https://github.com/search?q=repo%3Anodejs%2Fnode%20NAPI_MODULE_INITIALIZER&type=code\n// And neon exports napi_register_module_v1 from #[neon::main]\n// https://github.com/neon-bindings/neon/blob/b1728fa21e968ccde9611ac9955cf6d638be16e6/crates/neon/src/context/internal.rs#L76\nconst AddonSymbol = nodeRequire(\n findAddon(resolve(nodeDirname, '../package.json'))\n) as AddonSymbol;\n\nexport { AddonSymbol };\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport { Readable, Writable } from 'node:stream';\nimport type { PFrameInternal } from '@milaboratories/pl-model-middle-layer';\n\nasync function fileExists(path: string): Promise<boolean> {\n try {\n await fs.promises.access(path);\n return true;\n } catch {\n return false;\n }\n}\n\nasync function ensureDirExists(fileOrDir: string): Promise<void> {\n if (!(await fileExists(fileOrDir))) {\n await fs.promises.mkdir(fileOrDir, { recursive: true });\n }\n}\n\nasync function writeFile(\n filePath: string,\n data: string | Uint8Array\n): Promise<void> {\n const tempPath = `${filePath}.tmp`;\n if (await fileExists(tempPath)) {\n await fs.promises.rm(tempPath, { recursive: true });\n }\n\n const buffer = typeof data === 'string' ? Buffer.from(data, 'utf8') : data;\n const source = Readable.from(buffer);\n const destination = fs.createWriteStream(tempPath, { flags: 'wx' });\n await Readable.toWeb(source).pipeTo(Writable.toWeb(destination));\n\n await fs.promises.rename(tempPath, filePath);\n}\n\nexport async function dump(\n relativePath: string[],\n data: { [key: string]: Object } | Uint8Array,\n logger?: PFrameInternal.Logger\n): Promise<void> {\n if (!process.env.MI_DUMP_PFRAMES_RS) return;\n try {\n const relativeUri = relativePath.map((part) => encodeURIComponent(part));\n const fileDir = path.join(\n process.env.MI_DUMP_PFRAMES_RS,\n ...relativeUri.slice(0, -1)\n );\n await ensureDirExists(fileDir);\n\n const filePath = path.join(process.env.MI_DUMP_PFRAMES_RS, ...relativeUri);\n const fileData = ArrayBuffer.isView(data)\n ? (data as Uint8Array)\n : JSON.stringify(data);\n await writeFile(filePath, fileData);\n } catch (error: unknown) {\n logger?.('warn', `error while dumping PFrames data: ${error}`);\n }\n}\n","import humanizeDuration from 'humanize-duration';\nimport { ulid } from 'ulid';\nimport {\n DataInfo,\n PColumnInfo,\n PColumnSpec,\n PObjectId,\n PTableColumnId,\n PTableColumnSpec,\n PTableRecordFilter,\n PTableShape,\n PTableSorting,\n PTableVector,\n TableRange,\n UniqueValuesRequest,\n UniqueValuesResponse\n} from '@milaboratories/pl-model-common';\nimport type { PFrameInternal } from '@milaboratories/pl-model-middle-layer';\nimport type { NodeFrameSymbol, NodeTableSymbol } from './addon-def';\nimport { AddonSymbol } from './addon';\nimport { dump } from './dump';\n\nexport class PFrame implements PFrameInternal.PFrameV6 {\n public readonly id: string = ulid();\n private readonly frame: NodeFrameSymbol;\n\n static async pprofDump(): Promise<Uint8Array> {\n return AddonSymbol.pprofDump();\n }\n\n constructor(\n spillPath: string,\n public readonly logger?: PFrameInternal.Logger\n ) {\n dump(\n [`${this.id}`, `${this.id}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'create'\n },\n this.logger\n );\n\n try {\n this.frame = AddonSymbol.pFrameCreate(spillPath, logger);\n this.logger?.('info', `PFrame ${this.id} created`);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} creation failed, ` +\n `logger: ${logger?.toString()}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n addColumnSpec(columnId: PObjectId, columnSpec: PColumnSpec): void {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'addColumnSpec',\n requestData: {\n columnId,\n columnSpec\n }\n },\n this.logger\n );\n\n dump(\n [`${this.id}`, `data`, `${columnId}.spec`],\n {\n ...columnSpec\n },\n this.logger\n );\n\n try {\n return AddonSymbol.pFrameAddColumnSpec(this.frame, columnId, columnSpec);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} addColumnSpec request ${requestId} failed, ` +\n `columnId: ${JSON.stringify(columnId)}, ` +\n `columnSpec: ${JSON.stringify(columnSpec)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n setDataSource(dataSource: PFrameInternal.PFrameDataSource): void {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'setDataSource'\n },\n this.logger\n );\n\n let wrappedDataSource = {\n preloadBlob: async (\n blobIds: PFrameInternal.PFrameBlobId[]\n ): Promise<void> => {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'preloadBlob',\n requestData: {\n blobIds\n }\n },\n this.logger\n );\n\n const t0 = performance.now();\n try {\n return dataSource.preloadBlob(blobIds);\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} preloaded ${blobIds.length} blobs ${JSON.stringify(blobIds)}, took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n },\n resolveBlobContent: async (\n blobId: PFrameInternal.PFrameBlobId\n ): Promise<Uint8Array> => {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'resolveBlobContent',\n requestData: {\n blobId\n }\n },\n this.logger\n );\n\n const blob = await dataSource.resolveBlobContent(blobId);\n this.logger?.('info', `PFrame ${this.id} resolved blob ${blobId}`);\n dump([`${this.id}`, `data`, `${blobId}`], blob, this.logger);\n\n return blob;\n }\n };\n\n try {\n return AddonSymbol.pFrameSetDataSource(this.frame, wrappedDataSource);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} setDataSource request ${requestId} failed, ` +\n `dataSource: ${dataSource.toString()}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n setColumnData(\n columnId: PObjectId,\n dataInfo: DataInfo<PFrameInternal.PFrameBlobId>\n ): void {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'setColumnData',\n requestData: {\n columnId,\n dataInfo\n }\n },\n this.logger\n );\n\n dump(\n [`${this.id}`, `data`, `${columnId}.datainfo`],\n {\n ...dataInfo\n },\n this.logger\n );\n\n try {\n return AddonSymbol.pFrameSetColumnData(this.frame, columnId, dataInfo);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} setColumnData request ${requestId} failed, ` +\n `columnId: ${JSON.stringify(columnId)}, ` +\n `dataInfo: ${JSON.stringify(dataInfo)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n dispose(): void {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'dispose'\n },\n this.logger\n );\n\n try {\n AddonSymbol.pFrameDispose(this.frame);\n this.logger?.('info', `PFrame ${this.id} disposed`);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} dispose request ${requestId} failed, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n [Symbol.dispose](): void {\n this.dispose();\n }\n\n async findColumns(\n request: PFrameInternal.FindColumnsRequest\n ): Promise<PFrameInternal.FindColumnsResponse> {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'findColumns',\n requestData: request\n },\n this.logger\n );\n\n const t0 = performance.now();\n try {\n return await AddonSymbol.pFrameFindColumns(this.frame, request);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} findColumns request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} findColumns request ${requestId} took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n async deleteColumn(\n request: PFrameInternal.DeleteColumnFromColumnsRequest\n ): Promise<PFrameInternal.DeleteColumnFromColumnsResponse> {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'deleteColumn',\n requestData: request\n },\n this.logger\n );\n\n const t0 = performance.now();\n try {\n return await AddonSymbol.pFrameDeleteColumn(this.frame, request);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} deleteColumn request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} deleteColumn request ${requestId} took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n async getColumnSpec(columnId: PObjectId): Promise<PColumnSpec> {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getColumnSpec',\n requestData: {\n columnId\n }\n },\n this.logger\n );\n\n const t0 = performance.now();\n try {\n return await AddonSymbol.pFrameGetColumnSpec(this.frame, columnId);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} getColumnSpec request ${requestId} failed, ` +\n `columnId: ${JSON.stringify(columnId)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} getColumnSpec request ${requestId} took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n async listColumns(): Promise<PColumnInfo[]> {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'listColumns'\n },\n this.logger\n );\n\n const t0 = performance.now();\n try {\n return await AddonSymbol.pFrameListColumns(this.frame);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} listColumns request ${requestId} failed, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} listColumns request ${requestId} took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n async createTable(\n request: PFrameInternal.CreateTableRequestV3,\n signal?: AbortSignal\n ): Promise<PFrameInternal.PTableV4> {\n const requestId = ulid();\n const dumpData = {\n timeStamp: Date.now(),\n requestType: 'createTable',\n requestData: request\n };\n dump([`${this.id}`, `${requestId}.json`], dumpData, this.logger);\n dump(\n [`${this.id}`, `${requestId}`, `${requestId}.json`],\n dumpData,\n this.logger\n );\n\n this.logger?.(\n 'info',\n `PFrame ${this.id} createTable request ${requestId} started`\n );\n const t0 = performance.now();\n try {\n signal?.throwIfAborted();\n const boxed = await AddonSymbol.pFrameCreateTable(\n this.frame,\n requestId,\n request,\n signal\n );\n return new PTable(this, requestId, boxed);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} createTable request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} createTable request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n async getUniqueValues(\n request: UniqueValuesRequest,\n signal?: AbortSignal\n ): Promise<UniqueValuesResponse> {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getUniqueValues',\n requestData: request\n },\n this.logger\n );\n\n this.logger?.(\n 'info',\n `PFrame ${this.id} getUniqueValues request ${requestId} started`\n );\n const t0 = performance.now();\n try {\n signal?.throwIfAborted();\n return await AddonSymbol.pFrameGetUniqueValues(\n this.frame,\n requestId,\n request,\n signal\n );\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} getUniqueValues request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} getUniqueValues request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n}\n\nclass PTable implements PFrameInternal.PTableV4 {\n constructor(\n private readonly frame: PFrame,\n public readonly id: string,\n private readonly table: NodeTableSymbol\n ) {\n this.frame.logger?.('info', `PTable ${this.id} created`);\n }\n\n getShape(): PTableShape {\n const requestId = ulid();\n dump(\n [`${this.frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getShape'\n },\n this.frame.logger\n );\n\n try {\n return AddonSymbol.pTableGetShape(this.table);\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} getShape request ${requestId} failed, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n getSpec(): PTableColumnSpec[] {\n const requestId = ulid();\n dump(\n [`${this.frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getSpec'\n },\n this.frame.logger\n );\n\n try {\n return AddonSymbol.pTableGetSpec(this.table);\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} getSpec request ${requestId} failed, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n getColumnIndices(columnIds: PTableColumnId[]): number[] {\n const requestId = ulid();\n dump(\n [`${this.frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getColumnIndices',\n requestData: {\n columnIds\n }\n },\n this.frame.logger\n );\n\n try {\n return AddonSymbol.pTableGetColumnIndices(this.table, columnIds);\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} getColumnIndices request ${requestId} failed, ` +\n `columnIds: ${JSON.stringify(columnIds)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n async getData(\n columnIndices: number[],\n range: TableRange | undefined,\n signal?: AbortSignal\n ): Promise<PTableVector[]> {\n const requestId = ulid();\n dump(\n [`${this.frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getData',\n requestData: {\n columnIndices,\n range: range ?? null\n }\n },\n this.frame.logger\n );\n\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} getData request ${requestId} started`\n );\n const t0 = performance.now();\n try {\n signal?.throwIfAborted();\n return await AddonSymbol.pTableGetData(\n this.table,\n requestId,\n columnIndices,\n range,\n signal\n );\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} getData request ${requestId} failed, ` +\n `columnIndices: ${JSON.stringify(columnIndices)}, ` +\n `range: ${range ? JSON.stringify(range) : undefined}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} getData request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n async filter(\n request: PTableRecordFilter[],\n signal?: AbortSignal\n ): Promise<PFrameInternal.PTableV4> {\n const requestId = ulid();\n const dumpData = {\n timeStamp: Date.now(),\n table: this.id,\n requestType: 'filter',\n requestData: request\n };\n dump(\n [`${this.frame.id}`, `${requestId}.json`],\n dumpData,\n this.frame.logger\n );\n dump(\n [`${this.frame.id}`, `${requestId}`, `${requestId}.json`],\n dumpData,\n this.frame.logger\n );\n\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} filter request ${requestId} started`\n );\n const t0 = performance.now();\n try {\n signal?.throwIfAborted();\n const boxed = await AddonSymbol.pTableFilter(\n this.table,\n requestId,\n request,\n signal\n );\n return new PTable(this.frame, requestId, boxed);\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} filter request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} filter request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n async sort(\n request: PTableSorting[],\n signal?: AbortSignal\n ): Promise<PFrameInternal.PTableV4> {\n const requestId = ulid();\n const dumpData = {\n timeStamp: Date.now(),\n table: this.id,\n requestType: 'sort',\n requestData: request\n };\n dump(\n [`${this.frame.id}`, `${requestId}.json`],\n dumpData,\n this.frame.logger\n );\n dump(\n [`${this.frame.id}`, `${requestId}`, `${requestId}.json`],\n dumpData,\n this.frame.logger\n );\n\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} sort request ${requestId} started`\n );\n const t0 = performance.now();\n try {\n signal?.throwIfAborted();\n const boxed = await AddonSymbol.pTableSort(\n this.table,\n requestId,\n request,\n signal\n );\n return new PTable(this.frame, requestId, boxed);\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} sort request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} sort request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n dispose() {\n const requestId = ulid();\n dump(\n [`${this.frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'dispose'\n },\n this.frame.logger\n );\n\n try {\n AddonSymbol.pTableDispose(this.table);\n this.frame.logger?.('info', `PTable ${this.id} disposed`);\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} dispose request ${requestId} failed, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n [Symbol.dispose]() {\n this.dispose();\n }\n}\n","import type { PFrameInternal } from '@milaboratories/pl-model-middle-layer';\nimport { PFrame as PFrameImpl } from './wrapper';\n\nexport type PFrame = {\n new (\n spillPath: string,\n logger?: PFrameInternal.Logger\n ): PFrameInternal.PFrameV6;\n\n pprofDump: () => Promise<Uint8Array>;\n};\n\nexport const PFrame: PFrame = PFrameImpl;\n"],"names":["nodeFileUrl","_documentCurrentScript","nodeDirname","dirname","fileURLToPath","nodeRequire","createRequire","findAddon","gyp","AddonSymbol","resolve","fileExists","path","fs","ensureDirExists","fileOrDir","writeFile","filePath","data","tempPath","buffer","source","Readable","destination","Writable","dump","relativePath","logger","relativeUri","part","fileDir","fileData","error","PFrame$1","spillPath","__publicField","ulid","_a","err","columnId","columnSpec","requestId","dataSource","wrappedDataSource","blobIds","t0","t1","humanizeDuration","blobId","blob","dataInfo","request","signal","dumpData","boxed","PTable","_b","frame","id","table","columnIds","columnIndices","range","_d","_c","PFrame","PFrameImpl"],"mappings":"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"}
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.PFrameV6 {\n public readonly id: string = ulid();\n private readonly frame: NodeFrameSymbol;\n\n static async pprofDump(): Promise<Uint8Array> {\n return AddonSymbol.pprofDump();\n }\n\n constructor(\n spillPath: string,\n public readonly logger?: PFrameInternal.Logger\n ) {\n dump(\n [`${this.id}`, `${this.id}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'create'\n },\n this.logger\n );\n\n try {\n this.frame = AddonSymbol.pFrameCreate(spillPath, logger);\n this.logger?.('info', `PFrame ${this.id} created`);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} creation failed, ` +\n `logger: ${logger?.toString()}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n addColumnSpec(columnId: PObjectId, columnSpec: PColumnSpec): void {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'addColumnSpec',\n requestData: {\n columnId: 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 async createTable(\n request: PFrameInternal.CreateTableRequestV3,\n signal?: AbortSignal\n ): Promise<PFrameInternal.PTableV4> {\n const requestId = ulid();\n const dumpData = {\n timeStamp: Date.now(),\n requestType: 'createTable',\n requestData: 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 signal?.throwIfAborted();\n const boxed = await AddonSymbol.pFrameCreateTable(\n this.frame,\n requestId,\n request,\n signal\n );\n return new PTable(this, requestId, boxed);\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} createTable request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} createTable request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n async getUniqueValues(\n request: UniqueValuesRequest,\n signal?: AbortSignal\n ): Promise<UniqueValuesResponse> {\n const requestId = ulid();\n dump(\n [`${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getUniqueValues',\n requestData: 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 signal?.throwIfAborted();\n return await AddonSymbol.pFrameGetUniqueValues(\n this.frame,\n requestId,\n request,\n signal\n );\n } catch (err: unknown) {\n throw new Error(\n `PFrame ${this.id} getUniqueValues request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.logger?.(\n 'info',\n `PFrame ${this.id} getUniqueValues request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n}\n\nclass PTable implements PFrameInternal.PTableV4 {\n constructor(\n private readonly frame: PFrame,\n public readonly id: string,\n private readonly table: NodeTableSymbol\n ) {\n this.frame.logger?.('info', `PTable ${this.id} created`);\n }\n\n getShape(): PTableShape {\n const requestId = ulid();\n dump(\n [`${this.frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getShape'\n },\n this.frame.logger\n );\n\n try {\n return AddonSymbol.pTableGetShape(this.table);\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} getShape request ${requestId} failed, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n getSpec(): PTableColumnSpec[] {\n const requestId = ulid();\n dump(\n [`${this.frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getSpec'\n },\n this.frame.logger\n );\n\n try {\n return AddonSymbol.pTableGetSpec(this.table);\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} getSpec request ${requestId} failed, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n getColumnIndices(columnIds: PTableColumnId[]): number[] {\n const requestId = ulid();\n dump(\n [`${this.frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getColumnIndices',\n requestData: {\n columnIds: 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 getData(\n columnIndices: number[],\n range: TableRange | undefined,\n signal?: AbortSignal\n ): Promise<PTableVector[]> {\n const requestId = ulid();\n dump(\n [`${this.frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'getData',\n requestData: {\n columnIndices,\n range: range ?? null\n }\n },\n this.frame.logger\n );\n\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} getData request ${requestId} started`\n );\n const t0 = performance.now();\n try {\n signal?.throwIfAborted();\n return await AddonSymbol.pTableGetData(\n this.table,\n requestId,\n columnIndices,\n range,\n signal\n );\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} getData request ${requestId} failed, ` +\n `columnIndices: ${JSON.stringify(columnIndices)}, ` +\n `range: ${range ? JSON.stringify(range) : undefined}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} getData request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n async filter(\n request: PTableRecordFilter[],\n signal?: AbortSignal\n ): Promise<PFrameInternal.PTableV4> {\n const requestId = ulid();\n const dumpData = {\n timeStamp: Date.now(),\n table: this.id,\n requestType: 'filter',\n requestData: {\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 signal?.throwIfAborted();\n const boxed = await AddonSymbol.pTableFilter(\n this.table,\n requestId,\n request,\n signal\n );\n return new PTable(this.frame, requestId, boxed);\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} filter request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} filter request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n async sort(\n request: PTableSorting[],\n signal?: AbortSignal\n ): Promise<PFrameInternal.PTableV4> {\n const requestId = ulid();\n const dumpData = {\n timeStamp: Date.now(),\n table: this.id,\n requestType: 'sort',\n requestData: request.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 signal?.throwIfAborted();\n const boxed = await AddonSymbol.pTableSort(\n this.table,\n requestId,\n request,\n signal\n );\n return new PTable(this.frame, requestId, boxed);\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} sort request ${requestId} failed, ` +\n `request: ${JSON.stringify(request)}, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n } finally {\n const t1 = performance.now();\n this.frame.logger?.(\n 'info',\n `PTable ${this.id} sort request ${requestId} finished, took ${humanizeDuration(Math.round(t1 - t0))}`\n );\n }\n }\n\n dispose() {\n const requestId = ulid();\n dump(\n [`${this.frame.id}`, `${this.id}`, `${requestId}.json`],\n {\n timeStamp: Date.now(),\n requestType: 'dispose'\n },\n this.frame.logger\n );\n\n try {\n AddonSymbol.pTableDispose(this.table);\n this.frame.logger?.('info', `PTable ${this.id} disposed`);\n } catch (err: unknown) {\n throw new Error(\n `PTable ${this.id} dispose request ${requestId} failed, ` +\n `error:\\n` +\n `${(err as Error).toString()}`\n );\n }\n }\n\n [Symbol.dispose]() {\n this.dispose();\n }\n}\n","import type { PFrameInternal } from '@milaboratories/pl-model-middle-layer';\nimport { PFrame as PFrameImpl } from './wrapper';\n\nexport type PFrame = {\n new (\n spillPath: string,\n logger?: PFrameInternal.Logger\n ): PFrameInternal.PFrameV6;\n\n pprofDump: () => Promise<Uint8Array>;\n};\n\nexport const PFrame: PFrame = PFrameImpl;\n"],"names":["nodeFileUrl","_documentCurrentScript","nodeDirname","dirname","fileURLToPath","nodeRequire","createRequire","findAddon","gyp","AddonSymbol","resolve","fileExists","path","fs","ensureDirExists","fileOrDir","writeFile","filePath","data","tempPath","buffer","source","Readable","destination","Writable","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","signal","dumpData","boxed","PTable","_b","frame","id","table","columnIds","columnIndices","range","_d","_c","PFrame","PFrameImpl"],"mappings":"ghBAMA,MAAMA,EAA0B,OAAA,SAAA,IAAA,QAAA,KAAA,EAAA,cAAA,UAAA,EAAA,KAAAC,GAAAA,EAAA,QAAA,YAAA,IAAA,UAAAA,EAAA,KAAA,IAAA,IAAA,WAAA,SAAA,OAAA,EAAA,KAC1BC,EAAcC,EAAA,QAAQC,gBAAcJ,CAAW,CAAC,EAChDK,EAAcC,gBAAcN,CAAW,EAEvC,CAAE,KAAMO,CAAA,EAAcC,EAUtBC,EAAcJ,EAClBE,EAAUG,EAAAA,QAAQR,EAAa,iBAAiB,CAAC,CACnD,ECTA,eAAeS,EAAWC,EAAgC,CACpD,GAAA,CACI,aAAAC,EAAG,SAAS,OAAOD,CAAI,EACtB,EAAA,MACD,CACC,MAAA,EAAA,CAEX,CAEA,eAAeE,EAAgBC,EAAkC,CACzD,MAAMJ,EAAWI,CAAS,GAC9B,MAAMF,EAAG,SAAS,MAAME,EAAW,CAAE,UAAW,GAAM,CAE1D,CAEA,eAAeC,EACbC,EACAC,EACe,CACT,MAAAC,EAAW,GAAGF,CAAQ,OACxB,MAAMN,EAAWQ,CAAQ,GAC3B,MAAMN,EAAG,SAAS,GAAGM,EAAU,CAAE,UAAW,GAAM,EAG9C,MAAAC,EAAS,OAAOF,GAAS,SAAW,OAAO,KAAKA,EAAM,MAAM,EAAIA,EAChEG,EAASC,EAAAA,SAAS,KAAKF,CAAM,EAC7BG,EAAcV,EAAG,kBAAkBM,EAAU,CAAE,MAAO,KAAM,EAC5D,MAAAG,EAAA,SAAS,MAAMD,CAAM,EAAE,OAAOG,WAAS,MAAMD,CAAW,CAAC,EAE/D,MAAMV,EAAG,SAAS,OAAOM,EAAUF,CAAQ,CAC7C,CAEO,SAASQ,EAAaC,EAAgC,CAC3D,OAAOC,EAAAA,WAAW,QAAQ,EAAE,OAAOD,CAAQ,EAAE,OAAO,KAAK,CAC3D,CAEO,SAASE,EAAkBC,EAAyC,CACrE,OAAAA,EAAQ,OAAS,SACZ,CACL,GAAGA,EACH,GAAIJ,EAAaI,EAAQ,EAAE,CAC7B,EAEKA,CACT,CAEO,SAASC,EACdC,EACoB,CACb,MAAA,CACL,GAAGA,EACH,OAAQH,EAAkBG,EAAO,MAAM,CACzC,CACF,CAEO,SAASC,EACdC,EACqB,CACd,MAAA,CACL,GAAGA,EACH,SAAUR,EAAaQ,EAAQ,QAAQ,EACvC,QAASA,EAAQ,QAAQ,IAAIH,CAAkB,CACjD,CACF,CAEO,SAASI,EAAoBC,EAAuC,CAClE,MAAA,CACL,GAAGA,EACH,OAAQP,EAAkBO,EAAQ,MAAM,CAC1C,CACF,CAEA,SAASC,EACPC,EAC4B,CAC5B,MAAMC,EAAOD,EAAM,KACnB,OAAQC,EAAM,CACZ,IAAK,SACI,MAAA,CACL,GAAGD,EACH,SAAUZ,EAAaY,EAAM,QAAQ,CACvC,EACF,IAAK,eACI,MAAA,CACL,GAAGA,EACH,SAAUZ,EAAaY,EAAM,QAAQ,EACrC,MAAOZ,EAAaY,EAAM,KAAK,CACjC,EACF,IAAK,eACI,MAAA,CACL,GAAGA,EACH,MAAOZ,EAAaY,EAAM,KAAK,CACjC,EACF,IAAK,QACI,MAAA,CACL,GAAGA,EACH,QAASA,EAAM,QAAQ,IAAID,CAAqB,CAClD,EACF,IAAK,OACI,MAAA,CACL,GAAGC,EACH,QAASA,EAAM,QAAQ,IAAID,CAAqB,CAClD,EACF,IAAK,QACI,MAAA,CACL,GAAGC,EACH,QAASD,EAAsBC,EAAM,OAAO,EAC5C,UAAWA,EAAM,UAAU,IAAID,CAAqB,CACtD,EACF,QACE,MAAM,IAAI,MAAM,gCAAgCE,CAAI,EAAE,CAAA,CAE5D,CAEO,SAASC,EACdN,EACqC,CAC9B,MAAA,CACL,GAAGA,EACH,IAAKG,EAAsBH,EAAQ,GAAG,EACtC,QAASA,EAAQ,QAAQ,IAAIH,CAAkB,CACjD,CACF,CAEsB,eAAAU,EACpBC,EACAvB,EACAwB,EACe,CACX,GAAC,QAAQ,IAAI,mBACb,GAAA,CACF,MAAMC,EAAcF,EAAa,IAAKG,GAAS,mBAAmBA,CAAI,CAAC,EACjEC,EAAUjC,EAAK,KACnB,QAAQ,IAAI,mBACZ,GAAG+B,EAAY,MAAM,EAAG,EAAE,CAC5B,EACA,MAAM7B,EAAgB+B,CAAO,EAE7B,MAAM5B,EAAWL,EAAK,KAAK,QAAQ,IAAI,mBAAoB,GAAG+B,CAAW,EACnEG,EAAW,YAAY,OAAO5B,CAAI,EACnCA,EACD,KAAK,UAAUA,EAAM,KAAM,CAAC,EAC1B,MAAAF,EAAUC,EAAU6B,CAAQ,QAC3BC,EAAgB,CACdL,GAAA,MAAAA,EAAA,OAAQ,qCAAqCK,CAAK,GAAE,CAEjE,CCjIO,IAAAC,EAAA,KAAgD,CAQrD,YACEC,EACgBP,EAChB,CAVcQ,EAAA,UAAaC,EAAAA,KAAK,GACjBD,EAAA,oBAQC,KAAA,OAAAR,EAEhBF,EACE,CAAC,GAAG,KAAK,EAAE,GAAI,GAAG,KAAK,EAAE,OAAO,EAChC,CACE,UAAW,KAAK,IAAI,EACpB,YAAa,QACf,EACA,KAAK,MACP,EAEI,GAAA,CACF,KAAK,MAAQ/B,EAAY,aAAawC,EAAWP,CAAM,GACvDU,EAAA,KAAK,SAAL,MAAAA,EAAA,UAAc,OAAQ,UAAU,KAAK,EAAE,kBAChCC,EAAc,CACrB,MAAM,IAAI,MACR,UAAU,KAAK,EAAE,6BACJX,GAAA,YAAAA,EAAQ,UAAU;AAAA,EAEzBW,EAAc,UAAU,EAChC,CAAA,CACF,CA3BF,aAAa,WAAiC,CAC5C,OAAO5C,EAAY,UAAU,CAAA,CA6B/B,cAAciB,EAAqB4B,EAA+B,CAChE,MAAMC,EAAYJ,EAAAA,KAAK,EACvBX,EACE,CAAC,GAAG,KAAK,EAAE,GAAI,GAAGe,CAAS,OAAO,EAClC,CACE,UAAW,KAAK,IAAI,EACpB,YAAa,gBACb,YAAa,CACX,SAAU9B,EAAaC,CAAQ,EAC/B,WAAA4B,CAAA,CAEJ,EACA,KAAK,MACP,EAEAd,EACE,CAAC,GAAG,KAAK,EAAE,GAAI,OAAQ,GAAGf,EAAaC,CAAQ,CAAC,OAAO,EACvD,CACE,GAAG4B,CACL,EACA,KAAK,MACP,EAEI,GAAA,CACF,OAAO7C,EAAY,oBAAoB,KAAK,MAAOiB,EAAU4B,CAAU,QAChED,EAAc,CACrB,MAAM,IAAI,MACR,UAAU,KAAK,EAAE,0BAA0BE,CAAS,sBACrC,KAAK,UAAU7B,CAAQ,CAAC,iBACtB,KAAK,UAAU4B,CAAU,CAAC;AAAA,EAErCD,EAAc,UAAU,EAChC,CAAA,CACF,CAGF,cAAcG,EAAmD,CAC/D,MAAMD,EAAYJ,EAAAA,KAAK,EACvBX,EACE,CAAC,GAAG,KAAK,EAAE,GAAI,GAAGe,CAAS,OAAO,EAClC,CACE,UAAW,KAAK,IAAI,EACpB,YAAa,eACf,EACA,KAAK,MACP,EAEA,IAAIE,EAAoB,CACtB,YAAa,MACXC,GACkB,OAClB,MAAMH,EAAYJ,EAAAA,KAAK,EACvBX,EACE,CAAC,GAAG,KAAK,EAAE,GAAI,GAAGe,CAAS,OAAO,EAClC,CACE,UAAW,KAAK,IAAI,EACpB,YAAa,cACb,YAAa,CACX,QAAAG,CAAA,CAEJ,EACA,KAAK,MACP,EAEM,MAAAC,EAAK,YAAY,IAAI,EACvB,GAAA,CACK,OAAAH,EAAW,YAAYE,CAAO,CAAA,QACrC,CACM,MAAAE,EAAK,YAAY,IAAI,GACtBR,EAAA,KAAA,SAAA,MAAAA,EAAA,UACH,OACA,UAAU,KAAK,EAAE,cAAcM,EAAQ,MAAM,UAAU,KAAK,UAAUA,CAAO,CAAC,UAAUG,EAAiB,KAAK,MAAMD,EAAKD,CAAE,CAAC,CAAC,GAC/H,CAEJ,EACA,mBAAoB,MAClBG,GACwB,OACxB,MAAMP,EAAYJ,EAAAA,KAAK,EACvBX,EACE,CAAC,GAAG,KAAK,EAAE,GAAI,GAAGe,CAAS,OAAO,EAClC,CACE,UAAW,KAAK,IAAI,EACpB,YAAa,qBACb,YAAa,CACX,OAAAO,CAAA,CAEJ,EACA,KAAK,MACP,EAEA,MAAMC,EAAO,MAAMP,EAAW,mBAAmBM,CAAM,EACvD,OAAAV,EAAA,KAAK,SAAL,MAAAA,EAAA,UAAc,OAAQ,UAAU,KAAK,EAAE,kBAAkBU,CAAM,IAC/DtB,EAAK,CAAC,GAAG,KAAK,EAAE,GAAI,OAAQ,GAAGsB,CAAM,EAAE,EAAGC,EAAM,KAAK,MAAM,EAEpDA,CAAA,CAEX,EAEI,GAAA,CACF,OAAOtD,EAAY,oBAAoB,KAAK,MAAOgD,CAAiB,QAC7DJ,EAAc,CACrB,MAAM,IAAI,MACR,UAAU,KAAK,EAAE,0BAA0BE,CAAS,wBACnCC,EAAW,UAAU;AAAA,EAEhCH,EAAc,UAAU,EAChC,CAAA,CACF,CAGF,cACE3B,EACAsC,EACM,CACN,MAAMT,EAAYJ,EAAAA,KAAK,EACvBX,EACE,CAAC,GAAG,KAAK,EAAE,GAAI,GAAGe,CAAS,OAAO,EAClC,CACE,UAAW,KAAK,IAAI,EACpB,YAAa,gBACb,YAAa,CACX,SAAU9B,EAAaC,CAAQ,EAC/B,SAAAsC,CAAA,CAEJ,EACA,KAAK,MACP,EAEAxB,EACE,CAAC,GAAG,KAAK,EAAE,GAAI,OAAQ,GAAGf,EAAaC,CAAQ,CAAC,WAAW,EAC3D,CACE,GAAGsC,CACL,EACA,KAAK,MACP,EAEI,GAAA,CACF,OAAOvD,EAAY,oBAAoB,KAAK,MAAOiB,EAAUsC,CAAQ,QAC9DX,EAAc,CACrB,MAAM,IAAI,MACR,UAAU,KAAK,EAAE,0BAA0BE,CAAS,sBACrC,KAAK,UAAU7B,CAAQ,CAAC,eACxB,KAAK,UAAUsC,CAAQ,CAAC;AAAA,EAEjCX,EAAc,UAAU,EAChC,CAAA,CACF,CAGF,SAAgB,OACd,MAAME,EAAYJ,EAAAA,KAAK,EACvBX,EACE,CAAC,GAAG,KAAK,EAAE,GAAI,GAAGe,CAAS,OAAO,EAClC,CACE,UAAW,KAAK,IAAI,EACpB,YAAa,SACf,EACA,KAAK,MACP,EAEI,GAAA,CACU9C,EAAA,cAAc,KAAK,KAAK,GACpC2C,EAAA,KAAK,SAAL,MAAAA,EAAA,UAAc,OAAQ,UAAU,KAAK,EAAE,mBAChCC,EAAc,CACrB,MAAM,IAAI,MACR,UAAU,KAAK,EAAE,oBAAoBE,CAAS;AAAA,EAExCF,EAAc,UAAU,EAChC,CAAA,CACF,CAGF,CAAC,OAAO,OAAO,GAAU,CACvB,KAAK,QAAQ,CAAA,CAGf,MAAM,YACJpB,EAC6C,OAC7C,MAAMsB,EAAYJ,EAAAA,KAAK,EACvBX,EACE,CAAC,GAAG,KAAK,EAAE,GAAI,GAAGe,CAAS,OAAO,EAClC,CACE,UAAW,KAAK,IAAI,EACpB,YAAa,cACb,YAAatB,CACf,EACA,KAAK,MACP,EAEM,MAAA0B,EAAK,YAAY,IAAI,EACvB,GAAA,CACF,OAAO,MAAMlD,EAAY,kBAAkB,KAAK,MAAOwB,CAAO,QACvDoB,EAAc,CACrB,MAAM,IAAI,MACR,UAAU,KAAK,EAAE,wBAAwBE,CAAS,qBACpC,KAAK,UAAUtB,CAAO,CAAC;AAAA,EAE/BoB,EAAc,UAAU,EAChC,CAAA,QACA,CACM,MAAAO,EAAK,YAAY,IAAI,GACtBR,EAAA,KAAA,SAAA,MAAAA,EAAA,UACH,OACA,UAAU,KAAK,EAAE,wBAAwBG,CAAS,SAASM,EAAiB,KAAK,MAAMD,EAAKD,CAAE,CAAC,CAAC,GAClG,CACF,CAGF,MAAM,aACJ1B,EACyD,OACzD,MAAMsB,EAAYJ,EAAAA,KAAK,EACvBX,EACE,CAAC,GAAG,KAAK,EAAE,GAAI,GAAGe,CAAS,OAAO,EAClC,CACE,UAAW,KAAK,IAAI,EACpB,YAAa,eACb,YAAatB,CACf,EACA,KAAK,MACP,EAEM,MAAA0B,EAAK,YAAY,IAAI,EACvB,GAAA,CACF,OAAO,MAAMlD,EAAY,mBAAmB,KAAK,MAAOwB,CAAO,QACxDoB,EAAc,CACrB,MAAM,IAAI,MACR,UAAU,KAAK,EAAE,yBAAyBE,CAAS,qBACrC,KAAK,UAAUtB,CAAO,CAAC;AAAA,EAE/BoB,EAAc,UAAU,EAChC,CAAA,QACA,CACM,MAAAO,EAAK,YAAY,IAAI,GACtBR,EAAA,KAAA,SAAA,MAAAA,EAAA,UACH,OACA,UAAU,KAAK,EAAE,yBAAyBG,CAAS,SAASM,EAAiB,KAAK,MAAMD,EAAKD,CAAE,CAAC,CAAC,GACnG,CACF,CAGF,MAAM,cAAcjC,EAA2C,OAC7D,MAAM6B,EAAYJ,EAAAA,KAAK,EACvBX,EACE,CAAC,GAAG,KAAK,EAAE,GAAI,GAAGe,CAAS,OAAO,EAClC,CACE,UAAW,KAAK,IAAI,EACpB,YAAa,gBACb,YAAa,CACX,SAAU9B,EAAaC,CAAQ,CAAA,CAEnC,EACA,KAAK,MACP,EAEM,MAAAiC,EAAK,YAAY,IAAI,EACvB,GAAA,CACF,OAAO,MAAMlD,EAAY,oBAAoB,KAAK,MAAOiB,CAAQ,QAC1D2B,EAAc,CACrB,MAAM,IAAI,MACR,UAAU,KAAK,EAAE,0BAA0BE,CAAS,sBACrC,KAAK,UAAU7B,CAAQ,CAAC;AAAA,EAEjC2B,EAAc,UAAU,EAChC,CAAA,QACA,CACM,MAAAO,EAAK,YAAY,IAAI,GACtBR,EAAA,KAAA,SAAA,MAAAA,EAAA,UACH,OACA,UAAU,KAAK,EAAE,0BAA0BG,CAAS,SAASM,EAAiB,KAAK,MAAMD,EAAKD,CAAE,CAAC,CAAC,GACpG,CACF,CAGF,MAAM,aAAsC,OAC1C,MAAMJ,EAAYJ,EAAAA,KAAK,EACvBX,EACE,CAAC,GAAG,KAAK,EAAE,GAAI,GAAGe,CAAS,OAAO,EAClC,CACE,UAAW,KAAK,IAAI,EACpB,YAAa,aACf,EACA,KAAK,MACP,EAEM,MAAAI,EAAK,YAAY,IAAI,EACvB,GAAA,CACF,OAAO,MAAMlD,EAAY,kBAAkB,KAAK,KAAK,QAC9C4C,EAAc,CACrB,MAAM,IAAI,MACR,UAAU,KAAK,EAAE,wBAAwBE,CAAS;AAAA,EAE5CF,EAAc,UAAU,EAChC,CAAA,QACA,CACM,MAAAO,EAAK,YAAY,IAAI,GACtBR,EAAA,KAAA,SAAA,MAAAA,EAAA,UACH,OACA,UAAU,KAAK,EAAE,wBAAwBG,CAAS,SAASM,EAAiB,KAAK,MAAMD,EAAKD,CAAE,CAAC,CAAC,GAClG,CACF,CAGF,MAAM,YACJ1B,EACAgC,EACkC,SAClC,MAAMV,EAAYJ,EAAAA,KAAK,EACjBe,EAAW,CACf,UAAW,KAAK,IAAI,EACpB,YAAa,cACb,YAAa3B,EAA+BN,CAAO,CACrD,EACKO,EAAA,CAAC,GAAG,KAAK,EAAE,GAAI,GAAGe,CAAS,OAAO,EAAGW,EAAU,KAAK,MAAM,EAC/D1B,EACE,CAAC,GAAG,KAAK,EAAE,GAAI,GAAGe,CAAS,GAAI,GAAGA,CAAS,OAAO,EAClDW,EACA,KAAK,MACP,GAEKd,EAAA,KAAA,SAAA,MAAAA,EAAA,UACH,OACA,UAAU,KAAK,EAAE,wBAAwBG,CAAS,YAE9C,MAAAI,EAAK,YAAY,IAAI,EACvB,GAAA,CACFM,GAAA,MAAAA,EAAQ,iBACF,MAAAE,EAAQ,MAAM1D,EAAY,kBAC9B,KAAK,MACL8C,EACAtB,EACAgC,CACF,EACA,OAAO,IAAIG,EAAO,KAAMb,EAAWY,CAAK,QACjCd,EAAc,CACrB,MAAM,IAAI,MACR,UAAU,KAAK,EAAE,wBAAwBE,CAAS,qBACpC,KAAK,UAAUtB,CAAO,CAAC;AAAA,EAE/BoB,EAAc,UAAU,EAChC,CAAA,QACA,CACM,MAAAO,EAAK,YAAY,IAAI,GACtBS,EAAA,KAAA,SAAA,MAAAA,EAAA,UACH,OACA,UAAU,KAAK,EAAE,wBAAwBd,CAAS,mBAAmBM,EAAiB,KAAK,MAAMD,EAAKD,CAAE,CAAC,CAAC,GAC5G,CACF,CAGF,MAAM,gBACJ1B,EACAgC,EAC+B,SAC/B,MAAMV,EAAYJ,EAAAA,KAAK,EACvBX,EACE,CAAC,GAAG,KAAK,EAAE,GAAI,GAAGe,CAAS,OAAO,EAClC,CACE,UAAW,KAAK,IAAI,EACpB,YAAa,kBACb,YAAavB,EAAgCC,CAAO,CACtD,EACA,KAAK,MACP,GAEKmB,EAAA,KAAA,SAAA,MAAAA,EAAA,UACH,OACA,UAAU,KAAK,EAAE,4BAA4BG,CAAS,YAElD,MAAAI,EAAK,YAAY,IAAI,EACvB,GAAA,CACF,OAAAM,GAAA,MAAAA,EAAQ,iBACD,MAAMxD,EAAY,sBACvB,KAAK,MACL8C,EACAtB,EACAgC,CACF,QACOZ,EAAc,CACrB,MAAM,IAAI,MACR,UAAU,KAAK,EAAE,4BAA4BE,CAAS,qBACxC,KAAK,UAAUtB,CAAO,CAAC;AAAA,EAE/BoB,EAAc,UAAU,EAChC,CAAA,QACA,CACM,MAAAO,EAAK,YAAY,IAAI,GACtBS,EAAA,KAAA,SAAA,MAAAA,EAAA,UACH,OACA,UAAU,KAAK,EAAE,4BAA4Bd,CAAS,mBAAmBM,EAAiB,KAAK,MAAMD,EAAKD,CAAE,CAAC,CAAC,GAChH,CACF,CAEJ,EAEA,MAAMS,CAA0C,CAC9C,YACmBE,EACDC,EACCC,EACjB,SAHiB,KAAA,MAAAF,EACD,KAAA,GAAAC,EACC,KAAA,MAAAC,GAEjBH,GAAAjB,EAAA,KAAK,OAAM,SAAX,MAAAiB,EAAA,KAAAjB,EAAoB,OAAQ,UAAU,KAAK,EAAE,WAAU,CAGzD,UAAwB,CACtB,MAAMG,EAAYJ,EAAAA,KAAK,EACvBX,EACE,CAAC,GAAG,KAAK,MAAM,EAAE,GAAI,GAAG,KAAK,EAAE,GAAI,GAAGe,CAAS,OAAO,EACtD,CACE,UAAW,KAAK,IAAI,EACpB,YAAa,UACf,EACA,KAAK,MAAM,MACb,EAEI,GAAA,CACK,OAAA9C,EAAY,eAAe,KAAK,KAAK,QACrC4C,EAAc,CACrB,MAAM,IAAI,MACR,UAAU,KAAK,EAAE,qBAAqBE,CAAS;AAAA,EAEzCF,EAAc,UAAU,EAChC,CAAA,CACF,CAGF,SAA8B,CAC5B,MAAME,EAAYJ,EAAAA,KAAK,EACvBX,EACE,CAAC,GAAG,KAAK,MAAM,EAAE,GAAI,GAAG,KAAK,EAAE,GAAI,GAAGe,CAAS,OAAO,EACtD,CACE,UAAW,KAAK,IAAI,EACpB,YAAa,SACf,EACA,KAAK,MAAM,MACb,EAEI,GAAA,CACK,OAAA9C,EAAY,cAAc,KAAK,KAAK,QACpC4C,EAAc,CACrB,MAAM,IAAI,MACR,UAAU,KAAK,EAAE,oBAAoBE,CAAS;AAAA,EAExCF,EAAc,UAAU,EAChC,CAAA,CACF,CAGF,iBAAiBoB,EAAuC,CACtD,MAAMlB,EAAYJ,EAAAA,KAAK,EACvBX,EACE,CAAC,GAAG,KAAK,MAAM,EAAE,GAAI,GAAG,KAAK,EAAE,GAAI,GAAGe,CAAS,OAAO,EACtD,CACE,UAAW,KAAK,IAAI,EACpB,YAAa,mBACb,YAAa,CACX,UAAWkB,EAAU,IAAI7C,CAAiB,CAAA,CAE9C,EACA,KAAK,MAAM,MACb,EAEI,GAAA,CACF,OAAOnB,EAAY,uBAAuB,KAAK,MAAOgE,CAAS,QACxDpB,EAAc,CACrB,MAAM,IAAI,MACR,UAAU,KAAK,EAAE,6BAA6BE,CAAS,uBACvC,KAAK,UAAUkB,CAAS,CAAC;AAAA,EAEnCpB,EAAc,UAAU,EAChC,CAAA,CACF,CAGF,MAAM,QACJqB,EACAC,EACAV,EACyB,aACzB,MAAMV,EAAYJ,EAAAA,KAAK,EACvBX,EACE,CAAC,GAAG,KAAK,MAAM,EAAE,GAAI,GAAG,KAAK,EAAE,GAAI,GAAGe,CAAS,OAAO,EACtD,CACE,UAAW,KAAK,IAAI,EACpB,YAAa,UACb,YAAa,CACX,cAAAmB,EACA,MAAOC,GAAS,IAAA,CAEpB,EACA,KAAK,MAAM,MACb,GAEAN,GAAAjB,EAAA,KAAK,OAAM,SAAX,MAAAiB,EAAA,KAAAjB,EACE,OACA,UAAU,KAAK,EAAE,oBAAoBG,CAAS,YAE1C,MAAAI,EAAK,YAAY,IAAI,EACvB,GAAA,CACF,OAAAM,GAAA,MAAAA,EAAQ,iBACD,MAAMxD,EAAY,cACvB,KAAK,MACL8C,EACAmB,EACAC,EACAV,CACF,QACOZ,EAAc,CACrB,MAAM,IAAI,MACR,UAAU,KAAK,EAAE,oBAAoBE,CAAS,2BAC1B,KAAK,UAAUmB,CAAa,CAAC,YACrCC,EAAQ,KAAK,UAAUA,CAAK,EAAI,MAAS;AAAA,EAE/CtB,EAAc,UAAU,EAChC,CAAA,QACA,CACM,MAAAO,EAAK,YAAY,IAAI,GAC3BgB,GAAAC,EAAA,KAAK,OAAM,SAAX,MAAAD,EAAA,KAAAC,EACE,OACA,UAAU,KAAK,EAAE,oBAAoBtB,CAAS,mBAAmBM,EAAiB,KAAK,MAAMD,EAAKD,CAAE,CAAC,CAAC,GACxG,CACF,CAGF,MAAM,OACJ1B,EACAgC,EACkC,aAClC,MAAMV,EAAYJ,EAAAA,KAAK,EACjBe,EAAW,CACf,UAAW,KAAK,IAAI,EACpB,MAAO,KAAK,GACZ,YAAa,SACb,YAAa,CACX,QAASjC,EAAQ,IAAIH,CAAkB,CAAA,CAE3C,EACAU,EACE,CAAC,GAAG,KAAK,MAAM,EAAE,GAAI,GAAGe,CAAS,OAAO,EACxCW,EACA,KAAK,MAAM,MACb,EACA1B,EACE,CAAC,GAAG,KAAK,MAAM,EAAE,GAAI,GAAGe,CAAS,GAAI,GAAGA,CAAS,OAAO,EACxDW,EACA,KAAK,MAAM,MACb,GAEAG,GAAAjB,EAAA,KAAK,OAAM,SAAX,MAAAiB,EAAA,KAAAjB,EACE,OACA,UAAU,KAAK,EAAE,mBAAmBG,CAAS,YAEzC,MAAAI,EAAK,YAAY,IAAI,EACvB,GAAA,CACFM,GAAA,MAAAA,EAAQ,iBACF,MAAAE,EAAQ,MAAM1D,EAAY,aAC9B,KAAK,MACL8C,EACAtB,EACAgC,CACF,EACA,OAAO,IAAIG,EAAO,KAAK,MAAOb,EAAWY,CAAK,QACvCd,EAAc,CACrB,MAAM,IAAI,MACR,UAAU,KAAK,EAAE,mBAAmBE,CAAS,qBAC/B,KAAK,UAAUtB,CAAO,CAAC;AAAA,EAE/BoB,EAAc,UAAU,EAChC,CAAA,QACA,CACM,MAAAO,EAAK,YAAY,IAAI,GAC3BgB,GAAAC,EAAA,KAAK,OAAM,SAAX,MAAAD,EAAA,KAAAC,EACE,OACA,UAAU,KAAK,EAAE,mBAAmBtB,CAAS,mBAAmBM,EAAiB,KAAK,MAAMD,EAAKD,CAAE,CAAC,CAAC,GACvG,CACF,CAGF,MAAM,KACJ1B,EACAgC,EACkC,aAClC,MAAMV,EAAYJ,EAAAA,KAAK,EACjBe,EAAW,CACf,UAAW,KAAK,IAAI,EACpB,MAAO,KAAK,GACZ,YAAa,OACb,YAAajC,EAAQ,IAAIC,CAAmB,CAC9C,EACAM,EACE,CAAC,GAAG,KAAK,MAAM,EAAE,GAAI,GAAGe,CAAS,OAAO,EACxCW,EACA,KAAK,MAAM,MACb,EACA1B,EACE,CAAC,GAAG,KAAK,MAAM,EAAE,GAAI,GAAGe,CAAS,GAAI,GAAGA,CAAS,OAAO,EACxDW,EACA,KAAK,MAAM,MACb,GAEAG,GAAAjB,EAAA,KAAK,OAAM,SAAX,MAAAiB,EAAA,KAAAjB,EACE,OACA,UAAU,KAAK,EAAE,iBAAiBG,CAAS,YAEvC,MAAAI,EAAK,YAAY,IAAI,EACvB,GAAA,CACFM,GAAA,MAAAA,EAAQ,iBACF,MAAAE,EAAQ,MAAM1D,EAAY,WAC9B,KAAK,MACL8C,EACAtB,EACAgC,CACF,EACA,OAAO,IAAIG,EAAO,KAAK,MAAOb,EAAWY,CAAK,QACvCd,EAAc,CACrB,MAAM,IAAI,MACR,UAAU,KAAK,EAAE,iBAAiBE,CAAS,qBAC7B,KAAK,UAAUtB,CAAO,CAAC;AAAA,EAE/BoB,EAAc,UAAU,EAChC,CAAA,QACA,CACM,MAAAO,EAAK,YAAY,IAAI,GAC3BgB,GAAAC,EAAA,KAAK,OAAM,SAAX,MAAAD,EAAA,KAAAC,EACE,OACA,UAAU,KAAK,EAAE,iBAAiBtB,CAAS,mBAAmBM,EAAiB,KAAK,MAAMD,EAAKD,CAAE,CAAC,CAAC,GACrG,CACF,CAGF,SAAU,SACR,MAAMJ,EAAYJ,EAAAA,KAAK,EACvBX,EACE,CAAC,GAAG,KAAK,MAAM,EAAE,GAAI,GAAG,KAAK,EAAE,GAAI,GAAGe,CAAS,OAAO,EACtD,CACE,UAAW,KAAK,IAAI,EACpB,YAAa,SACf,EACA,KAAK,MAAM,MACb,EAEI,GAAA,CACU9C,EAAA,cAAc,KAAK,KAAK,GACpC4D,GAAAjB,EAAA,KAAK,OAAM,SAAX,MAAAiB,EAAA,KAAAjB,EAAoB,OAAQ,UAAU,KAAK,EAAE,mBACtCC,EAAc,CACrB,MAAM,IAAI,MACR,UAAU,KAAK,EAAE,oBAAoBE,CAAS;AAAA,EAExCF,EAAc,UAAU,EAChC,CAAA,CACF,CAGF,CAAC,OAAO,OAAO,GAAI,CACjB,KAAK,QAAQ,CAAA,CAEjB,CCtsBO,MAAMyB,EAAiBC"}