@vuu-ui/vuu-data-remote 0.8.23 → 0.8.24

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.
@@ -1 +1 @@
1
- export const workerSourceCode: "\nvar oe=(r,e,t)=>{if(!e.has(r))throw TypeError(\"Cannot \"+t)};var m=(r,e,t)=>(oe(r,e,\"read from private field\"),t?t.call(r):e.get(r)),ae=(r,e,t)=>{if(e.has(r))throw TypeError(\"Cannot add the same private member more than once\");e instanceof WeakSet?e.add(r):e.set(r,t)},ue=(r,e,t,n)=>(oe(r,e,\"write to private field\"),n?n.call(r,t):e.set(r,t),t);function le(r,e,t=[],n=[]){for(let s=0,i=r.length;s<i;s++)(e(r[s],s)?t:n).push(r[s]);return[t,n]}var B={IDX:0,RENDER_IDX:1,IS_LEAF:2,IS_EXPANDED:3,DEPTH:4,COUNT:5,KEY:6,SELECTED:7,count:8,PARENT_IDX:\"parent_idx\",IDX_POINTER:\"idx_pointer\",FILTER_COUNT:\"filter_count\",NEXT_FILTER_IDX:\"next_filter_idx\"};var{DEPTH:Lt,IS_LEAF:kt}=B;var ce=r=>{var e,t;if(((e=globalThis.document)==null?void 0:e.cookie)!==void 0)return(t=globalThis.document.cookie.split(\"; \").find(n=>n.startsWith(`${r}=`)))==null?void 0:t.split(\"=\")[1]};function G({from:r,to:e},t=0,n=Number.MAX_SAFE_INTEGER){if(r===0&&e===0)return{from:r,to:e};if(t===0)return n<r?{from:0,to:0}:{from:r,to:Math.min(e,n)};if(r===0)return{from:r,to:Math.min(e+t,n)};{let s=r-t<0,i=n-(e+t)<0;return s&&i?{from:0,to:n}:s?{from:0,to:e+t}:i?{from:Math.max(0,r-t),to:n}:{from:r-t,to:e+t}}}var je=(r,{from:e,to:t})=>r>=e&&r<t;var I=class r{constructor(e,t){this.from=e,this.to=t}isWithin(e){return je(e,this)}overlap(e,t){return e>=this.to||t<this.from?[0,0]:[Math.max(e,this.from),Math.min(t,this.to)]}copy(){return new r(this.from,this.to)}};var pe=r=>r.type===\"connection-status\",de=r=>r.type===\"connection-metrics\";var ge=r=>\"viewport\"in r;var Ye=[\"error\",\"warn\",\"info\",\"debug\"],Qe=r=>typeof r==\"string\"&&Ye.includes(r),Xe=\"error\",P=()=>{},Ze=\"error\",{loggingLevel:L=Ze}=et(),b=r=>{let e=L===\"debug\",t=e||L===\"info\",n=t||L===\"warn\",s=n||L===\"error\",i=t?p=>console.info(`[${r}] ${p}`):P,o=n?p=>console.warn(`[${r}] ${p}`):P,u=e?p=>console.debug(`[${r}] ${p}`):P;return{errorEnabled:s,error:s?p=>console.error(`[${r}] ${p}`):P}};function et(){return typeof loggingSettings<\"u\"?loggingSettings:{loggingLevel:tt()}}function tt(){let r=ce(\"vuu-logging-level\");return Qe(r)?r:Xe}var{debug:nt,debugEnabled:st}=b(\"range-monitor\"),k=class{constructor(e){this.source=e;this.range={from:0,to:0};this.timestamp=0}isSet(){return this.timestamp!==0}set({from:e,to:t}){let{timestamp:n}=this;if(this.range.from=e,this.range.to=t,this.timestamp=performance.now(),n)st&&nt(`<${this.source}> [${e}-${t}], ${(this.timestamp-n).toFixed(0)} ms elapsed`);else return 0}};var rt=[],x=class{constructor(e){this.keys=new Map;this.nextKeyValue=0;this.range=e,this.init(e)}next(e=rt){return e.length>0?e.shift():this.nextKeyValue++}init({from:e,to:t}){this.keys.clear(),this.nextKeyValue=0;for(let n=e;n<t;n++){let s=this.next();this.keys.set(n,s)}return!0}reset(e){let{from:t,to:n}=e,s=n-t,i=this.range.to-this.range.from;if(this.range=e,i>s)return this.init(e);let o=[];this.keys.forEach((u,l)=>{(l<t||l>=n)&&(o.push(u),this.keys.delete(l))});for(let u=t;u<n;u++)if(!this.keys.has(u)){let l=this.next(o);this.keys.set(u,l)}return!1}keyFor(e){let t=this.keys.get(e);if(t===void 0)throw console.log(`key not found\n keys: ${this.toDebugString()}\n `),Error(`KeySet, no key found for rowIndex ${e}`);return t}toDebugString(){return`${this.keys.size} keys\n${Array.from(this.keys.entries()).sort(([e],[t])=>e-t).map(([e,t])=>`${e}=>${t}`).join(\",\")}]\n`}};var{SELECTED:Gt}=B,E={False:0,True:1,First:2,Last:4};var it=(r,e)=>e>=r[0]&&e<=r[1],ot=E.True+E.First+E.Last,at=E.True+E.First,ut=E.True+E.Last,H=(r,e)=>{for(let t of r)if(typeof t==\"number\"){if(t===e)return ot}else if(it(t,e))return e===t[0]?at:e===t[1]?ut:E.True;return E.False};var he=r=>{if(r.every(t=>typeof t==\"number\"))return r;let e=[];for(let t of r)if(typeof t==\"number\")e.push(t);else for(let n=t[0];n<=t[1];n++)e.push(n);return e};var fe=r=>r.type===\"VIEW_PORT_MENU_RESP\"&&r.action!==null&&O(r.action.table),O=r=>r!==null&&typeof r==\"object\"&&\"table\"in r&&\"module\"in r?r.table.startsWith(\"session\"):!1;var lt=[\"VIEW_PORT_MENUS_SELECT_RPC\",\"VIEW_PORT_MENU_TABLE_RPC\",\"VIEW_PORT_MENU_ROW_RPC\",\"VIEW_PORT_MENU_CELL_RPC\",\"VP_EDIT_CELL_RPC\",\"VP_EDIT_ROW_RPC\",\"VP_EDIT_ADD_ROW_RPC\",\"VP_EDIT_DELETE_CELL_RPC\",\"VP_EDIT_DELETE_ROW_RPC\",\"VP_EDIT_SUBMIT_FORM_RPC\"],me=r=>lt.includes(r.type),Ce=r=>r.type===\"VIEW_PORT_RPC_CALL\",W=({requestId:r,...e})=>[r,e],Re=r=>{let e=r.at(0);if(e.updateType===\"SIZE\"){if(r.length===1)return r;e=r.at(1)}let t=r.at(-1);return[e,t]},Se=r=>{let e={};for(let t of r)(e[t.viewPortId]||(e[t.viewPortId]=[])).push(t);return e},z=({columns:r,dataTypes:e,key:t,table:n})=>({table:n,columns:r.map((s,i)=>({name:s,serverDataType:e[i]})),key:t});var Te=\"CHANGE_VP_SUCCESS\";var be=\"CLOSE_TREE_NODE\",we=\"CLOSE_TREE_SUCCESS\";var Ee=\"CREATE_VP\",Ve=\"DISABLE_VP\",ve=\"DISABLE_VP_SUCCESS\";var Me=\"ENABLE_VP\",ye=\"ENABLE_VP_SUCCESS\";var J=\"GET_VP_VISUAL_LINKS\",_e=\"GET_VIEW_PORT_MENUS\";var De=\"HB\",Ie=\"HB_RESP\",Pe=\"LOGIN\",Le=\"OPEN_TREE_NODE\",ke=\"OPEN_TREE_SUCCESS\";var xe=\"REMOVE_VP\";var Oe=\"SET_SELECTION_SUCCESS\";var Ae=r=>{switch(r){case\"TypeAheadRpcHandler\":return\"TYPEAHEAD\";default:return\"SIMUL\"}};var Ne=[],R=b(\"array-backed-moving-window\");function ct(r,e){if(!e||e.data.length!==r.data.length||e.sel!==r.sel)return!1;for(let t=0;t<e.data.length;t++)if(e.data[t]!==r.data[t])return!1;return!0}var h,A=class{constructor({from:e,to:t},{from:n,to:s},i){ae(this,h,void 0);this.setRowCount=e=>{var t;if((t=R.info)==null||t.call(R,`setRowCount ${e}`),e<this.internalData.length&&(this.internalData.length=e),e<this.rowCount){this.rowsWithinRange=0;let n=Math.min(e,this.clientRange.to);for(let s=this.clientRange.from;s<n;s++){let i=s-m(this,h).from;this.internalData[i]!==void 0&&(this.rowsWithinRange+=1)}}this.rowCount=e};this.bufferBreakout=(e,t)=>{let n=this.bufferSize*.25;return m(this,h).to-t<n?!0:m(this,h).from>0&&e-m(this,h).from<n};this.bufferSize=i,this.clientRange=new I(e,t),ue(this,h,new I(n,s)),this.internalData=new Array(i),this.rowsWithinRange=0,this.rowCount=0}get range(){return m(this,h)}get hasAllRowsWithinRange(){return this.rowsWithinRange===this.clientRange.to-this.clientRange.from||this.rowCount>0&&this.clientRange.from+this.rowsWithinRange===this.rowCount}outOfRange(e,t){let{from:n,to:s}=this.range;if(t<n||e>=s)return!0}setAtIndex(e){let{rowIndex:t}=e,n=t-m(this,h).from;if(ct(e,this.internalData[n]))return!1;let s=this.isWithinClientRange(t);return(s||this.isWithinRange(t))&&(!this.internalData[n]&&s&&(this.rowsWithinRange+=1),this.internalData[n]=e),s}getAtIndex(e){return m(this,h).isWithin(e)&&this.internalData[e-m(this,h).from]!=null?this.internalData[e-m(this,h).from]:void 0}isWithinRange(e){return m(this,h).isWithin(e)}isWithinClientRange(e){return this.clientRange.isWithin(e)}setClientRange(e,t){var p;(p=R.debug)==null||p.call(R,`setClientRange ${e} - ${t}`);let n=this.clientRange.from,s=Math.min(this.clientRange.to,this.rowCount);if(e===n&&t===s)return[!1,Ne];let i=this.clientRange.copy();this.clientRange.from=e,this.clientRange.to=t,this.rowsWithinRange=0;for(let a=e;a<t;a++){let c=a-m(this,h).from;this.internalData[c]&&(this.rowsWithinRange+=1)}let o=Ne,u=m(this,h).from;if(this.hasAllRowsWithinRange)if(t>i.to){let a=Math.max(e,i.to);o=this.internalData.slice(a-u,t-u)}else{let a=Math.min(i.from,t);o=this.internalData.slice(e-u,a-u)}return[this.bufferBreakout(e,t),o]}setRange(e,t){var n,s;if(e!==m(this,h).from||t!==m(this,h).to){(n=R.debug)==null||n.call(R,`setRange ${e} - ${t}`);let[i,o]=m(this,h).overlap(e,t),u=new Array(t-e);this.rowsWithinRange=0;for(let l=i;l<o;l++){let p=this.getAtIndex(l);if(p){let a=l-e;u[a]=p,this.isWithinClientRange(l)&&(this.rowsWithinRange+=1)}}this.internalData=u,m(this,h).from=e,m(this,h).to=t}else(s=R.debug)==null||s.call(R,`setRange ${e} - ${t} IGNORED because not changed`)}get data(){return this.internalData}getData(){var u;let{from:e,to:t}=m(this,h),{from:n,to:s}=this.clientRange,i=Math.max(0,n-e),o=Math.min(t-e,t,s-e,(u=this.rowCount)!=null?u:t);return this.internalData.slice(i,o)}clear(){var e;(e=R.debug)==null||e.call(R,\"clear\"),this.internalData.length=0,this.rowsWithinRange=0,this.setRowCount(0)}getCurrentDataRange(){let e=this.internalData,t=e.length,[n]=this.internalData,s=this.internalData[t-1];if(n&&s)return[n.rowIndex,s.rowIndex];for(let i=0;i<t;i++)if(e[i]!==void 0){n=e[i];break}for(let i=t-1;i>=0;i--)if(e[i]!==void 0){s=e[i];break}return n&&s?[n.rowIndex,s.rowIndex]:[-1,-1]}};h=new WeakMap;var pt=[],{debug:f,debugEnabled:N,error:dt,info:d,infoEnabled:gt,warn:M}=b(\"viewport\"),ht=({rowKey:r,updateType:e})=>e===\"U\"&&!r.startsWith(\"$root\"),U=[void 0,void 0],ft={count:0,mode:void 0,size:0,ts:0},q=class{constructor({aggregations:e,bufferSize:t=50,columns:n,filter:s,groupBy:i=[],table:o,range:u,sort:l,title:p,viewport:a,visualLink:c},g){this.batchMode=!0;this.hasUpdates=!1;this.pendingUpdates=[];this.pendingOperations=new Map;this.pendingRangeRequests=[];this.rowCountChanged=!1;this.selectedRows=[];this.useBatchMode=!0;this.lastUpdateStatus=ft;this.updateThrottleTimer=void 0;this.rangeMonitor=new k(\"ViewPort\");this.disabled=!1;this.isTree=!1;this.status=\"\";this.suspended=!1;this.suspendTimer=null;this.setLastSizeOnlyUpdateSize=e=>{this.lastUpdateStatus.size=e};this.setLastUpdate=e=>{let{ts:t,mode:n}=this.lastUpdateStatus,s=0;if(n===e){let i=Date.now();this.lastUpdateStatus.count+=1,this.lastUpdateStatus.ts=i,s=t===0?0:i-t}else this.lastUpdateStatus.count=1,this.lastUpdateStatus.ts=0,s=0;return this.lastUpdateStatus.mode=e,s};this.rangeRequestAlreadyPending=e=>{let{bufferSize:t}=this,n=t*.25,{from:s}=e;for(let{from:i,to:o}of this.pendingRangeRequests)if(s>=i&&s<o){if(e.to+n<=o)return!0;s=o}return!1};this.sendThrottledSizeMessage=()=>{this.updateThrottleTimer=void 0,this.lastUpdateStatus.count=3,this.postMessageToClient({clientViewportId:this.clientViewportId,mode:\"size-only\",size:this.lastUpdateStatus.size,type:\"viewport-update\"})};this.shouldThrottleMessage=e=>{let t=this.setLastUpdate(e);return e===\"size-only\"&&t>0&&t<500&&this.lastUpdateStatus.count>3};this.throttleMessage=e=>this.shouldThrottleMessage(e)?(d==null||d(\"throttling updates setTimeout to 2000\"),this.updateThrottleTimer===void 0&&(this.updateThrottleTimer=setTimeout(this.sendThrottledSizeMessage,2e3)),!0):(this.updateThrottleTimer!==void 0&&(clearTimeout(this.updateThrottleTimer),this.updateThrottleTimer=void 0),!1);this.getNewRowCount=()=>{if(this.rowCountChanged&&this.dataWindow)return this.rowCountChanged=!1,this.dataWindow.rowCount};this.aggregations=e,this.bufferSize=t,this.clientRange=u,this.clientViewportId=a,this.columns=n,this.filter=s,this.groupBy=i,this.keys=new x(u),this.pendingLinkedParent=c,this.table=o,this.sort=l,this.title=p,gt&&(d==null||d(`constructor #${a} ${o.table} bufferSize=${t}`)),this.dataWindow=new A(this.clientRange,u,this.bufferSize),this.postMessageToClient=g}get hasUpdatesToProcess(){return this.suspended?!1:this.rowCountChanged||this.hasUpdates}get size(){var e;return(e=this.dataWindow.rowCount)!=null?e:0}subscribe(){let{filter:e}=this.filter;return this.status=this.status===\"subscribed\"?\"resubscribing\":\"subscribing\",{type:Ee,table:this.table,range:G(this.clientRange,this.bufferSize),aggregations:this.aggregations,columns:this.columns,sort:this.sort,groupBy:this.groupBy,filterSpec:{filter:e}}}handleSubscribed({viewPortId:e,aggregations:t,columns:n,filterSpec:s,range:i,sort:o,groupBy:u,table:l},p){this.serverViewportId=e,this.status=\"subscribed\",this.aggregations=t,this.columns=n,this.groupBy=u,this.isTree=u&&u.length>0,this.dataWindow.setRange(i.from,i.to);let a=l===p.table.table?p:{...p,table:{...p.table,session:l}};return{aggregations:t,type:\"subscribed\",clientViewportId:this.clientViewportId,columns:n,filter:s,groupBy:u,range:i,sort:o,tableSchema:a}}awaitOperation(e,t){this.pendingOperations.set(e,t)}completeOperation(e,...t){var u;let{clientViewportId:n,pendingOperations:s}=this,i=s.get(e);if(!i){dt(`no matching operation found to complete for requestId ${e}`);return}let{type:o}=i;if(d==null||d(`completeOperation ${o}`),s.delete(e),o===\"CHANGE_VP_RANGE\"){let[l,p]=t;(u=this.dataWindow)==null||u.setRange(l,p);for(let a=this.pendingRangeRequests.length-1;a>=0;a--){let c=this.pendingRangeRequests[a];if(c.requestId===e){c.acked=!0;break}else M==null||M(\"range requests sent faster than they are being ACKed\")}}else if(o===\"config\"){let{aggregations:l,columns:p,filter:a,groupBy:c,sort:g}=i.data;return this.aggregations=l,this.columns=p,this.filter=a,this.groupBy=c,this.sort=g,c.length>0?this.isTree=!0:this.isTree&&(this.isTree=!1),f==null||f(`config change confirmed, isTree : ${this.isTree}`),{clientViewportId:n,type:o,config:i.data}}else{if(o===\"groupBy\")return this.isTree=i.data.length>0,this.groupBy=i.data,f==null||f(`groupBy change confirmed, isTree : ${this.isTree}`),{clientViewportId:n,type:o,groupBy:i.data};if(o===\"columns\")return this.columns=i.data,{clientViewportId:n,type:o,columns:i.data};if(o===\"filter\")return this.filter=i.data,{clientViewportId:n,type:o,filter:i.data};if(o===\"aggregate\")return this.aggregations=i.data,{clientViewportId:n,type:\"aggregate\",aggregations:this.aggregations};if(o===\"sort\")return this.sort=i.data,{clientViewportId:n,type:o,sort:this.sort};if(o!==\"selection\"){if(o===\"disable\")return this.disabled=!0,{type:\"disabled\",clientViewportId:n};if(o===\"enable\")return this.disabled=!1,{type:\"enabled\",clientViewportId:n};if(o===\"CREATE_VISUAL_LINK\"){let[l,p,a]=t;return this.linkedParent={colName:l,parentViewportId:p,parentColName:a},this.pendingLinkedParent=void 0,{type:\"vuu-link-created\",clientViewportId:n,colName:l,parentViewportId:p,parentColName:a}}else if(o===\"REMOVE_VISUAL_LINK\")return this.linkedParent=void 0,{type:\"vuu-link-removed\",clientViewportId:n}}}}rangeRequest(e,t){N&&this.rangeMonitor.set(t);let n=\"CHANGE_VP_RANGE\";if(this.dataWindow){let[s,i]=this.dataWindow.setClientRange(t.from,t.to),o,u=this.dataWindow.rowCount||void 0,l=s&&!this.rangeRequestAlreadyPending(t)?{type:n,viewPortId:this.serverViewportId,...G(t,this.bufferSize,u)}:null;if(l){N&&(f==null||f(`create CHANGE_VP_RANGE: [${l.from} - ${l.to}]`)),this.awaitOperation(e,{type:n});let a=this.pendingRangeRequests.at(-1);if(a)if(a.acked)console.warn(\"Range Request before previous request is filled\");else{let{from:c,to:g}=a;this.dataWindow.outOfRange(c,g)?o={clientViewportId:this.clientViewportId,type:\"debounce-begin\"}:M==null||M(\"Range Request before previous request is acked\")}this.pendingRangeRequests.push({...l,requestId:e}),this.useBatchMode&&(this.batchMode=!0)}else i.length>0&&(this.batchMode=!1);this.keys.reset(this.dataWindow.clientRange);let p=this.isTree?j:K;return i.length?[l,i.map(a=>p(a,this.keys,this.selectedRows))]:o?[l,void 0,o]:[l]}else return[null]}setLinks(e){return this.links=e,[{type:\"vuu-links\",links:e,clientViewportId:this.clientViewportId},this.pendingLinkedParent]}setMenu(e){return{type:\"vuu-menu\",menu:e,clientViewportId:this.clientViewportId}}openTreeNode(e,t){return this.useBatchMode&&(this.batchMode=!0),{type:Le,vpId:this.serverViewportId,treeKey:t.key}}closeTreeNode(e,t){return this.useBatchMode&&(this.batchMode=!0),{type:be,vpId:this.serverViewportId,treeKey:t.key}}createLink(e,t,n,s){let i={type:\"CREATE_VISUAL_LINK\",parentVpId:n,childVpId:this.serverViewportId,parentColumnName:s,childColumnName:t};return this.awaitOperation(e,i),this.useBatchMode&&(this.batchMode=!0),i}removeLink(e){let t={type:\"REMOVE_VISUAL_LINK\",childVpId:this.serverViewportId};return this.awaitOperation(e,t),t}suspend(){this.suspended=!0,d==null||d(\"suspend\")}resume(){return this.suspended=!1,N&&(f==null||f(`resume: ${this.currentData()}`)),[this.size,this.currentData()]}currentData(){let e=[];if(this.dataWindow){let t=this.dataWindow.getData(),{keys:n}=this,s=this.isTree?j:K;for(let i of t)i&&e.push(s(i,n,this.selectedRows))}return e}enable(e){return this.awaitOperation(e,{type:\"enable\"}),d==null||d(`enable: ${this.serverViewportId}`),{type:Me,viewPortId:this.serverViewportId}}disable(e){return this.awaitOperation(e,{type:\"disable\"}),d==null||d(`disable: ${this.serverViewportId}`),this.suspended=!1,{type:Ve,viewPortId:this.serverViewportId}}columnRequest(e,t){return this.awaitOperation(e,{type:\"columns\",data:t}),f==null||f(`columnRequest: ${t}`),this.createRequest({columns:t})}filterRequest(e,t){this.awaitOperation(e,{type:\"filter\",data:t}),this.useBatchMode&&(this.batchMode=!0);let{filter:n}=t;return d==null||d(`filterRequest: ${n}`),this.createRequest({filterSpec:{filter:n}})}setConfig(e,t){this.awaitOperation(e,{type:\"config\",data:t});let{filter:n,...s}=t;return this.useBatchMode&&(this.batchMode=!0),N?f==null||f(`setConfig ${JSON.stringify(t)}`):d==null||d(\"setConfig\"),this.createRequest({...s,filterSpec:typeof(n==null?void 0:n.filter)==\"string\"?{filter:n.filter}:{filter:\"\"}},!0)}aggregateRequest(e,t){return this.awaitOperation(e,{type:\"aggregate\",data:t}),d==null||d(`aggregateRequest: ${t}`),this.createRequest({aggregations:t})}sortRequest(e,t){return this.awaitOperation(e,{type:\"sort\",data:t}),d==null||d(`sortRequest: ${JSON.stringify(t.sortDefs)}`),this.createRequest({sort:t})}groupByRequest(e,t=pt){var n;return this.awaitOperation(e,{type:\"groupBy\",data:t}),this.useBatchMode&&(this.batchMode=!0),this.isTree||(n=this.dataWindow)==null||n.clear(),this.createRequest({groupBy:t})}selectRequest(e,t){return this.selectedRows=t,this.awaitOperation(e,{type:\"selection\",data:t}),d==null||d(`selectRequest: ${t}`),{type:\"SET_SELECTION\",vpId:this.serverViewportId,selection:he(t)}}removePendingRangeRequest(e,t){for(let n=this.pendingRangeRequests.length-1;n>=0;n--){let{from:s,to:i}=this.pendingRangeRequests[n],o=!0;if(e>=s&&e<i||t>s&&t<i){o||console.warn(\"removePendingRangeRequest TABLE_ROWS are not for latest request\"),this.pendingRangeRequests.splice(n,1);break}else o=!1}}updateRows(e){var s,i,o;let[t,n]=Re(e);if(t&&n&&this.removePendingRangeRequest(t.rowIndex,n.rowIndex),e.length===1)if(t.vpSize===0&&this.disabled){f==null||f(`ignore a SIZE=0 message on disabled viewport (${e.length} rows)`);return}else t.updateType===\"SIZE\"&&this.setLastSizeOnlyUpdateSize(t.vpSize);for(let u of e)this.isTree&&ht(u)||((u.updateType===\"SIZE\"||((s=this.dataWindow)==null?void 0:s.rowCount)!==u.vpSize)&&((i=this.dataWindow)==null||i.setRowCount(u.vpSize),this.rowCountChanged=!0),u.updateType===\"U\"&&(o=this.dataWindow)!=null&&o.setAtIndex(u)&&(this.hasUpdates=!0,this.batchMode||this.pendingUpdates.push(u)))}getClientRows(){let e,t=\"size-only\";if(!this.hasUpdates&&!this.rowCountChanged)return U;if(this.hasUpdates){let{keys:n,selectedRows:s}=this,i=this.isTree?j:K;if(this.updateThrottleTimer&&(self.clearTimeout(this.updateThrottleTimer),this.updateThrottleTimer=void 0),this.pendingUpdates.length>0){e=[],t=\"update\";for(let o of this.pendingUpdates)e.push(i(o,n,s));this.pendingUpdates.length=0}else{let o=this.dataWindow.getData();if(this.dataWindow.hasAllRowsWithinRange){e=[],t=\"batch\";for(let u of o)e.push(i(u,n,s));this.batchMode=!1}}this.hasUpdates=!1}return this.throttleMessage(t)?U:[e,t]}createRequest(e,t=!1){return t?{type:\"CHANGE_VP\",viewPortId:this.serverViewportId,...e}:{type:\"CHANGE_VP\",viewPortId:this.serverViewportId,aggregations:this.aggregations,columns:this.columns,sort:this.sort,groupBy:this.groupBy,filterSpec:{filter:this.filter.filter},...e}}},K=({rowIndex:r,rowKey:e,sel:t,data:n},s,i)=>[r,s.keyFor(r),!0,!1,0,0,e,t?H(i,r):0].concat(n),j=({rowIndex:r,rowKey:e,sel:t,data:n},s,i)=>{let[o,u,,l,,p,...a]=n;return[r,s.keyFor(r),l,u,o,p,e,t?H(i,r):0].concat(a)};var Ue=1;var{debug:V,debugEnabled:Y,error:y,info:T,infoEnabled:mt,warn:Q}=b(\"server-proxy\"),C=()=>`${Ue++}`,Ct={},Rt=r=>r.disabled!==!0&&r.suspended!==!0,St={type:\"NO_ACTION\"},Tt=(r,e,t)=>r.map(n=>n.parentVpId===e?{...n,label:t}:n);function bt(r,e){return r.map(t=>{let{parentVpId:n}=t,s=e.get(n);if(s)return{...t,parentClientVpId:s.clientViewportId,label:s.title};throw Error(\"addLabelsToLinks viewport not found\")})}var F=class{constructor(e,t){this.authToken=\"\";this.user=\"user\";this.pendingRequests=new Map;this.queuedRequests=[];this.cachedTableMetaRequests=new Map;this.cachedTableSchemas=new Map;this.connection=e,this.postMessageToClient=t,this.viewports=new Map,this.mapClientToServerViewport=new Map}async reconnect(){await this.login(this.authToken);let[e,t]=le(Array.from(this.viewports.values()),Rt);this.viewports.clear(),this.mapClientToServerViewport.clear();let n=s=>{s.forEach(i=>{let{clientViewportId:o}=i;this.viewports.set(o,i),this.sendMessageToServer(i.subscribe(),o)})};n(e),setTimeout(()=>{n(t)},2e3)}async login(e,t=\"user\"){if(e)return this.authToken=e,this.user=t,new Promise((n,s)=>{this.sendMessageToServer({type:Pe,token:this.authToken,user:t},\"\"),this.pendingLogin={resolve:n,reject:s}});this.authToken===\"\"&&y(\"login, cannot login until auth token has been obtained\")}subscribe(e){if(this.mapClientToServerViewport.has(e.viewport))y(`spurious subscribe call ${e.viewport}`);else{let t=this.getTableMeta(e.table),n=new q(e,this.postMessageToClient);this.viewports.set(e.viewport,n);let s=this.awaitResponseToMessage(n.subscribe(),e.viewport);Promise.all([s,t]).then(([o,u])=>{let{viewPortId:l}=o,{status:p}=n;e.viewport!==l&&(this.viewports.delete(e.viewport),this.viewports.set(l,n)),this.mapClientToServerViewport.set(e.viewport,l);let a=n.handleSubscribed(o,u);a&&(this.postMessageToClient(a),Y&&V(`post DataSourceSubscribedMessage to client: ${JSON.stringify(a)}`)),n.disabled&&this.disableViewport(n),this.queuedRequests.length>0&&this.processQueuedRequests(),p===\"subscribing\"&&!O(n.table)&&(this.sendMessageToServer({type:J,vpId:l}),this.sendMessageToServer({type:_e,vpId:l}),Array.from(this.viewports.entries()).filter(([c,{disabled:g}])=>c!==l&&!g).forEach(([c])=>{this.sendMessageToServer({type:J,vpId:c})}))})}}processQueuedRequests(){let e={};for(;this.queuedRequests.length;){let t=this.queuedRequests.pop();if(t){let{clientViewportId:n,message:s,requestId:i}=t;if(s.type===\"CHANGE_VP_RANGE\"){if(e.CHANGE_VP_RANGE)continue;e.CHANGE_VP_RANGE=!0;let o=this.mapClientToServerViewport.get(n);o&&this.sendMessageToServer({...s,viewPortId:o},i)}}}}unsubscribe(e){let t=this.mapClientToServerViewport.get(e);t?(T==null||T(`Unsubscribe Message (Client to Server):\n ${t}`),this.sendMessageToServer({type:xe,viewPortId:t})):y(`failed to unsubscribe client viewport ${e}, viewport not found`)}getViewportForClient(e,t=!0){let n=this.mapClientToServerViewport.get(e);if(n){let s=this.viewports.get(n);if(s)return s;if(t)throw Error(`Viewport not found for client viewport ${e}`);return null}else{if(this.viewports.has(e))return this.viewports.get(e);if(t)throw Error(`Viewport server id not found for client viewport ${e}`);return null}}setViewRange(e,t){let n=C(),[s,i,o]=e.rangeRequest(n,t.range);T==null||T(`setViewRange ${t.range.from} - ${t.range.to}`),s&&(this.sendIfReady(s,n,e.status===\"subscribed\")||this.queuedRequests.push({clientViewportId:t.viewport,message:s,requestId:n})),i?(T==null||T(`setViewRange ${i.length} rows returned from cache`),this.postMessageToClient({mode:\"batch\",type:\"viewport-update\",clientViewportId:e.clientViewportId,rows:i})):o&&this.postMessageToClient(o)}setConfig(e,t){let n=C(),s=e.setConfig(n,t.config);this.sendIfReady(s,n,e.status===\"subscribed\")}aggregate(e,t){let n=C(),s=e.aggregateRequest(n,t.aggregations);this.sendIfReady(s,n,e.status===\"subscribed\")}sort(e,t){let n=C(),s=e.sortRequest(n,t.sort);this.sendIfReady(s,n,e.status===\"subscribed\")}groupBy(e,t){let n=C(),s=e.groupByRequest(n,t.groupBy);this.sendIfReady(s,n,e.status===\"subscribed\")}filter(e,t){let n=C(),{filter:s}=t,i=e.filterRequest(n,s);this.sendIfReady(i,n,e.status===\"subscribed\")}setColumns(e,t){let n=C(),{columns:s}=t,i=e.columnRequest(n,s);this.sendIfReady(i,n,e.status===\"subscribed\")}setTitle(e,t){e&&(e.title=t.title,this.updateTitleOnVisualLinks(e))}select(e,t){let n=C(),{selected:s}=t,i=e.selectRequest(n,s);this.sendIfReady(i,n,e.status===\"subscribed\")}disableViewport(e){let t=C(),n=e.disable(t);this.sendIfReady(n,t,e.status===\"subscribed\")}enableViewport(e){if(e.disabled){let t=C(),n=e.enable(t);this.sendIfReady(n,t,e.status===\"subscribed\")}}suspendViewport(e){e.suspend(),e.suspendTimer=setTimeout(()=>{T==null||T(\"suspendTimer expired, escalate suspend to disable\"),this.disableViewport(e)},3e3)}resumeViewport(e){e.suspendTimer&&(V==null||V(\"clear suspend timer\"),clearTimeout(e.suspendTimer),e.suspendTimer=null);let[t,n]=e.resume();V==null||V(`resumeViewport size ${t}, ${n.length} rows sent to client`),this.postMessageToClient({clientViewportId:e.clientViewportId,mode:\"batch\",rows:n,size:t,type:\"viewport-update\"})}openTreeNode(e,t){if(e.serverViewportId){let n=C();this.sendIfReady(e.openTreeNode(n,t),n,e.status===\"subscribed\")}}closeTreeNode(e,t){if(e.serverViewportId){let n=C();this.sendIfReady(e.closeTreeNode(n,t),n,e.status===\"subscribed\")}}createLink(e,t){let{parentClientVpId:n,parentColumnName:s,childColumnName:i}=t,o=C(),u=this.mapClientToServerViewport.get(n);if(u){let l=e.createLink(o,i,u,s);this.sendMessageToServer(l,o)}else y(\"ServerProxy unable to create link, viewport not found\")}removeLink(e){let t=C(),n=e.removeLink(t);this.sendMessageToServer(n,t)}updateTitleOnVisualLinks(e){var s;let{serverViewportId:t,title:n}=e;for(let i of this.viewports.values())if(i!==e&&i.links&&t&&n&&(s=i.links)!=null&&s.some(o=>o.parentVpId===t)){let[o]=i.setLinks(Tt(i.links,t,n));this.postMessageToClient(o)}}removeViewportFromVisualLinks(e){var t;for(let n of this.viewports.values())if((t=n.links)!=null&&t.some(({parentVpId:s})=>s===e)){let[s]=n.setLinks(n.links.filter(({parentVpId:i})=>i!==e));this.postMessageToClient(s)}}menuRpcCall(e){let t=this.getViewportForClient(e.vpId,!1);if(t!=null&&t.serverViewportId){let[n,s]=W(e);this.sendMessageToServer({...s,vpId:t.serverViewportId},n)}}viewportRpcCall(e){let t=this.getViewportForClient(e.vpId,!1);if(t!=null&&t.serverViewportId){let[n,s]=W(e);this.sendMessageToServer({...s,vpId:t.serverViewportId,namedParams:{}},n)}}rpcCall(e){let[t,n]=W(e),s=Ae(n.service);this.sendMessageToServer(n,t,{module:s})}handleMessageFromClient(e){var t;if(ge(e))if(e.type===\"disable\"){let n=this.getViewportForClient(e.viewport,!1);return n!==null?this.disableViewport(n):void 0}else{let n=this.getViewportForClient(e.viewport);switch(e.type){case\"setViewRange\":return this.setViewRange(n,e);case\"config\":return this.setConfig(n,e);case\"aggregate\":return this.aggregate(n,e);case\"sort\":return this.sort(n,e);case\"groupBy\":return this.groupBy(n,e);case\"filter\":return this.filter(n,e);case\"select\":return this.select(n,e);case\"suspend\":return this.suspendViewport(n);case\"resume\":return this.resumeViewport(n);case\"enable\":return this.enableViewport(n);case\"openTreeNode\":return this.openTreeNode(n,e);case\"closeTreeNode\":return this.closeTreeNode(n,e);case\"createLink\":return this.createLink(n,e);case\"removeLink\":return this.removeLink(n);case\"setColumns\":return this.setColumns(n,e);case\"setTitle\":return this.setTitle(n,e);default:}}else{if(Ce(e))return this.viewportRpcCall(e);if(me(e))return this.menuRpcCall(e);{let{type:n,requestId:s}=e;switch(n){case\"GET_TABLE_LIST\":{(t=this.tableList)!=null||(this.tableList=this.awaitResponseToMessage({type:n},s)),this.tableList.then(i=>{this.postMessageToClient({type:\"TABLE_LIST_RESP\",tables:i.tables,requestId:s})});return}case\"GET_TABLE_META\":{this.getTableMeta(e.table,s).then(i=>{i&&this.postMessageToClient({type:\"TABLE_META_RESP\",tableSchema:i,requestId:s})});return}case\"RPC_CALL\":return this.rpcCall(e);default:}}}y(`Vuu ServerProxy Unexpected message from client ${JSON.stringify(e)}`)}getTableMeta(e,t=C()){if(O(e))return Promise.resolve(void 0);let n=`${e.module}:${e.table}`,s=this.cachedTableMetaRequests.get(n);return s||(s=this.awaitResponseToMessage({type:\"GET_TABLE_META\",table:e},t),this.cachedTableMetaRequests.set(n,s)),s==null?void 0:s.then(i=>this.cacheTableMeta(i))}awaitResponseToMessage(e,t=C()){return new Promise((n,s)=>{this.sendMessageToServer(e,t),this.pendingRequests.set(t,{reject:s,resolve:n})})}sendIfReady(e,t,n=!0){return n&&this.sendMessageToServer(e,t),n}sendMessageToServer(e,t=`${Ue++}`,n=Ct){let{module:s=\"CORE\"}=n;this.authToken&&this.connection.send({requestId:t,sessionId:this.sessionId,token:this.authToken,user:this.user,module:s,body:e})}handleMessageFromServer(e){var u;let{body:t,requestId:n,sessionId:s}=e,i=this.pendingRequests.get(n);if(i){let{resolve:a}=i;this.pendingRequests.delete(n),a(t);return}let{viewports:o}=this;switch(t.type){case De:this.sendMessageToServer({type:Ie,ts:+new Date},\"NA\");break;case\"LOGIN_SUCCESS\":if(s)this.sessionId=s,(u=this.pendingLogin)==null||u.resolve(s),this.pendingLogin=void 0;else throw Error(\"LOGIN_SUCCESS did not provide sessionId\");break;case\"REMOVE_VP_SUCCESS\":{let a=o.get(t.viewPortId);a&&(this.mapClientToServerViewport.delete(a.clientViewportId),o.delete(t.viewPortId),this.removeViewportFromVisualLinks(t.viewPortId))}break;case Oe:{let a=this.viewports.get(t.vpId);a&&a.completeOperation(n)}break;case Te:case ve:if(o.has(t.viewPortId)){let a=this.viewports.get(t.viewPortId);if(a){let c=a.completeOperation(n);c!==void 0&&(this.postMessageToClient(c),Y&&V(`postMessageToClient ${JSON.stringify(c)}`))}}break;case ye:{let a=this.viewports.get(t.viewPortId);if(a){let c=a.completeOperation(n);if(c){this.postMessageToClient(c);let[g,S]=a.resume();this.postMessageToClient({clientViewportId:a.clientViewportId,mode:\"batch\",rows:S,size:g,type:\"viewport-update\"})}}}break;case\"TABLE_ROW\":{let a=Se(t.rows);for(let[c,g]of Object.entries(a)){let S=o.get(c);S?S.updateRows(g):Q==null||Q(`TABLE_ROW message received for non registered viewport ${c}`)}this.processUpdates()}break;case\"CHANGE_VP_RANGE_SUCCESS\":{let a=this.viewports.get(t.viewPortId);if(a){let{from:c,to:g}=t;a.completeOperation(n,c,g)}}break;case ke:case we:break;case\"CREATE_VISUAL_LINK_SUCCESS\":{let a=this.viewports.get(t.childVpId),c=this.viewports.get(t.parentVpId);if(a&&c){let{childColumnName:g,parentColumnName:S}=t,D=a.completeOperation(n,g,c.clientViewportId,S);D&&this.postMessageToClient(D)}}break;case\"REMOVE_VISUAL_LINK_SUCCESS\":{let a=this.viewports.get(t.childVpId);if(a){let c=a.completeOperation(n);c&&this.postMessageToClient(c)}}break;case\"VP_VISUAL_LINKS_RESP\":{let a=this.getActiveLinks(t.links),c=this.viewports.get(t.vpId);if(a.length&&c){let g=bt(a,this.viewports),[S,D]=c.setLinks(g);if(this.postMessageToClient(S),D){let{link:se,parentClientVpId:Je}=D,re=C(),ie=this.mapClientToServerViewport.get(Je);if(ie){let Ke=c.createLink(re,se.fromColumn,ie,se.toColumn);this.sendMessageToServer(Ke,re)}}}}break;case\"VIEW_PORT_MENUS_RESP\":if(t.menu.name){let a=this.viewports.get(t.vpId);if(a){let c=a.setMenu(t.menu);this.postMessageToClient(c)}}break;case\"VP_EDIT_RPC_RESPONSE\":this.postMessageToClient({action:t.action,requestId:n,rpcName:t.rpcName,type:\"VP_EDIT_RPC_RESPONSE\"});break;case\"VP_EDIT_RPC_REJECT\":this.viewports.get(t.vpId)&&this.postMessageToClient({requestId:n,type:\"VP_EDIT_RPC_REJECT\",error:t.error});break;case\"VIEW_PORT_MENU_REJ\":{console.log(\"send menu error back to client\");let{error:a,rpcName:c,vpId:g}=t,S=this.viewports.get(g);S&&this.postMessageToClient({clientViewportId:S.clientViewportId,error:a,rpcName:c,type:\"VIEW_PORT_MENU_REJ\",requestId:n});break}case\"VIEW_PORT_MENU_RESP\":if(fe(t)){let{action:a,rpcName:c}=t;this.awaitResponseToMessage({type:\"GET_TABLE_META\",table:a.table}).then(g=>{let S=z(g);this.postMessageToClient({rpcName:c,type:\"VIEW_PORT_MENU_RESP\",action:{...a,tableSchema:S},tableAlreadyOpen:this.isTableOpen(a.table),requestId:n})})}else{let{action:a}=t;this.postMessageToClient({type:\"VIEW_PORT_MENU_RESP\",action:a||St,tableAlreadyOpen:a!==null&&this.isTableOpen(a.table),requestId:n})}break;case\"RPC_RESP\":{let{method:a,result:c}=t;this.postMessageToClient({type:\"RPC_RESP\",method:a,result:c,requestId:n})}break;case\"VIEW_PORT_RPC_REPONSE\":{let{method:a,action:c}=t;this.postMessageToClient({type:\"VIEW_PORT_RPC_RESPONSE\",rpcName:a,action:c,requestId:n})}break;case\"ERROR\":y(t.msg);break;default:mt&&T(`handleMessageFromServer ${t.type}.`)}}cacheTableMeta(e){let{module:t,table:n}=e.table,s=`${t}:${n}`,i=this.cachedTableSchemas.get(s);return i||(i=z(e),this.cachedTableSchemas.set(s,i)),i}isTableOpen(e){if(e){let t=e.table;for(let n of this.viewports.values())if(!n.suspended&&n.table.table===t)return!0}}getActiveLinks(e){return e.filter(t=>{let n=this.viewports.get(t.parentVpId);return n&&!n.suspended})}processUpdates(){this.viewports.forEach(e=>{var t;if(e.hasUpdatesToProcess){let n=e.getClientRows();if(n!==U){let[s,i]=n,o=e.getNewRowCount();(o!==void 0||s&&s.length>0)&&(Y&&V(`postMessageToClient #${e.clientViewportId} viewport-update ${i}, ${(t=s==null?void 0:s.length)!=null?t:\"no\"} rows, size ${o}`),i&&this.postMessageToClient({clientViewportId:e.clientViewportId,mode:i,rows:s,size:o,type:\"viewport-update\"}))}}})}};var{debug:cn,debugEnabled:pn,error:qe,info:w,infoEnabled:wt,warn:_}=b(\"websocket-connection\"),Fe=\"ws\",Et=r=>r.startsWith(Fe+\"://\")||r.startsWith(Fe+\"s://\"),Ge={},Z=Symbol(\"setWebsocket\"),$=Symbol(\"connectionCallback\");async function He(r,e,t,n=10,s=5){return Ge[r]={status:\"connecting\",connect:{allowed:s,remaining:s},reconnect:{allowed:n,remaining:n}},ze(r,e,t)}async function X(r){throw Error(\"connection broken\")}async function ze(r,e,t,n){let{status:s,connect:i,reconnect:o}=Ge[r],u=s===\"connecting\"?i:o;try{t({type:\"connection-status\",status:\"connecting\"});let l=typeof n<\"u\",p=await vt(r,e);console.info(\"%c⚡ %cconnected\",\"font-size: 24px;color: green;font-weight: bold;\",\"color:green; font-size: 14px;\"),n!==void 0&&n[Z](p);let a=n!=null?n:new ee(p,r,e,t),c=l?\"reconnected\":\"connection-open-awaiting-session\";return t({type:\"connection-status\",status:c}),a.status=c,u.remaining=u.allowed,a}catch{let p=--u.remaining>0;if(t({type:\"connection-status\",status:\"disconnected\",reason:\"failed to connect\",retry:p}),p)return Vt(r,e,t,n,2e3);throw Error(\"Failed to establish connection\")}}var Vt=(r,e,t,n,s)=>new Promise(i=>{setTimeout(()=>{i(ze(r,e,t,n))},s)}),vt=(r,e)=>new Promise((t,n)=>{let s=Et(r)?r:`wss://${r}`;wt&&e!==void 0&&w(`WebSocket Protocol ${e==null?void 0:e.toString()}`);let i=new WebSocket(s,e);i.onopen=()=>t(i),i.onerror=o=>n(o)}),$e=()=>{_==null||_(\"Connection cannot be closed, socket not yet opened\")},Be=r=>{_==null||_(`Message cannot be sent, socket closed ${r.body.type}`)},Mt=r=>{try{return JSON.parse(r)}catch{throw Error(`Error parsing JSON response from server ${r}`)}},ee=class{constructor(e,t,n,s){this.close=$e;this.requiresLogin=!0;this.send=Be;this.status=\"ready\";this.messagesCount=0;this.connectionMetricsInterval=null;this.handleWebsocketMessage=e=>{let t=Mt(e.data);this.messagesCount+=1,this[$](t)};this.url=t,this.protocol=n,this[$]=s,this[Z](e)}reconnect(){X(this)}[($,Z)](e){let t=this[$];e.onmessage=i=>{this.status=\"connected\",e.onmessage=this.handleWebsocketMessage,this.handleWebsocketMessage(i)},this.connectionMetricsInterval=setInterval(()=>{t({type:\"connection-metrics\",messagesLength:this.messagesCount}),this.messagesCount=0},2e3),e.onerror=()=>{qe(\"⚡ connection error\"),t({type:\"connection-status\",status:\"disconnected\",reason:\"error\"}),this.connectionMetricsInterval&&(clearInterval(this.connectionMetricsInterval),this.connectionMetricsInterval=null),this.status===\"connection-open-awaiting-session\"?qe(\"Websocket connection lost before Vuu session established, check websocket configuration\"):this.status!==\"closed\"&&(X(this),this.send=s)},e.onclose=()=>{w==null||w(\"⚡ connection close\"),t({type:\"connection-status\",status:\"disconnected\",reason:\"close\"}),this.connectionMetricsInterval&&(clearInterval(this.connectionMetricsInterval),this.connectionMetricsInterval=null),this.status!==\"closed\"&&(X(this),this.send=s)};let n=i=>{e.send(JSON.stringify(i))},s=i=>{w==null||w(`TODO queue message until websocket reconnected ${i.body.type}`)};this.send=n,this.close=()=>{this.status=\"closed\",e.close(),this.close=$e,this.send=Be,w==null||w(\"close websocket\")}}};var v,{info:te,infoEnabled:ne}=b(\"worker\");async function yt(r,e,t,n,s,i,o){let u=await He(r,e,l=>{de(l)?postMessage({type:\"connection-metrics\",messages:l}):pe(l)?(s(l),l.status===\"reconnected\"&&v.reconnect()):v.handleMessageFromServer(l)},i,o);v=new F(u,l=>_t(l)),u.requiresLogin&&await v.login(t,n)}function _t(r){postMessage(r)}var Dt=async({data:r})=>{switch(r.type){case\"connect\":await yt(r.url,r.protocol,r.token,r.username,postMessage,r.retryLimitDisconnect,r.retryLimitStartup),postMessage({type:\"connected\"});break;case\"subscribe\":ne&&te(`client subscribe: ${JSON.stringify(r)}`),v.subscribe(r);break;case\"unsubscribe\":ne&&te(`client unsubscribe: ${JSON.stringify(r)}`),v.unsubscribe(r.viewport);break;default:ne&&te(`client message: ${JSON.stringify(r)}`),v.handleMessageFromClient(r)}};self.addEventListener(\"message\",Dt);postMessage({type:\"ready\"});\n\n";
1
+ export const workerSourceCode: "\nvar ie=(r,e,t)=>{if(!e.has(r))throw TypeError(\"Cannot \"+t)};var m=(r,e,t)=>(ie(r,e,\"read from private field\"),t?t.call(r):e.get(r)),ae=(r,e,t)=>{if(e.has(r))throw TypeError(\"Cannot add the same private member more than once\");e instanceof WeakSet?e.add(r):e.set(r,t)},ue=(r,e,t,n)=>(ie(r,e,\"write to private field\"),n?n.call(r,t):e.set(r,t),t);function le(r,e,t=[],n=[]){for(let s=0,o=r.length;s<o;s++)(e(r[s],s)?t:n).push(r[s]);return[t,n]}var je=6,B={IDX:0,RENDER_IDX:1,IS_LEAF:2,IS_EXPANDED:3,DEPTH:4,COUNT:5,KEY:je,SELECTED:7,count:8,PARENT_IDX:\"parent_idx\",IDX_POINTER:\"idx_pointer\",FILTER_COUNT:\"filter_count\",NEXT_FILTER_IDX:\"next_filter_idx\"};var{DEPTH:Lt,IS_LEAF:kt}=B;var ce=r=>{var e,t;if(((e=globalThis.document)==null?void 0:e.cookie)!==void 0)return(t=globalThis.document.cookie.split(\"; \").find(n=>n.startsWith(`${r}=`)))==null?void 0:t.split(\"=\")[1]};function G({from:r,to:e},t=0,n=Number.MAX_SAFE_INTEGER){if(r===0&&e===0)return{from:r,to:e};if(t===0)return n<r?{from:0,to:0}:{from:r,to:Math.min(e,n)};if(r===0)return{from:r,to:Math.min(e+t,n)};{let s=r-t<0,o=n-(e+t)<0;return s&&o?{from:0,to:n}:s?{from:0,to:e+t}:o?{from:Math.max(0,r-t),to:n}:{from:r-t,to:e+t}}}var Ye=(r,{from:e,to:t})=>r>=e&&r<t;var I=class r{constructor(e,t){this.from=e,this.to=t}isWithin(e){return Ye(e,this)}overlap(e,t){return e>=this.to||t<this.from?[0,0]:[Math.max(e,this.from),Math.min(t,this.to)]}copy(){return new r(this.from,this.to)}};var pe=r=>r.type===\"connection-status\",de=r=>r.type===\"connection-metrics\";var ge=r=>\"viewport\"in r;var Qe=[\"error\",\"warn\",\"info\",\"debug\"],Xe=r=>typeof r==\"string\"&&Qe.includes(r),Ze=\"error\",P=()=>{},et=\"error\",{loggingLevel:L=et}=tt(),b=r=>{let e=L===\"debug\",t=e||L===\"info\",n=t||L===\"warn\",s=n||L===\"error\",o=t?p=>console.info(`[${r}] ${p}`):P,i=n?p=>console.warn(`[${r}] ${p}`):P,u=e?p=>console.debug(`[${r}] ${p}`):P;return{errorEnabled:s,error:s?p=>console.error(`[${r}] ${p}`):P}};function tt(){return typeof loggingSettings<\"u\"?loggingSettings:{loggingLevel:nt()}}function nt(){let r=ce(\"vuu-logging-level\");return Xe(r)?r:Ze}var{debug:st,debugEnabled:rt}=b(\"range-monitor\"),k=class{constructor(e){this.source=e;this.range={from:0,to:0};this.timestamp=0}isSet(){return this.timestamp!==0}set({from:e,to:t}){let{timestamp:n}=this;if(this.range.from=e,this.range.to=t,this.timestamp=performance.now(),n)rt&&st(`<${this.source}> [${e}-${t}], ${(this.timestamp-n).toFixed(0)} ms elapsed`);else return 0}};var ot=[],x=class{constructor(e){this.keys=new Map;this.nextKeyValue=0;this.range=e,this.init(e)}next(e=ot){return e.length>0?e.shift():this.nextKeyValue++}init({from:e,to:t}){this.keys.clear(),this.nextKeyValue=0;for(let n=e;n<t;n++){let s=this.next();this.keys.set(n,s)}return!0}reset(e){let{from:t,to:n}=e,s=n-t,o=this.range.to-this.range.from;if(this.range=e,o>s)return this.init(e);let i=[];this.keys.forEach((u,l)=>{(l<t||l>=n)&&(i.push(u),this.keys.delete(l))});for(let u=t;u<n;u++)if(!this.keys.has(u)){let l=this.next(i);this.keys.set(u,l)}return!1}keyFor(e){let t=this.keys.get(e);if(t===void 0)throw console.log(`key not found\n keys: ${this.toDebugString()}\n `),Error(`KeySet, no key found for rowIndex ${e}`);return t}toDebugString(){return`${this.keys.size} keys\n${Array.from(this.keys.entries()).sort(([e],[t])=>e-t).map(([e,t])=>`${e}=>${t}`).join(\",\")}]\n`}};var{SELECTED:Gt}=B,E={False:0,True:1,First:2,Last:4};var it=(r,e)=>e>=r[0]&&e<=r[1],at=E.True+E.First+E.Last,ut=E.True+E.First,lt=E.True+E.Last,H=(r,e)=>{for(let t of r)if(typeof t==\"number\"){if(t===e)return at}else if(it(t,e))return e===t[0]?ut:e===t[1]?lt:E.True;return E.False};var he=r=>{if(r.every(t=>typeof t==\"number\"))return r;let e=[];for(let t of r)if(typeof t==\"number\")e.push(t);else for(let n=t[0];n<=t[1];n++)e.push(n);return e};var fe=r=>r.type===\"VIEW_PORT_MENU_RESP\"&&r.action!==null&&O(r.action.table),O=r=>r!==null&&typeof r==\"object\"&&\"table\"in r&&\"module\"in r?r.table.startsWith(\"session\"):!1;var ct=[\"VIEW_PORT_MENUS_SELECT_RPC\",\"VIEW_PORT_MENU_TABLE_RPC\",\"VIEW_PORT_MENU_ROW_RPC\",\"VIEW_PORT_MENU_CELL_RPC\",\"VP_EDIT_CELL_RPC\",\"VP_EDIT_ROW_RPC\",\"VP_EDIT_ADD_ROW_RPC\",\"VP_EDIT_DELETE_CELL_RPC\",\"VP_EDIT_DELETE_ROW_RPC\",\"VP_EDIT_SUBMIT_FORM_RPC\"],me=r=>ct.includes(r.type),Ce=r=>r.type===\"VIEW_PORT_RPC_CALL\",A=({requestId:r,...e})=>[r,e],Re=r=>{let e=r.at(0);if(e.updateType===\"SIZE\"){if(r.length===1)return r;e=r.at(1)}let t=r.at(-1);return[e,t]},Se=r=>{let e={};for(let t of r)(e[t.viewPortId]||(e[t.viewPortId]=[])).push(t);return e},z=({columns:r,dataTypes:e,key:t,table:n})=>({table:n,columns:r.map((s,o)=>({name:s,serverDataType:e[o]})),key:t});var Te=\"CHANGE_VP_SUCCESS\";var be=\"CLOSE_TREE_NODE\",we=\"CLOSE_TREE_SUCCESS\";var Ee=\"CREATE_VP\",Ve=\"DISABLE_VP\",ve=\"DISABLE_VP_SUCCESS\";var Me=\"ENABLE_VP\",ye=\"ENABLE_VP_SUCCESS\";var K=\"GET_VP_VISUAL_LINKS\",_e=\"GET_VIEW_PORT_MENUS\";var De=\"HB\",Ie=\"HB_RESP\",Pe=\"LOGIN\",Le=\"OPEN_TREE_NODE\",ke=\"OPEN_TREE_SUCCESS\";var xe=\"REMOVE_VP\";var Oe=\"SET_SELECTION_SUCCESS\";var We=r=>{switch(r){case\"TypeAheadRpcHandler\":return\"TYPEAHEAD\";default:return\"SIMUL\"}};var Ne=[],C=b(\"array-backed-moving-window\");function pt(r,e){if(!e||e.data.length!==r.data.length||e.sel!==r.sel)return!1;for(let t=0;t<e.data.length;t++)if(e.data[t]!==r.data[t])return!1;return!0}var h,W=class{constructor({from:e,to:t},{from:n,to:s},o){ae(this,h,void 0);this.setRowCount=e=>{var t;if((t=C.info)==null||t.call(C,`setRowCount ${e}`),e<this.internalData.length&&(this.internalData.length=e),e<this.rowCount){this.rowsWithinRange=0;let n=Math.min(e,this.clientRange.to);for(let s=this.clientRange.from;s<n;s++){let o=s-m(this,h).from;this.internalData[o]!==void 0&&(this.rowsWithinRange+=1)}}this.rowCount=e};this.bufferBreakout=(e,t)=>{let n=this.bufferSize*.25;return m(this,h).to-t<n?!0:m(this,h).from>0&&e-m(this,h).from<n};this.bufferSize=o,this.clientRange=new I(e,t),ue(this,h,new I(n,s)),this.internalData=new Array(o),this.rowsWithinRange=0,this.rowCount=0}get range(){return m(this,h)}get hasAllRowsWithinRange(){return this.rowsWithinRange===this.clientRange.to-this.clientRange.from||this.rowCount>0&&this.clientRange.from+this.rowsWithinRange===this.rowCount}outOfRange(e,t){let{from:n,to:s}=this.range;if(t<n||e>=s)return!0}setAtIndex(e){let{rowIndex:t}=e,n=t-m(this,h).from;if(pt(e,this.internalData[n]))return!1;let s=this.isWithinClientRange(t);return(s||this.isWithinRange(t))&&(!this.internalData[n]&&s&&(this.rowsWithinRange+=1),this.internalData[n]=e),s}getAtIndex(e){return m(this,h).isWithin(e)&&this.internalData[e-m(this,h).from]!=null?this.internalData[e-m(this,h).from]:void 0}isWithinRange(e){return m(this,h).isWithin(e)}isWithinClientRange(e){return this.clientRange.isWithin(e)}setClientRange(e,t){var p;(p=C.debug)==null||p.call(C,`setClientRange ${e} - ${t}`);let n=this.clientRange.from,s=Math.min(this.clientRange.to,this.rowCount);if(e===n&&t===s)return[!1,Ne];let o=this.clientRange.copy();this.clientRange.from=e,this.clientRange.to=t,this.rowsWithinRange=0;for(let a=e;a<t;a++){let c=a-m(this,h).from;this.internalData[c]&&(this.rowsWithinRange+=1)}let i=Ne,u=m(this,h).from;if(this.hasAllRowsWithinRange)if(t>o.to){let a=Math.max(e,o.to);i=this.internalData.slice(a-u,t-u)}else{let a=Math.min(o.from,t);i=this.internalData.slice(e-u,a-u)}return[this.bufferBreakout(e,t),i]}setRange(e,t){var n,s;if(e!==m(this,h).from||t!==m(this,h).to){(n=C.debug)==null||n.call(C,`setRange ${e} - ${t}`);let[o,i]=m(this,h).overlap(e,t),u=new Array(t-e);this.rowsWithinRange=0;for(let l=o;l<i;l++){let p=this.getAtIndex(l);if(p){let a=l-e;u[a]=p,this.isWithinClientRange(l)&&(this.rowsWithinRange+=1)}}this.internalData=u,m(this,h).from=e,m(this,h).to=t}else(s=C.debug)==null||s.call(C,`setRange ${e} - ${t} IGNORED because not changed`)}get data(){return this.internalData}getData(){var u;let{from:e,to:t}=m(this,h),{from:n,to:s}=this.clientRange,o=Math.max(0,n-e),i=Math.min(t-e,t,s-e,(u=this.rowCount)!=null?u:t);return this.internalData.slice(o,i)}clear(){var e;(e=C.debug)==null||e.call(C,\"clear\"),this.internalData.length=0,this.rowsWithinRange=0,this.setRowCount(0)}getCurrentDataRange(){let e=this.internalData,t=e.length,[n]=this.internalData,s=this.internalData[t-1];if(n&&s)return[n.rowIndex,s.rowIndex];for(let o=0;o<t;o++)if(e[o]!==void 0){n=e[o];break}for(let o=t-1;o>=0;o--)if(e[o]!==void 0){s=e[o];break}return n&&s?[n.rowIndex,s.rowIndex]:[-1,-1]}};h=new WeakMap;var{debug:f,debugEnabled:N,error:dt,info:d,infoEnabled:gt,warn:M}=b(\"viewport\"),ht=({rowKey:r,updateType:e})=>e===\"U\"&&!r.startsWith(\"$root\"),U=[void 0,void 0],ft={count:0,mode:void 0,size:0,ts:0},q=class{constructor({aggregations:e,bufferSize:t=50,columns:n,filter:s,groupBy:o=[],table:i,range:u,sort:l,title:p,viewport:a,visualLink:c},g){this.batchMode=!0;this.hasUpdates=!1;this.pendingUpdates=[];this.pendingOperations=new Map;this.pendingRangeRequests=[];this.rowCountChanged=!1;this.selectedRows=[];this.useBatchMode=!0;this.lastUpdateStatus=ft;this.updateThrottleTimer=void 0;this.rangeMonitor=new k(\"ViewPort\");this.disabled=!1;this.isTree=!1;this.status=\"\";this.suspended=!1;this.suspendTimer=null;this.setLastSizeOnlyUpdateSize=e=>{this.lastUpdateStatus.size=e};this.setLastUpdate=e=>{let{ts:t,mode:n}=this.lastUpdateStatus,s=0;if(n===e){let o=Date.now();this.lastUpdateStatus.count+=1,this.lastUpdateStatus.ts=o,s=t===0?0:o-t}else this.lastUpdateStatus.count=1,this.lastUpdateStatus.ts=0,s=0;return this.lastUpdateStatus.mode=e,s};this.rangeRequestAlreadyPending=e=>{let{bufferSize:t}=this,n=t*.25,{from:s}=e;for(let{from:o,to:i}of this.pendingRangeRequests)if(s>=o&&s<i){if(e.to+n<=i)return!0;s=i}return!1};this.sendThrottledSizeMessage=()=>{this.updateThrottleTimer=void 0,this.lastUpdateStatus.count=3,this.postMessageToClient({clientViewportId:this.clientViewportId,mode:\"size-only\",size:this.lastUpdateStatus.size,type:\"viewport-update\"})};this.shouldThrottleMessage=e=>{let t=this.setLastUpdate(e);return e===\"size-only\"&&t>0&&t<500&&this.lastUpdateStatus.count>3};this.throttleMessage=e=>this.shouldThrottleMessage(e)?(d==null||d(\"throttling updates setTimeout to 2000\"),this.updateThrottleTimer===void 0&&(this.updateThrottleTimer=setTimeout(this.sendThrottledSizeMessage,2e3)),!0):(this.updateThrottleTimer!==void 0&&(clearTimeout(this.updateThrottleTimer),this.updateThrottleTimer=void 0),!1);this.getNewRowCount=()=>{if(this.rowCountChanged&&this.dataWindow)return this.rowCountChanged=!1,this.dataWindow.rowCount};this.aggregations=e,this.bufferSize=t,this.clientRange=u,this.clientViewportId=a,this.columns=n,this.filter=s,this.groupBy=o,this.keys=new x(u),this.pendingLinkedParent=c,this.table=i,this.sort=l,this.title=p,gt&&(d==null||d(`constructor #${a} ${i.table} bufferSize=${t}`)),this.dataWindow=new W(this.clientRange,u,this.bufferSize),this.postMessageToClient=g}get hasUpdatesToProcess(){return this.suspended?!1:this.rowCountChanged||this.hasUpdates}get size(){var e;return(e=this.dataWindow.rowCount)!=null?e:0}subscribe(){let{filter:e}=this.filter;return this.status=this.status===\"subscribed\"?\"resubscribing\":\"subscribing\",{type:Ee,table:this.table,range:G(this.clientRange,this.bufferSize),aggregations:this.aggregations,columns:this.columns,sort:this.sort,groupBy:this.groupBy,filterSpec:{filter:e}}}handleSubscribed({viewPortId:e,aggregations:t,columns:n,filterSpec:s,range:o,sort:i,groupBy:u,table:l},p){this.serverViewportId=e,this.status=\"subscribed\",this.aggregations=t,this.columns=n,this.groupBy=u,this.isTree=u&&u.length>0,this.dataWindow.setRange(o.from,o.to);let a=l===p.table.table?p:{...p,table:{...p.table,session:l}};return{aggregations:t,type:\"subscribed\",clientViewportId:this.clientViewportId,columns:n,filter:s,groupBy:u,range:o,sort:i,tableSchema:a}}awaitOperation(e,t){this.pendingOperations.set(e,t)}completeOperation(e,...t){var u;let{clientViewportId:n,pendingOperations:s}=this,o=s.get(e);if(!o){dt(`no matching operation found to complete for requestId ${e}`);return}let{type:i}=o;if(d==null||d(`completeOperation ${i}`),s.delete(e),i===\"CHANGE_VP_RANGE\"){let[l,p]=t;(u=this.dataWindow)==null||u.setRange(l,p);for(let a=this.pendingRangeRequests.length-1;a>=0;a--){let c=this.pendingRangeRequests[a];if(c.requestId===e){c.acked=!0;break}else M==null||M(\"range requests sent faster than they are being ACKed\")}}else if(i===\"config\"){let{aggregations:l,columns:p,filter:a,groupBy:c,sort:g}=o.data;return this.aggregations=l,this.columns=p,this.filter=a,this.groupBy=c,this.sort=g,c.length>0?this.isTree=!0:this.isTree&&(this.isTree=!1),f==null||f(`config change confirmed, isTree : ${this.isTree}`),{clientViewportId:n,type:i,config:o.data}}else{if(i===\"groupBy\")return this.isTree=o.data.length>0,this.groupBy=o.data,f==null||f(`groupBy change confirmed, isTree : ${this.isTree}`),{clientViewportId:n,type:i,groupBy:o.data};if(i===\"columns\")return this.columns=o.data,{clientViewportId:n,type:i,columns:o.data};if(i===\"filter\")return this.filter=o.data,{clientViewportId:n,type:i,filter:o.data};if(i===\"aggregate\")return this.aggregations=o.data,{clientViewportId:n,type:\"aggregate\",aggregations:this.aggregations};if(i===\"sort\")return this.sort=o.data,{clientViewportId:n,type:i,sort:this.sort};if(i!==\"selection\"){if(i===\"disable\")return this.disabled=!0,{type:\"disabled\",clientViewportId:n};if(i===\"enable\")return this.disabled=!1,{type:\"enabled\",clientViewportId:n};if(i===\"CREATE_VISUAL_LINK\"){let[l,p,a]=t;return this.linkedParent={colName:l,parentViewportId:p,parentColName:a},this.pendingLinkedParent=void 0,{type:\"vuu-link-created\",clientViewportId:n,colName:l,parentViewportId:p,parentColName:a}}else if(i===\"REMOVE_VISUAL_LINK\")return this.linkedParent=void 0,{type:\"vuu-link-removed\",clientViewportId:n}}}}rangeRequest(e,t){N&&this.rangeMonitor.set(t);let n=\"CHANGE_VP_RANGE\";if(this.dataWindow){let[s,o]=this.dataWindow.setClientRange(t.from,t.to),i,u=this.dataWindow.rowCount||void 0,l=s&&!this.rangeRequestAlreadyPending(t)?{type:n,viewPortId:this.serverViewportId,...G(t,this.bufferSize,u)}:null;if(l){N&&(f==null||f(`create CHANGE_VP_RANGE: [${l.from} - ${l.to}]`)),this.awaitOperation(e,{type:n});let a=this.pendingRangeRequests.at(-1);if(a)if(a.acked)console.warn(\"Range Request before previous request is filled\");else{let{from:c,to:g}=a;this.dataWindow.outOfRange(c,g)?i={clientViewportId:this.clientViewportId,type:\"debounce-begin\"}:M==null||M(\"Range Request before previous request is acked\")}this.pendingRangeRequests.push({...l,requestId:e}),this.useBatchMode&&(this.batchMode=!0)}else o.length>0&&(this.batchMode=!1);this.keys.reset(this.dataWindow.clientRange);let p=this.isTree?j:J;return o.length?[l,o.map(a=>p(a,this.keys,this.selectedRows))]:i?[l,void 0,i]:[l]}else return[null]}setLinks(e){return this.links=e,[{type:\"vuu-links\",links:e,clientViewportId:this.clientViewportId},this.pendingLinkedParent]}setMenu(e){return{type:\"vuu-menu\",menu:e,clientViewportId:this.clientViewportId}}openTreeNode(e,t){return this.useBatchMode&&(this.batchMode=!0),{type:Le,vpId:this.serverViewportId,treeKey:t.key}}closeTreeNode(e,t){return this.useBatchMode&&(this.batchMode=!0),{type:be,vpId:this.serverViewportId,treeKey:t.key}}createLink(e,t,n,s){let o={type:\"CREATE_VISUAL_LINK\",parentVpId:n,childVpId:this.serverViewportId,parentColumnName:s,childColumnName:t};return this.awaitOperation(e,o),this.useBatchMode&&(this.batchMode=!0),o}removeLink(e){let t={type:\"REMOVE_VISUAL_LINK\",childVpId:this.serverViewportId};return this.awaitOperation(e,t),t}suspend(){this.suspended=!0,d==null||d(\"suspend\")}resume(){return this.suspended=!1,N&&(f==null||f(`resume: ${this.currentData()}`)),[this.size,this.currentData()]}currentData(){let e=[];if(this.dataWindow){let t=this.dataWindow.getData(),{keys:n}=this,s=this.isTree?j:J;for(let o of t)o&&e.push(s(o,n,this.selectedRows))}return e}enable(e){return this.awaitOperation(e,{type:\"enable\"}),d==null||d(`enable: ${this.serverViewportId}`),{type:Me,viewPortId:this.serverViewportId}}disable(e){return this.awaitOperation(e,{type:\"disable\"}),d==null||d(`disable: ${this.serverViewportId}`),this.suspended=!1,{type:Ve,viewPortId:this.serverViewportId}}columnRequest(e,t){return this.awaitOperation(e,{type:\"columns\",data:t}),f==null||f(`columnRequest: ${t}`),this.createRequest({columns:t})}setConfig(e,t){var o;this.awaitOperation(e,{type:\"config\",data:t});let{filter:n,...s}=t;return this.useBatchMode&&(this.batchMode=!0),N?f==null||f(`setConfig ${JSON.stringify(t)}`):d==null||d(\"setConfig\"),!this.isTree&&t.groupBy.length>0&&((o=this.dataWindow)==null||o.clear()),this.createRequest({...s,filterSpec:typeof(n==null?void 0:n.filter)==\"string\"?{filter:n.filter}:{filter:\"\"}},!0)}aggregateRequest(e,t){return this.awaitOperation(e,{type:\"aggregate\",data:t}),d==null||d(`aggregateRequest: ${t}`),this.createRequest({aggregations:t})}sortRequest(e,t){return this.awaitOperation(e,{type:\"sort\",data:t}),d==null||d(`sortRequest: ${JSON.stringify(t.sortDefs)}`),this.createRequest({sort:t})}selectRequest(e,t){return this.selectedRows=t,this.awaitOperation(e,{type:\"selection\",data:t}),d==null||d(`selectRequest: ${t}`),{type:\"SET_SELECTION\",vpId:this.serverViewportId,selection:he(t)}}removePendingRangeRequest(e,t){for(let n=this.pendingRangeRequests.length-1;n>=0;n--){let{from:s,to:o}=this.pendingRangeRequests[n],i=!0;if(e>=s&&e<o||t>s&&t<o){i||console.warn(\"removePendingRangeRequest TABLE_ROWS are not for latest request\"),this.pendingRangeRequests.splice(n,1);break}else i=!1}}updateRows(e){var s,o,i;let[t,n]=Re(e);if(t&&n&&this.removePendingRangeRequest(t.rowIndex,n.rowIndex),e.length===1)if(t.vpSize===0&&this.disabled){f==null||f(`ignore a SIZE=0 message on disabled viewport (${e.length} rows)`);return}else t.updateType===\"SIZE\"&&this.setLastSizeOnlyUpdateSize(t.vpSize);for(let u of e)this.isTree&&ht(u)||((u.updateType===\"SIZE\"||((s=this.dataWindow)==null?void 0:s.rowCount)!==u.vpSize)&&((o=this.dataWindow)==null||o.setRowCount(u.vpSize),this.rowCountChanged=!0),u.updateType===\"U\"&&(i=this.dataWindow)!=null&&i.setAtIndex(u)&&(this.hasUpdates=!0,this.batchMode||this.pendingUpdates.push(u)))}getClientRows(){let e,t=\"size-only\";if(!this.hasUpdates&&!this.rowCountChanged)return U;if(this.hasUpdates){let{keys:n,selectedRows:s}=this,o=this.isTree?j:J;if(this.updateThrottleTimer&&(self.clearTimeout(this.updateThrottleTimer),this.updateThrottleTimer=void 0),this.pendingUpdates.length>0){e=[],t=\"update\";for(let i of this.pendingUpdates)e.push(o(i,n,s));this.pendingUpdates.length=0}else{let i=this.dataWindow.getData();if(this.dataWindow.hasAllRowsWithinRange){e=[],t=\"batch\";for(let u of i)e.push(o(u,n,s));this.batchMode=!1}}this.hasUpdates=!1}return this.throttleMessage(t)?U:[e,t]}createRequest(e,t=!1){return t?{type:\"CHANGE_VP\",viewPortId:this.serverViewportId,...e}:{type:\"CHANGE_VP\",viewPortId:this.serverViewportId,aggregations:this.aggregations,columns:this.columns,sort:this.sort,groupBy:this.groupBy,filterSpec:{filter:this.filter.filter},...e}}},J=({rowIndex:r,rowKey:e,sel:t,data:n},s,o)=>[r,s.keyFor(r),!0,!1,0,0,e,t?H(o,r):0].concat(n),j=({rowIndex:r,rowKey:e,sel:t,data:n},s,o)=>{let[i,u,,l,,p,...a]=n;return[r,s.keyFor(r),l,u,i,p,e,t?H(o,r):0].concat(a)};var Ue=1;var{debug:V,debugEnabled:Y,error:y,info:T,infoEnabled:mt,warn:Q}=b(\"server-proxy\"),R=()=>`${Ue++}`,Ct={},Rt=r=>r.disabled!==!0&&r.suspended!==!0,St={type:\"NO_ACTION\"},Tt=(r,e,t)=>r.map(n=>n.parentVpId===e?{...n,label:t}:n);function bt(r,e){return r.map(t=>{let{parentVpId:n}=t,s=e.get(n);if(s)return{...t,parentClientVpId:s.clientViewportId,label:s.title};throw Error(\"addLabelsToLinks viewport not found\")})}var F=class{constructor(e,t){this.authToken=\"\";this.user=\"user\";this.pendingRequests=new Map;this.queuedRequests=[];this.cachedTableMetaRequests=new Map;this.cachedTableSchemas=new Map;this.connection=e,this.postMessageToClient=t,this.viewports=new Map,this.mapClientToServerViewport=new Map}async reconnect(){await this.login(this.authToken);let[e,t]=le(Array.from(this.viewports.values()),Rt);this.viewports.clear(),this.mapClientToServerViewport.clear();let n=s=>{s.forEach(o=>{let{clientViewportId:i}=o;this.viewports.set(i,o),this.sendMessageToServer(o.subscribe(),i)})};n(e),setTimeout(()=>{n(t)},2e3)}async login(e,t=\"user\"){if(e)return this.authToken=e,this.user=t,new Promise((n,s)=>{this.sendMessageToServer({type:Pe,token:this.authToken,user:t},\"\"),this.pendingLogin={resolve:n,reject:s}});this.authToken===\"\"&&y(\"login, cannot login until auth token has been obtained\")}subscribe(e){if(this.mapClientToServerViewport.has(e.viewport))y(`spurious subscribe call ${e.viewport}`);else{let t=this.getTableMeta(e.table),n=new q(e,this.postMessageToClient);this.viewports.set(e.viewport,n);let s=this.awaitResponseToMessage(n.subscribe(),e.viewport);Promise.all([s,t]).then(([i,u])=>{let{viewPortId:l}=i,{status:p}=n;e.viewport!==l&&(this.viewports.delete(e.viewport),this.viewports.set(l,n)),this.mapClientToServerViewport.set(e.viewport,l);let a=n.handleSubscribed(i,u);a&&(this.postMessageToClient(a),Y&&V(`post DataSourceSubscribedMessage to client: ${JSON.stringify(a)}`)),n.disabled&&this.disableViewport(n),this.queuedRequests.length>0&&this.processQueuedRequests(),p===\"subscribing\"&&!O(n.table)&&(this.sendMessageToServer({type:K,vpId:l}),this.sendMessageToServer({type:_e,vpId:l}),Array.from(this.viewports.entries()).filter(([c,{disabled:g}])=>c!==l&&!g).forEach(([c])=>{this.sendMessageToServer({type:K,vpId:c})}))})}}processQueuedRequests(){let e={};for(;this.queuedRequests.length;){let t=this.queuedRequests.pop();if(t){let{clientViewportId:n,message:s,requestId:o}=t;if(s.type===\"CHANGE_VP_RANGE\"){if(e.CHANGE_VP_RANGE)continue;e.CHANGE_VP_RANGE=!0;let i=this.mapClientToServerViewport.get(n);i&&this.sendMessageToServer({...s,viewPortId:i},o)}}}}unsubscribe(e){let t=this.mapClientToServerViewport.get(e);t?(T==null||T(`Unsubscribe Message (Client to Server):\n ${t}`),this.sendMessageToServer({type:xe,viewPortId:t})):y(`failed to unsubscribe client viewport ${e}, viewport not found`)}getViewportForClient(e,t=!0){let n=this.mapClientToServerViewport.get(e);if(n){let s=this.viewports.get(n);if(s)return s;if(t)throw Error(`Viewport not found for client viewport ${e}`);return null}else{if(this.viewports.has(e))return this.viewports.get(e);if(t)throw Error(`Viewport server id not found for client viewport ${e}`);return null}}setViewRange(e,t){let n=R(),[s,o,i]=e.rangeRequest(n,t.range);T==null||T(`setViewRange ${t.range.from} - ${t.range.to}`),s&&(this.sendIfReady(s,n,e.status===\"subscribed\")||this.queuedRequests.push({clientViewportId:t.viewport,message:s,requestId:n})),o?(T==null||T(`setViewRange ${o.length} rows returned from cache`),this.postMessageToClient({mode:\"batch\",type:\"viewport-update\",clientViewportId:e.clientViewportId,rows:o})):i&&this.postMessageToClient(i)}setConfig(e,t){let n=R(),s=e.setConfig(n,t.config);this.sendIfReady(s,n,e.status===\"subscribed\")}aggregate(e,t){let n=R(),s=e.aggregateRequest(n,t.aggregations);this.sendIfReady(s,n,e.status===\"subscribed\")}sort(e,t){let n=R(),s=e.sortRequest(n,t.sort);this.sendIfReady(s,n,e.status===\"subscribed\")}setColumns(e,t){let n=R(),{columns:s}=t,o=e.columnRequest(n,s);this.sendIfReady(o,n,e.status===\"subscribed\")}setTitle(e,t){e&&(e.title=t.title,this.updateTitleOnVisualLinks(e))}select(e,t){let n=R(),{selected:s}=t,o=e.selectRequest(n,s);this.sendIfReady(o,n,e.status===\"subscribed\")}disableViewport(e){let t=R(),n=e.disable(t);this.sendIfReady(n,t,e.status===\"subscribed\")}enableViewport(e){if(e.disabled){let t=R(),n=e.enable(t);this.sendIfReady(n,t,e.status===\"subscribed\")}}suspendViewport(e){e.suspend(),e.suspendTimer=setTimeout(()=>{T==null||T(\"suspendTimer expired, escalate suspend to disable\"),this.disableViewport(e)},3e3)}resumeViewport(e){e.suspendTimer&&(V==null||V(\"clear suspend timer\"),clearTimeout(e.suspendTimer),e.suspendTimer=null);let[t,n]=e.resume();V==null||V(`resumeViewport size ${t}, ${n.length} rows sent to client`),this.postMessageToClient({clientViewportId:e.clientViewportId,mode:\"batch\",rows:n,size:t,type:\"viewport-update\"})}openTreeNode(e,t){if(e.serverViewportId){let n=R();this.sendIfReady(e.openTreeNode(n,t),n,e.status===\"subscribed\")}}closeTreeNode(e,t){if(e.serverViewportId){let n=R();this.sendIfReady(e.closeTreeNode(n,t),n,e.status===\"subscribed\")}}createLink(e,t){let{parentClientVpId:n,parentColumnName:s,childColumnName:o}=t,i=R(),u=this.mapClientToServerViewport.get(n);if(u){let l=e.createLink(i,o,u,s);this.sendMessageToServer(l,i)}else y(\"ServerProxy unable to create link, viewport not found\")}removeLink(e){let t=R(),n=e.removeLink(t);this.sendMessageToServer(n,t)}updateTitleOnVisualLinks(e){var s;let{serverViewportId:t,title:n}=e;for(let o of this.viewports.values())if(o!==e&&o.links&&t&&n&&(s=o.links)!=null&&s.some(i=>i.parentVpId===t)){let[i]=o.setLinks(Tt(o.links,t,n));this.postMessageToClient(i)}}removeViewportFromVisualLinks(e){var t;for(let n of this.viewports.values())if((t=n.links)!=null&&t.some(({parentVpId:s})=>s===e)){let[s]=n.setLinks(n.links.filter(({parentVpId:o})=>o!==e));this.postMessageToClient(s)}}menuRpcCall(e){let t=this.getViewportForClient(e.vpId,!1);if(t!=null&&t.serverViewportId){let[n,s]=A(e);this.sendMessageToServer({...s,vpId:t.serverViewportId},n)}}viewportRpcCall(e){let t=this.getViewportForClient(e.vpId,!1);if(t!=null&&t.serverViewportId){let[n,s]=A(e);this.sendMessageToServer({...s,vpId:t.serverViewportId,namedParams:{}},n)}}rpcCall(e){let[t,n]=A(e),s=We(n.service);this.sendMessageToServer(n,t,{module:s})}handleMessageFromClient(e){var t;if(ge(e))if(e.type===\"disable\"){let n=this.getViewportForClient(e.viewport,!1);return n!==null?this.disableViewport(n):void 0}else{let n=this.getViewportForClient(e.viewport);switch(e.type){case\"setViewRange\":return this.setViewRange(n,e);case\"config\":return this.setConfig(n,e);case\"aggregate\":return this.aggregate(n,e);case\"sort\":return this.sort(n,e);case\"select\":return this.select(n,e);case\"suspend\":return this.suspendViewport(n);case\"resume\":return this.resumeViewport(n);case\"enable\":return this.enableViewport(n);case\"openTreeNode\":return this.openTreeNode(n,e);case\"closeTreeNode\":return this.closeTreeNode(n,e);case\"createLink\":return this.createLink(n,e);case\"removeLink\":return this.removeLink(n);case\"setColumns\":return this.setColumns(n,e);case\"setTitle\":return this.setTitle(n,e);default:}}else{if(Ce(e))return this.viewportRpcCall(e);if(me(e))return this.menuRpcCall(e);{let{type:n,requestId:s}=e;switch(n){case\"GET_TABLE_LIST\":{(t=this.tableList)!=null||(this.tableList=this.awaitResponseToMessage({type:n},s)),this.tableList.then(o=>{this.postMessageToClient({type:\"TABLE_LIST_RESP\",tables:o.tables,requestId:s})});return}case\"GET_TABLE_META\":{this.getTableMeta(e.table,s).then(o=>{o&&this.postMessageToClient({type:\"TABLE_META_RESP\",tableSchema:o,requestId:s})});return}case\"RPC_CALL\":return this.rpcCall(e);default:}}}y(`Vuu ServerProxy Unexpected message from client ${JSON.stringify(e)}`)}getTableMeta(e,t=R()){if(O(e))return Promise.resolve(void 0);let n=`${e.module}:${e.table}`,s=this.cachedTableMetaRequests.get(n);return s||(s=this.awaitResponseToMessage({type:\"GET_TABLE_META\",table:e},t),this.cachedTableMetaRequests.set(n,s)),s==null?void 0:s.then(o=>this.cacheTableMeta(o))}awaitResponseToMessage(e,t=R()){return new Promise((n,s)=>{this.sendMessageToServer(e,t),this.pendingRequests.set(t,{reject:s,resolve:n})})}sendIfReady(e,t,n=!0){return n&&this.sendMessageToServer(e,t),n}sendMessageToServer(e,t=`${Ue++}`,n=Ct){let{module:s=\"CORE\"}=n;this.authToken&&this.connection.send({requestId:t,sessionId:this.sessionId,token:this.authToken,user:this.user,module:s,body:e})}handleMessageFromServer(e){var u;let{body:t,requestId:n,sessionId:s}=e,o=this.pendingRequests.get(n);if(o){let{resolve:a}=o;this.pendingRequests.delete(n),a(t);return}let{viewports:i}=this;switch(t.type){case De:this.sendMessageToServer({type:Ie,ts:+new Date},\"NA\");break;case\"LOGIN_SUCCESS\":if(s)this.sessionId=s,(u=this.pendingLogin)==null||u.resolve(s),this.pendingLogin=void 0;else throw Error(\"LOGIN_SUCCESS did not provide sessionId\");break;case\"REMOVE_VP_SUCCESS\":{let a=i.get(t.viewPortId);a&&(this.mapClientToServerViewport.delete(a.clientViewportId),i.delete(t.viewPortId),this.removeViewportFromVisualLinks(t.viewPortId))}break;case Oe:{let a=this.viewports.get(t.vpId);a&&a.completeOperation(n)}break;case Te:case ve:if(i.has(t.viewPortId)){let a=this.viewports.get(t.viewPortId);if(a){let c=a.completeOperation(n);c!==void 0&&(this.postMessageToClient(c),Y&&V(`postMessageToClient ${JSON.stringify(c)}`))}}break;case ye:{let a=this.viewports.get(t.viewPortId);if(a){let c=a.completeOperation(n);if(c){this.postMessageToClient(c);let[g,S]=a.resume();this.postMessageToClient({clientViewportId:a.clientViewportId,mode:\"batch\",rows:S,size:g,type:\"viewport-update\"})}}}break;case\"TABLE_ROW\":{let a=Se(t.rows);for(let[c,g]of Object.entries(a)){let S=i.get(c);S?S.updateRows(g):Q==null||Q(`TABLE_ROW message received for non registered viewport ${c}`)}this.processUpdates()}break;case\"CHANGE_VP_RANGE_SUCCESS\":{let a=this.viewports.get(t.viewPortId);if(a){let{from:c,to:g}=t;a.completeOperation(n,c,g)}}break;case ke:case we:break;case\"CREATE_VISUAL_LINK_SUCCESS\":{let a=this.viewports.get(t.childVpId),c=this.viewports.get(t.parentVpId);if(a&&c){let{childColumnName:g,parentColumnName:S}=t,D=a.completeOperation(n,g,c.clientViewportId,S);D&&this.postMessageToClient(D)}}break;case\"REMOVE_VISUAL_LINK_SUCCESS\":{let a=this.viewports.get(t.childVpId);if(a){let c=a.completeOperation(n);c&&this.postMessageToClient(c)}}break;case\"VP_VISUAL_LINKS_RESP\":{let a=this.getActiveLinks(t.links),c=this.viewports.get(t.vpId);if(a.length&&c){let g=bt(a,this.viewports),[S,D]=c.setLinks(g);if(this.postMessageToClient(S),D){let{link:se,parentClientVpId:Ke}=D,re=R(),oe=this.mapClientToServerViewport.get(Ke);if(oe){let Je=c.createLink(re,se.fromColumn,oe,se.toColumn);this.sendMessageToServer(Je,re)}}}}break;case\"VIEW_PORT_MENUS_RESP\":if(t.menu.name){let a=this.viewports.get(t.vpId);if(a){let c=a.setMenu(t.menu);this.postMessageToClient(c)}}break;case\"VP_EDIT_RPC_RESPONSE\":this.postMessageToClient({action:t.action,requestId:n,rpcName:t.rpcName,type:\"VP_EDIT_RPC_RESPONSE\"});break;case\"VP_EDIT_RPC_REJECT\":this.viewports.get(t.vpId)&&this.postMessageToClient({requestId:n,type:\"VP_EDIT_RPC_REJECT\",error:t.error});break;case\"VIEW_PORT_MENU_REJ\":{console.log(\"send menu error back to client\");let{error:a,rpcName:c,vpId:g}=t,S=this.viewports.get(g);S&&this.postMessageToClient({clientViewportId:S.clientViewportId,error:a,rpcName:c,type:\"VIEW_PORT_MENU_REJ\",requestId:n});break}case\"VIEW_PORT_MENU_RESP\":if(fe(t)){let{action:a,rpcName:c}=t;this.awaitResponseToMessage({type:\"GET_TABLE_META\",table:a.table}).then(g=>{let S=z(g);this.postMessageToClient({rpcName:c,type:\"VIEW_PORT_MENU_RESP\",action:{...a,tableSchema:S},tableAlreadyOpen:this.isTableOpen(a.table),requestId:n})})}else{let{action:a}=t;this.postMessageToClient({type:\"VIEW_PORT_MENU_RESP\",action:a||St,tableAlreadyOpen:a!==null&&this.isTableOpen(a.table),requestId:n})}break;case\"RPC_RESP\":{let{method:a,result:c}=t;this.postMessageToClient({type:\"RPC_RESP\",method:a,result:c,requestId:n})}break;case\"VIEW_PORT_RPC_REPONSE\":{let{method:a,action:c}=t;this.postMessageToClient({type:\"VIEW_PORT_RPC_RESPONSE\",rpcName:a,action:c,requestId:n})}break;case\"ERROR\":y(t.msg);break;default:mt&&T(`handleMessageFromServer ${t.type}.`)}}cacheTableMeta(e){let{module:t,table:n}=e.table,s=`${t}:${n}`,o=this.cachedTableSchemas.get(s);return o||(o=z(e),this.cachedTableSchemas.set(s,o)),o}isTableOpen(e){if(e){let t=e.table;for(let n of this.viewports.values())if(!n.suspended&&n.table.table===t)return!0}}getActiveLinks(e){return e.filter(t=>{let n=this.viewports.get(t.parentVpId);return n&&!n.suspended})}processUpdates(){this.viewports.forEach(e=>{var t;if(e.hasUpdatesToProcess){let n=e.getClientRows();if(n!==U){let[s,o]=n,i=e.getNewRowCount();(i!==void 0||s&&s.length>0)&&(Y&&V(`postMessageToClient #${e.clientViewportId} viewport-update ${o}, ${(t=s==null?void 0:s.length)!=null?t:\"no\"} rows, size ${i}`),o&&this.postMessageToClient({clientViewportId:e.clientViewportId,mode:o,rows:s,size:i,type:\"viewport-update\"}))}}})}};var{debug:cn,debugEnabled:pn,error:qe,info:w,infoEnabled:wt,warn:_}=b(\"websocket-connection\"),Fe=\"ws\",Et=r=>r.startsWith(Fe+\"://\")||r.startsWith(Fe+\"s://\"),Ge={},Z=Symbol(\"setWebsocket\"),$=Symbol(\"connectionCallback\");async function He(r,e,t,n=10,s=5){return Ge[r]={status:\"connecting\",connect:{allowed:s,remaining:s},reconnect:{allowed:n,remaining:n}},ze(r,e,t)}async function X(r){throw Error(\"connection broken\")}async function ze(r,e,t,n){let{status:s,connect:o,reconnect:i}=Ge[r],u=s===\"connecting\"?o:i;try{t({type:\"connection-status\",status:\"connecting\"});let l=typeof n<\"u\",p=await vt(r,e);console.info(\"%c⚡ %cconnected\",\"font-size: 24px;color: green;font-weight: bold;\",\"color:green; font-size: 14px;\"),n!==void 0&&n[Z](p);let a=n!=null?n:new ee(p,r,e,t),c=l?\"reconnected\":\"connection-open-awaiting-session\";return t({type:\"connection-status\",status:c}),a.status=c,u.remaining=u.allowed,a}catch{let p=--u.remaining>0;if(t({type:\"connection-status\",status:\"disconnected\",reason:\"failed to connect\",retry:p}),p)return Vt(r,e,t,n,2e3);throw Error(\"Failed to establish connection\")}}var Vt=(r,e,t,n,s)=>new Promise(o=>{setTimeout(()=>{o(ze(r,e,t,n))},s)}),vt=(r,e)=>new Promise((t,n)=>{let s=Et(r)?r:`wss://${r}`;wt&&e!==void 0&&w(`WebSocket Protocol ${e==null?void 0:e.toString()}`);let o=new WebSocket(s,e);o.onopen=()=>t(o),o.onerror=i=>n(i)}),$e=()=>{_==null||_(\"Connection cannot be closed, socket not yet opened\")},Be=r=>{_==null||_(`Message cannot be sent, socket closed ${r.body.type}`)},Mt=r=>{try{return JSON.parse(r)}catch{throw Error(`Error parsing JSON response from server ${r}`)}},ee=class{constructor(e,t,n,s){this.close=$e;this.requiresLogin=!0;this.send=Be;this.status=\"ready\";this.messagesCount=0;this.connectionMetricsInterval=null;this.handleWebsocketMessage=e=>{let t=Mt(e.data);this.messagesCount+=1,this[$](t)};this.url=t,this.protocol=n,this[$]=s,this[Z](e)}reconnect(){X(this)}[($,Z)](e){let t=this[$];e.onmessage=o=>{this.status=\"connected\",e.onmessage=this.handleWebsocketMessage,this.handleWebsocketMessage(o)},this.connectionMetricsInterval=setInterval(()=>{t({type:\"connection-metrics\",messagesLength:this.messagesCount}),this.messagesCount=0},2e3),e.onerror=()=>{qe(\"⚡ connection error\"),t({type:\"connection-status\",status:\"disconnected\",reason:\"error\"}),this.connectionMetricsInterval&&(clearInterval(this.connectionMetricsInterval),this.connectionMetricsInterval=null),this.status===\"connection-open-awaiting-session\"?qe(\"Websocket connection lost before Vuu session established, check websocket configuration\"):this.status!==\"closed\"&&(X(this),this.send=s)},e.onclose=()=>{w==null||w(\"⚡ connection close\"),t({type:\"connection-status\",status:\"disconnected\",reason:\"close\"}),this.connectionMetricsInterval&&(clearInterval(this.connectionMetricsInterval),this.connectionMetricsInterval=null),this.status!==\"closed\"&&(X(this),this.send=s)};let n=o=>{e.send(JSON.stringify(o))},s=o=>{w==null||w(`TODO queue message until websocket reconnected ${o.body.type}`)};this.send=n,this.close=()=>{this.status=\"closed\",e.close(),this.close=$e,this.send=Be,w==null||w(\"close websocket\")}}};var v,{info:te,infoEnabled:ne}=b(\"worker\");async function yt(r,e,t,n,s,o,i){let u=await He(r,e,l=>{de(l)?postMessage({type:\"connection-metrics\",messages:l}):pe(l)?(s(l),l.status===\"reconnected\"&&v.reconnect()):v.handleMessageFromServer(l)},o,i);v=new F(u,l=>_t(l)),u.requiresLogin&&await v.login(t,n)}function _t(r){postMessage(r)}var Dt=async({data:r})=>{switch(r.type){case\"connect\":await yt(r.url,r.protocol,r.token,r.username,postMessage,r.retryLimitDisconnect,r.retryLimitStartup),postMessage({type:\"connected\"});break;case\"subscribe\":ne&&te(`client subscribe: ${JSON.stringify(r)}`),v.subscribe(r);break;case\"unsubscribe\":ne&&te(`client unsubscribe: ${JSON.stringify(r)}`),v.unsubscribe(r.viewport);break;default:ne&&te(`client message: ${JSON.stringify(r)}`),v.handleMessageFromClient(r)}};self.addEventListener(\"message\",Dt);postMessage({type:\"ready\"});\n\n";
@@ -33,8 +33,6 @@ export declare class ServerProxy {
33
33
  private setConfig;
34
34
  private aggregate;
35
35
  private sort;
36
- private groupBy;
37
- private filter;
38
36
  private setColumns;
39
37
  private setTitle;
40
38
  private select;
@@ -121,11 +121,9 @@ export declare class Viewport {
121
121
  enable(requestId: string): ClientToServerEnable;
122
122
  disable(requestId: string): ClientToServerDisable;
123
123
  columnRequest(requestId: string, columns: string[]): ClientToServerChangeViewPort;
124
- filterRequest(requestId: string, dataSourceFilter: DataSourceFilter): ClientToServerChangeViewPort;
125
124
  setConfig(requestId: string, config: WithFullConfig): ClientToServerChangeViewPort;
126
125
  aggregateRequest(requestId: string, aggregations: VuuAggregation[]): ClientToServerChangeViewPort;
127
126
  sortRequest(requestId: string, sort: VuuSort): ClientToServerChangeViewPort;
128
- groupByRequest(requestId: string, groupBy?: VuuGroupBy): ClientToServerChangeViewPort;
129
127
  selectRequest(requestId: string, selected: Selection): ClientToServerSelection;
130
128
  private removePendingRangeRequest;
131
129
  private rangeRequestAlreadyPending;
@@ -1,6 +1,6 @@
1
1
  import { DataSource, DataSourceCallbackMessage, DataSourceConfig, DataSourceConstructorProps, DataSourceEvents, DataSourceFilter, DataSourceRow, DataSourceStatus, OptimizeStrategy, RpcResponse, Selection, SubscribeCallback, SubscribeProps, TableSchema } from "@vuu-ui/vuu-data-types";
2
2
  import { ClientToServerEditRpc, ClientToServerMenuRPC, ClientToServerViewportRpcCall, LinkDescriptorWithLabel, VuuAggregation, VuuDataRowDto, VuuGroupBy, VuuMenu, VuuRange, VuuRowDataItemType, VuuSort, VuuTable } from "@vuu-ui/vuu-protocol-types";
3
- import { EventEmitter } from "@vuu-ui/vuu-utils";
3
+ import { EventEmitter, DataSourceConfigChanges } from "@vuu-ui/vuu-utils";
4
4
  import { MenuRpcResponse } from "@vuu-ui/vuu-data-types";
5
5
  export declare class VuuDataSource extends EventEmitter<DataSourceEvents> implements DataSource {
6
6
  #private;
@@ -38,7 +38,7 @@ export declare class VuuDataSource extends EventEmitter<DataSourceEvents> implem
38
38
  private throttleRangeRequest;
39
39
  get config(): DataSourceConfig;
40
40
  set config(config: DataSourceConfig);
41
- applyConfig(config: DataSourceConfig): true | undefined;
41
+ applyConfig(config: DataSourceConfig): DataSourceConfigChanges | undefined;
42
42
  get columns(): string[];
43
43
  set columns(columns: string[]);
44
44
  get aggregations(): VuuAggregation[];