@vuu-ui/vuu-filters 0.8.17 → 0.8.19-debug

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.
Files changed (65) hide show
  1. package/cjs/index.js +11255 -28
  2. package/cjs/index.js.map +4 -4
  3. package/esm/index.js +11423 -28
  4. package/esm/index.js.map +4 -4
  5. package/index.css +2031 -1
  6. package/index.css.map +3 -3
  7. package/package.json +10 -12
  8. package/types/{vuu-filters/src/filter-bar → filter-bar}/FilterBar.d.ts +1 -2
  9. package/types/{vuu-filters/src/filter-bar → filter-bar}/useFilters.d.ts +1 -1
  10. package/types/{vuu-filters/src/filter-clause → filter-clause}/FilterClauseEditor.d.ts +1 -1
  11. package/types/{vuu-filters/src/filter-clause → filter-clause}/useFilterClauseEditor.d.ts +3 -3
  12. package/LICENSE +0 -201
  13. package/types/vuu-data/src/array-data-source/aggregate-utils.d.ts +0 -8
  14. package/types/vuu-data/src/array-data-source/array-data-source.d.ts +0 -84
  15. package/types/vuu-data/src/array-data-source/array-data-utils.d.ts +0 -5
  16. package/types/vuu-data/src/array-data-source/group-utils.d.ts +0 -10
  17. package/types/vuu-data/src/array-data-source/sort-utils.d.ts +0 -4
  18. package/types/vuu-data/src/authenticate.d.ts +0 -1
  19. package/types/vuu-data/src/connection-manager.d.ts +0 -50
  20. package/types/vuu-data/src/connectionTypes.d.ts +0 -5
  21. package/types/vuu-data/src/constants.d.ts +0 -41
  22. package/types/vuu-data/src/data-source.d.ts +0 -237
  23. package/types/vuu-data/src/index.d.ts +0 -10
  24. package/types/vuu-data/src/inlined-worker.d.ts +0 -1
  25. package/types/vuu-data/src/json-data-source.d.ts +0 -56
  26. package/types/vuu-data/src/message-utils.d.ts +0 -28
  27. package/types/vuu-data/src/remote-data-source.d.ts +0 -65
  28. package/types/vuu-data/src/server-proxy/messages.d.ts +0 -38
  29. package/types/vuu-data/src/vuuUIMessageTypes.d.ts +0 -228
  30. package/types/vuu-data/src/websocket-connection.d.ts +0 -25
  31. /package/types/{vuu-filters/src/column-filter → column-filter}/utils.d.ts +0 -0
  32. /package/types/{vuu-filters/src/filter-bar → filter-bar}/FilterBarMenu.d.ts +0 -0
  33. /package/types/{vuu-filters/src/filter-bar → filter-bar}/index.d.ts +0 -0
  34. /package/types/{vuu-filters/src/filter-bar → filter-bar}/useFilterBar.d.ts +0 -0
  35. /package/types/{vuu-filters/src/filter-bar → filter-bar}/useFilterBarMenu.d.ts +0 -0
  36. /package/types/{vuu-filters/src/filter-builder-menu → filter-builder-menu}/FilterBuilderMenu.d.ts +0 -0
  37. /package/types/{vuu-filters/src/filter-builder-menu → filter-builder-menu}/index.d.ts +0 -0
  38. /package/types/{vuu-filters/src/filter-clause → filter-clause}/ExpandoCombobox.d.ts +0 -0
  39. /package/types/{vuu-filters/src/filter-clause → filter-clause}/FilterMenu.d.ts +0 -0
  40. /package/types/{vuu-filters/src/filter-clause → filter-clause}/FilterMenuOptions.d.ts +0 -0
  41. /package/types/{vuu-filters/src/filter-clause → filter-clause}/NumericInput.d.ts +0 -0
  42. /package/types/{vuu-filters/src/filter-clause → filter-clause}/TextInput.d.ts +0 -0
  43. /package/types/{vuu-filters/src/filter-clause → filter-clause}/filterClauseTypes.d.ts +0 -0
  44. /package/types/{vuu-filters/src/filter-clause → filter-clause}/index.d.ts +0 -0
  45. /package/types/{vuu-filters/src/filter-clause → filter-clause}/operator-utils.d.ts +0 -0
  46. /package/types/{vuu-filters/src/filter-input → filter-input}/FilterInput.d.ts +0 -0
  47. /package/types/{vuu-filters/src/filter-input → filter-input}/FilterLanguage.d.ts +0 -0
  48. /package/types/{vuu-filters/src/filter-input → filter-input}/filterInfo.d.ts +0 -0
  49. /package/types/{vuu-filters/src/filter-input → filter-input}/highlighting.d.ts +0 -0
  50. /package/types/{vuu-filters/src/filter-input → filter-input}/index.d.ts +0 -0
  51. /package/types/{vuu-filters/src/filter-input → filter-input}/theme.d.ts +0 -0
  52. /package/types/{vuu-filters/src/filter-input → filter-input}/useCodeMirrorEditor.d.ts +0 -0
  53. /package/types/{vuu-filters/src/filter-input → filter-input}/useFilterAutoComplete.d.ts +0 -0
  54. /package/types/{vuu-filters/src/filter-input → filter-input}/useFilterSuggestionProvider.d.ts +0 -0
  55. /package/types/{vuu-filters/src/filter-pill → filter-pill}/FilterPill.d.ts +0 -0
  56. /package/types/{vuu-filters/src/filter-pill → filter-pill}/filterAsReactNode.d.ts +0 -0
  57. /package/types/{vuu-filters/src/filter-pill → filter-pill}/index.d.ts +0 -0
  58. /package/types/{vuu-filters/src/filter-pill-menu → filter-pill-menu}/FilterPillMenu.d.ts +0 -0
  59. /package/types/{vuu-filters/src/filter-pill-menu → filter-pill-menu}/FilterPillMenuOptions.d.ts +0 -0
  60. /package/types/{vuu-filters/src/filter-pill-menu → filter-pill-menu}/index.d.ts +0 -0
  61. /package/types/{vuu-filters/src/filter-utils.d.ts → filter-utils.d.ts} +0 -0
  62. /package/types/{vuu-filters/src/index.d.ts → index.d.ts} +0 -0
  63. /package/types/{vuu-filters/src/local-config.d.ts → local-config.d.ts} +0 -0
  64. /package/types/{vuu-filters/src/use-filter-config.d.ts → use-filter-config.d.ts} +0 -0
  65. /package/types/{vuu-filters/src/use-rest-config.d.ts → use-rest-config.d.ts} +0 -0
@@ -1,10 +0,0 @@
1
- export * from "./authenticate";
2
- export * from "./connection-manager";
3
- export type { ServerAPI } from "./connection-manager";
4
- export * from "./constants";
5
- export * from "./data-source";
6
- export * from "./message-utils";
7
- export * from "./array-data-source/array-data-source";
8
- export * from "./json-data-source";
9
- export * from "./remote-data-source";
10
- export * from "./vuuUIMessageTypes";
@@ -1 +0,0 @@
1
- export const workerSourceCode: "\nvar de=(s,e,t)=>{if(!e.has(s))throw TypeError(\"Cannot \"+t)};var d=(s,e,t)=>(de(s,e,\"read from private field\"),t?t.call(s):e.get(s)),k=(s,e,t)=>{if(e.has(s))throw TypeError(\"Cannot add the same private member more than once\");e instanceof WeakSet?e.add(s):e.set(s,t)},ge=(s,e,t,n)=>(de(s,e,\"write to private field\"),n?n.call(s,t):e.set(s,t),t);function fe(s,e,t=[],n=[]){for(let r=0,o=s.length;r<o;r++)(e(s[r],r)?t:n).push(s[r]);return[t,n]}var V={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:sn,IS_LEAF:on}=V;var me=s=>{var e,t;if(((e=globalThis.document)==null?void 0:e.cookie)!==void 0)return(t=globalThis.document.cookie.split(\"; \").find(n=>n.startsWith(`${s}=`)))==null?void 0:t.split(\"=\")[1]};function K({from:s,to:e},t=0,n=Number.MAX_SAFE_INTEGER){if(t===0)return n<s?{from:0,to:0}:{from:s,to:Math.min(e,n)};if(s===0)return{from:s,to:Math.min(e+t,n)};{let r=e-s,o=Math.round(t/2),i=s-o<0,u=n-(e+o)<0;return i&&u?{from:0,to:n}:i?{from:0,to:r+t}:u?{from:Math.max(0,n-(r+t)),to:n}:{from:s-o,to:e+o}}}var it=(s,{from:e,to:t})=>s>=e&&s<t;var v=class{constructor(e,t){this.from=e,this.to=t}isWithin(e){return it(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 v(this.from,this.to)}};var{KEY:mn}=V;var Ce={hour:\"2-digit\",minute:\"2-digit\",second:\"2-digit\"},at={\"hh:mm:ss\":{locale:\"en-GB\",options:{...Ce,hour12:!1}},\"hh:mm:ss a\":{locale:\"en-GB\",options:{...Ce,hour12:!0}}},I={day:\"2-digit\",month:\"2-digit\",year:\"numeric\"},ut={\"dd.mm.yyyy\":{locale:\"en-GB\",options:{...I},postProcessor:s=>s.replaceAll(\"/\",\".\")},\"dd/mm/yyyy\":{locale:\"en-GB\",options:{...I}},\"dd MMM yyyy\":{locale:\"en-GB\",options:{...I,month:\"short\"}},\"dd MMMM yyyy\":{locale:\"en-GB\",options:{...I,month:\"long\"}},\"mm/dd/yyyy\":{locale:\"en-US\",options:{...I}},\"MMM dd, yyyy\":{locale:\"en-US\",options:{...I,month:\"short\"}},\"MMMM dd, yyyy\":{locale:\"en-US\",options:{...I,month:\"long\"}}},Rn={...ut,...at};var ct=[\"error\",\"warn\",\"info\",\"debug\"],pt=s=>typeof s==\"string\"&&ct.includes(s),dt=\"error\",A=()=>{},gt=\"error\",{loggingLevel:U=gt}=ft(),w=s=>{let e=U===\"debug\",t=e||U===\"info\",n=t||U===\"warn\",r=n||U===\"error\",o=t?p=>console.info(`[${s}] ${p}`):A,i=n?p=>console.warn(`[${s}] ${p}`):A,u=e?p=>console.debug(`[${s}] ${p}`):A;return{errorEnabled:r,error:r?p=>console.error(`[${s}] ${p}`):A}};function ft(){return typeof loggingSettings<\"u\"?loggingSettings:{loggingLevel:mt()}}function mt(){let s=me(\"vuu-logging-level\");return pt(s)?s:dt}var{debug:ht,debugEnabled:Ct}=w(\"range-monitor\"),F=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)Ct&&ht(`<${this.source}> [${e}-${t}], ${(this.timestamp-n).toFixed(0)} ms elapsed`);else return 0}};function be(s){return Array.isArray(s)}function bt(s){return!Array.isArray(s)}var R,Re=class{constructor(){k(this,R,new Map)}addListener(e,t){let n=d(this,R).get(e);n?be(n)?n.push(t):bt(n)&&d(this,R).set(e,[n,t]):d(this,R).set(e,t)}removeListener(e,t){if(!d(this,R).has(e))return;let n=d(this,R).get(e),r=-1;if(n===t)d(this,R).delete(e);else if(Array.isArray(n)){for(let o=length;o-- >0;)if(n[o]===t){r=o;break}if(r<0)return;n.length===1?(n.length=0,d(this,R).delete(e)):n.splice(r,1)}}removeAllListeners(e){e&&d(this,R).has(e)?d(this,R).delete(e):e===void 0&&d(this,R).clear()}emit(e,...t){if(d(this,R)){let n=d(this,R).get(e);n&&this.invokeHandler(n,t)}}once(e,t){let n=(...r)=>{this.removeListener(e,n),t(...r)};this.on(e,n)}on(e,t){this.addListener(e,t)}hasListener(e,t){let n=d(this,R).get(e);return Array.isArray(n)?n.includes(t):n===t}invokeHandler(e,t){if(be(e))e.slice().forEach(n=>this.invokeHandler(n,t));else switch(t.length){case 0:e();break;case 1:e(t[0]);break;case 2:e(t[0],t[1]);break;default:e.call(null,...t)}}};R=new WeakMap;var N=String.fromCharCode(8200),f=String.fromCharCode(8199);var Ln={DIGIT:f,TWO_DIGITS:f+f,THREE_DIGITS:f+f+f,FULL_PADDING:[null,N+f,N+f+f,N+f+f+f,N+f+f+f+f]};var _n=f+f+f+f+f+f+f+f+f;var{COUNT:rr}=V;var W=class{constructor(e){this.keys=new Map,this.free=[],this.nextKeyValue=0,this.reset(e)}next(){return this.free.length>0?this.free.pop():this.nextKeyValue++}reset({from:e,to:t}){this.keys.forEach((r,o)=>{(o<e||o>=t)&&(this.free.push(r),this.keys.delete(o))});let n=t-e;this.keys.size+this.free.length>n&&(this.free.length=Math.max(0,n-this.keys.size));for(let r=e;r<t;r++)if(!this.keys.has(r)){let o=this.next();this.keys.set(r,o)}this.nextKeyValue>this.keys.size&&(this.nextKeyValue=this.keys.size)}keyFor(e){let t=this.keys.get(e);if(t===void 0)throw console.log(`key not found\n keys: ${this.toDebugString()}\n free : ${this.free.join(\",\")} \n `),Error(`KeySet, no key found for rowIndex ${e}`);return t}toDebugString(){return Array.from(this.keys.entries()).map((e,t)=>`${e}=>${t}`).join(\",\")}};var{IDX:pr}=V;var{SELECTED:fr}=V,M={False:0,True:1,First:2,Last:4};var Rt=(s,e)=>e>=s[0]&&e<=s[1],Tt=M.True+M.First+M.Last,yt=M.True+M.First,St=M.True+M.Last,Q=(s,e)=>{for(let t of s)if(typeof t==\"number\"){if(t===e)return Tt}else if(Rt(t,e))return e===t[0]?yt:e===t[1]?St:M.True;return M.False};var Te=s=>{if(s.every(t=>typeof t==\"number\"))return s;let e=[];for(let t of s)if(typeof t==\"number\")e.push(t);else for(let n=t[0];n<=t[1];n++)e.push(n);return e};var wt=(()=>{let s=0,e=()=>`0000${(Math.random()*36**4<<0).toString(36)}`.slice(-4);return()=>(s+=1,`u${e()}${s}`)})();var{debug:Ks,debugEnabled:Qs,error:we,info:E,infoEnabled:vt,warn:P}=w(\"websocket-connection\"),Ee=\"ws\",It=s=>s.startsWith(Ee+\"://\")||s.startsWith(Ee+\"s://\"),xe={},Z=Symbol(\"setWebsocket\"),q=Symbol(\"connectionCallback\");async function ve(s,e,t,n=10,r=5){return xe[s]={status:\"connecting\",connect:{allowed:r,remaining:r},reconnect:{allowed:n,remaining:n}},Ie(s,e,t)}async function Y(s){throw Error(\"connection broken\")}async function Ie(s,e,t,n){let{status:r,connect:o,reconnect:i}=xe[s],u=r===\"connecting\"?o:i;try{t({type:\"connection-status\",status:\"connecting\"});let c=typeof n<\"u\",p=await Pt(s,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,s,e,t),l=c?\"reconnected\":\"connection-open-awaiting-session\";return t({type:\"connection-status\",status:l}),a.status=l,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 Dt(s,e,t,n,2e3);throw Error(\"Failed to establish connection\")}}var Dt=(s,e,t,n,r)=>new Promise(o=>{setTimeout(()=>{o(Ie(s,e,t,n))},r)}),Pt=(s,e)=>new Promise((t,n)=>{let r=It(s)?s:`wss://${s}`;vt&&e!==void 0&&E(`WebSocket Protocol ${e==null?void 0:e.toString()}`);let o=new WebSocket(r,e);o.onopen=()=>t(o),o.onerror=i=>n(i)}),Ve=()=>{P==null||P(\"Connection cannot be closed, socket not yet opened\")},Me=s=>{P==null||P(`Message cannot be sent, socket closed ${s.body.type}`)},Lt=s=>{try{return JSON.parse(s)}catch{throw Error(`Error parsing JSON response from server ${s}`)}},ee=class{constructor(e,t,n,r){this.close=Ve;this.requiresLogin=!0;this.send=Me;this.status=\"ready\";this.messagesCount=0;this.connectionMetricsInterval=null;this.handleWebsocketMessage=e=>{let t=Lt(e.data);this.messagesCount+=1,this[q](t)};this.url=t,this.protocol=n,this[q]=r,this[Z](e)}reconnect(){Y(this)}[(q,Z)](e){let t=this[q];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=()=>{we(\"⚡ connection error\"),t({type:\"connection-status\",status:\"disconnected\",reason:\"error\"}),this.connectionMetricsInterval&&(clearInterval(this.connectionMetricsInterval),this.connectionMetricsInterval=null),this.status===\"connection-open-awaiting-session\"?we(\"Websocket connection lost before Vuu session established, check websocket configuration\"):this.status!==\"closed\"&&(Y(this),this.send=r)},e.onclose=()=>{E==null||E(\"⚡ connection close\"),t({type:\"connection-status\",status:\"disconnected\",reason:\"close\"}),this.connectionMetricsInterval&&(clearInterval(this.connectionMetricsInterval),this.connectionMetricsInterval=null),this.status!==\"closed\"&&(Y(this),this.send=r)};let n=o=>{e.send(JSON.stringify(o))},r=o=>{E==null||E(`TODO queue message until websocket reconnected ${o.body.type}`)};this.send=n,this.close=()=>{this.status=\"closed\",e.close(),this.close=Ve,this.send=Me,E==null||E(\"close websocket\")}}};var _t=[\"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\"],De=s=>_t.includes(s.type),Pe=s=>s.type===\"VIEW_PORT_RPC_CALL\",$=({requestId:s,...e})=>[s,e],Le=s=>{let e=s.at(0);if(e.updateType===\"SIZE\"){if(s.length===1)return s;e=s.at(1)}let t=s.at(-1);return[e,t]},_e=s=>{let e={};for(let t of s)(e[t.viewPortId]||(e[t.viewPortId]=[])).push(t);return e};var te=({columns:s,dataTypes:e,key:t,table:n})=>({table:n,columns:s.map((r,o)=>({name:r,serverDataType:e[o]})),key:t});var Oe=s=>s.type===\"connection-status\",ke=s=>s.type===\"connection-metrics\";var Ae=s=>\"viewport\"in s,Ue=s=>s.type===\"VIEW_PORT_MENU_RESP\"&&s.action!==null&&G(s.action.table),G=s=>s!==null&&typeof s==\"object\"&&\"table\"in s&&\"module\"in s?s.table.startsWith(\"session\"):!1;var Fe=\"CHANGE_VP_SUCCESS\";var Ne=\"CLOSE_TREE_NODE\",We=\"CLOSE_TREE_SUCCESS\";var qe=\"CREATE_VP\",$e=\"DISABLE_VP\",Ge=\"DISABLE_VP_SUCCESS\";var Be=\"ENABLE_VP\",He=\"ENABLE_VP_SUCCESS\";var ne=\"GET_VP_VISUAL_LINKS\",je=\"GET_VIEW_PORT_MENUS\";var ze=\"HB\",Je=\"HB_RESP\",Ke=\"LOGIN\",Qe=\"OPEN_TREE_NODE\",Xe=\"OPEN_TREE_SUCCESS\";var Ye=\"REMOVE_VP\";var Ze=\"SET_SELECTION_SUCCESS\";var tt=s=>{switch(s){case\"TypeAheadRpcHandler\":return\"TYPEAHEAD\";default:return\"SIMUL\"}};var nt=[],T=w(\"array-backed-moving-window\");function Ot(s,e){if(!e||e.data.length!==s.data.length||e.sel!==s.sel)return!1;for(let t=0;t<e.data.length;t++)if(e.data[t]!==s.data[t])return!1;return!0}var h,B=class{constructor({from:e,to:t},{from:n,to:r},o){k(this,h,void 0);this.setRowCount=e=>{var t;if((t=T.info)==null||t.call(T,`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 r=this.clientRange.from;r<n;r++){let o=r-d(this,h).from;this.internalData[o]!==void 0&&(this.rowsWithinRange+=1)}}this.rowCount=e};this.bufferBreakout=(e,t)=>{let n=this.bufferSize*.25;return d(this,h).to-t<n?!0:d(this,h).from>0&&e-d(this,h).from<n};this.bufferSize=o,this.clientRange=new v(e,t),ge(this,h,new v(n,r)),this.internalData=new Array(o),this.rowsWithinRange=0,this.rowCount=0}get range(){return d(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:r}=this.range;if(t<n||e>=r)return!0}setAtIndex(e){let{rowIndex:t}=e,n=t-d(this,h).from;if(Ot(e,this.internalData[n]))return!1;let r=this.isWithinClientRange(t);return(r||this.isWithinRange(t))&&(!this.internalData[n]&&r&&(this.rowsWithinRange+=1),this.internalData[n]=e),r}getAtIndex(e){return d(this,h).isWithin(e)&&this.internalData[e-d(this,h).from]!=null?this.internalData[e-d(this,h).from]:void 0}isWithinRange(e){return d(this,h).isWithin(e)}isWithinClientRange(e){return this.clientRange.isWithin(e)}setClientRange(e,t){var p;(p=T.debug)==null||p.call(T,`setClientRange ${e} - ${t}`);let n=this.clientRange.from,r=Math.min(this.clientRange.to,this.rowCount);if(e===n&&t===r)return[!1,nt];let o=this.clientRange.copy();this.clientRange.from=e,this.clientRange.to=t,this.rowsWithinRange=0;for(let a=e;a<t;a++){let l=a-d(this,h).from;this.internalData[l]&&(this.rowsWithinRange+=1)}let i=nt,u=d(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,r;if(e!==d(this,h).from||t!==d(this,h).to){(n=T.debug)==null||n.call(T,`setRange ${e} - ${t}`);let[o,i]=d(this,h).overlap(e,t),u=new Array(t-e);this.rowsWithinRange=0;for(let c=o;c<i;c++){let p=this.getAtIndex(c);if(p){let a=c-e;u[a]=p,this.isWithinClientRange(c)&&(this.rowsWithinRange+=1)}}this.internalData=u,d(this,h).from=e,d(this,h).to=t}else(r=T.debug)==null||r.call(T,`setRange ${e} - ${t} IGNORED because not changed`)}get data(){return this.internalData}getData(){var u;let{from:e,to:t}=d(this,h),{from:n,to:r}=this.clientRange,o=Math.max(0,n-e),i=Math.min(t-e,t,r-e,(u=this.rowCount)!=null?u:t);return this.internalData.slice(o,i)}clear(){var e;(e=T.debug)==null||e.call(T,\"clear\"),this.internalData.length=0,this.rowsWithinRange=0,this.setRowCount(0)}getCurrentDataRange(){let e=this.internalData,t=e.length,[n]=this.internalData,r=this.internalData[t-1];if(n&&r)return[n.rowIndex,r.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){r=e[o];break}return n&&r?[n.rowIndex,r.rowIndex]:[-1,-1]}};h=new WeakMap;var kt=[],{debug:C,debugEnabled:H,error:At,info:g,infoEnabled:Ut,warn:L}=w(\"viewport\"),Ft=({rowKey:s,updateType:e})=>e===\"U\"&&!s.startsWith(\"$root\"),j=[void 0,void 0],Nt={count:0,mode:void 0,size:0,ts:0},z=class{constructor({aggregations:e,bufferSize:t=50,columns:n,filter:r,groupBy:o=[],table:i,range:u,sort:c,title:p,viewport:a,visualLink:l},m){this.batchMode=!0;this.hasUpdates=!1;this.pendingUpdates=[];this.pendingOperations=new Map;this.pendingRangeRequests=[];this.rowCountChanged=!1;this.selectedRows=[];this.useBatchMode=!0;this.lastUpdateStatus=Nt;this.updateThrottleTimer=void 0;this.rangeMonitor=new F(\"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,r=0;if(n===e){let o=Date.now();this.lastUpdateStatus.count+=1,this.lastUpdateStatus.ts=o,r=t===0?0:o-t}else this.lastUpdateStatus.count=1,this.lastUpdateStatus.ts=0,r=0;return this.lastUpdateStatus.mode=e,r};this.rangeRequestAlreadyPending=e=>{let{bufferSize:t}=this,n=t*.25,{from:r}=e;for(let{from:o,to:i}of this.pendingRangeRequests)if(r>=o&&r<i){if(e.to+n<=i)return!0;r=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)?(g==null||g(\"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=r,this.groupBy=o,this.keys=new W(u),this.pendingLinkedParent=l,this.table=i,this.sort=c,this.title=p,Ut&&(g==null||g(`constructor #${a} ${i.table} bufferSize=${t}`)),this.dataWindow=new B(this.clientRange,u,this.bufferSize),this.postMessageToClient=m}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:qe,table:this.table,range:K(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:r,range:o,sort:i,groupBy:u},c){return 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),{aggregations:t,type:\"subscribed\",clientViewportId:this.clientViewportId,columns:n,filter:r,groupBy:u,range:o,sort:i,tableSchema:c}}awaitOperation(e,t){this.pendingOperations.set(e,t)}completeOperation(e,...t){var u;let{clientViewportId:n,pendingOperations:r}=this,o=r.get(e);if(!o){At(`no matching operation found to complete for requestId ${e}`);return}let{type:i}=o;if(g==null||g(`completeOperation ${i}`),r.delete(e),i===\"CHANGE_VP_RANGE\"){let[c,p]=t;(u=this.dataWindow)==null||u.setRange(c,p);for(let a=this.pendingRangeRequests.length-1;a>=0;a--){let l=this.pendingRangeRequests[a];if(l.requestId===e){l.acked=!0;break}else L==null||L(\"range requests sent faster than they are being ACKed\")}}else if(i===\"config\"){let{aggregations:c,columns:p,filter:a,groupBy:l,sort:m}=o.data;return this.aggregations=c,this.columns=p,this.filter=a,this.groupBy=l,this.sort=m,l.length>0?this.isTree=!0:this.isTree&&(this.isTree=!1),C==null||C(`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,C==null||C(`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[c,p,a]=t;return this.linkedParent={colName:c,parentViewportId:p,parentColName:a},this.pendingLinkedParent=void 0,{type:\"vuu-link-created\",clientViewportId:n,colName:c,parentViewportId:p,parentColName:a}}else if(i===\"REMOVE_VISUAL_LINK\")return this.linkedParent=void 0,{type:\"vuu-link-removed\",clientViewportId:n}}}}rangeRequest(e,t){H&&this.rangeMonitor.set(t);let n=\"CHANGE_VP_RANGE\";if(this.dataWindow){let[r,o]=this.dataWindow.setClientRange(t.from,t.to),i,u=this.dataWindow.rowCount||void 0,c=r&&!this.rangeRequestAlreadyPending(t)?{type:n,viewPortId:this.serverViewportId,...K(t,this.bufferSize,u)}:null;if(c){H&&(C==null||C(`create CHANGE_VP_RANGE: [${c.from} - ${c.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:l,to:m}=a;this.dataWindow.outOfRange(l,m)?i={clientViewportId:this.clientViewportId,type:\"debounce-begin\"}:L==null||L(\"Range Request before previous request is acked\")}this.pendingRangeRequests.push({...c,requestId:e}),this.useBatchMode&&(this.batchMode=!0)}else o.length>0&&(this.batchMode=!1);this.keys.reset(this.dataWindow.clientRange);let p=this.isTree?se:re;return o.length?[c,o.map(a=>p(a,this.keys,this.selectedRows))]:i?[c,void 0,i]:[c]}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:Qe,vpId:this.serverViewportId,treeKey:t.key}}closeTreeNode(e,t){return this.useBatchMode&&(this.batchMode=!0),{type:Ne,vpId:this.serverViewportId,treeKey:t.key}}createLink(e,t,n,r){let o={type:\"CREATE_VISUAL_LINK\",parentVpId:n,childVpId:this.serverViewportId,parentColumnName:r,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,g==null||g(\"suspend\")}resume(){return this.suspended=!1,H&&(C==null||C(`resume: ${this.currentData()}`)),[this.size,this.currentData()]}currentData(){let e=[];if(this.dataWindow){let t=this.dataWindow.getData(),{keys:n}=this,r=this.isTree?se:re;for(let o of t)o&&e.push(r(o,n,this.selectedRows))}return e}enable(e){return this.awaitOperation(e,{type:\"enable\"}),g==null||g(`enable: ${this.serverViewportId}`),{type:Be,viewPortId:this.serverViewportId}}disable(e){return this.awaitOperation(e,{type:\"disable\"}),g==null||g(`disable: ${this.serverViewportId}`),this.suspended=!1,{type:$e,viewPortId:this.serverViewportId}}columnRequest(e,t){return this.awaitOperation(e,{type:\"columns\",data:t}),C==null||C(`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 g==null||g(`filterRequest: ${n}`),this.createRequest({filterSpec:{filter:n}})}setConfig(e,t){this.awaitOperation(e,{type:\"config\",data:t});let{filter:n,...r}=t;return this.useBatchMode&&(this.batchMode=!0),H?C==null||C(`setConfig ${JSON.stringify(t)}`):g==null||g(\"setConfig\"),this.createRequest({...r,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}),g==null||g(`aggregateRequest: ${t}`),this.createRequest({aggregations:t})}sortRequest(e,t){return this.awaitOperation(e,{type:\"sort\",data:t}),g==null||g(`sortRequest: ${JSON.stringify(t.sortDefs)}`),this.createRequest({sort:t})}groupByRequest(e,t=kt){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}),g==null||g(`selectRequest: ${t}`),{type:\"SET_SELECTION\",vpId:this.serverViewportId,selection:Te(t)}}removePendingRangeRequest(e,t){for(let n=this.pendingRangeRequests.length-1;n>=0;n--){let{from:r,to:o}=this.pendingRangeRequests[n],i=!0;if(e>=r&&e<o||t>r&&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 r,o,i;let[t,n]=Le(e);if(t&&n&&this.removePendingRangeRequest(t.rowIndex,n.rowIndex),e.length===1)if(t.vpSize===0&&this.disabled){C==null||C(`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&&Ft(u)||((u.updateType===\"SIZE\"||((r=this.dataWindow)==null?void 0:r.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 j;if(this.hasUpdates){let{keys:n,selectedRows:r}=this,o=this.isTree?se:re;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,r));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,r));this.batchMode=!1}}this.hasUpdates=!1}return this.throttleMessage(t)?j:[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}}},re=({rowIndex:s,rowKey:e,sel:t,data:n},r,o)=>[s,r.keyFor(s),!0,!1,0,0,e,t?Q(o,s):0].concat(n),se=({rowIndex:s,rowKey:e,sel:t,data:n},r,o)=>{let[i,u,,c,,p,...a]=n;return[s,r.keyFor(s),c,u,i,p,e,t?Q(o,s):0].concat(a)};var rt=1;var{debug:x,debugEnabled:oe,error:_,info:S,infoEnabled:Wt,warn:ie}=w(\"server-proxy\"),b=()=>`${rt++}`,qt={},$t=s=>s.disabled!==!0&&s.suspended!==!0,Gt={type:\"NO_ACTION\"},Bt=(s,e,t)=>s.map(n=>n.parentVpId===e?{...n,label:t}:n);function Ht(s,e){return s.map(t=>{let{parentVpId:n}=t,r=e.get(n);if(r)return{...t,parentClientVpId:r.clientViewportId,label:r.title};throw Error(\"addLabelsToLinks viewport not found\")})}var J=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]=fe(Array.from(this.viewports.values()),$t);this.viewports.clear(),this.mapClientToServerViewport.clear();let n=r=>{r.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,r)=>{this.sendMessageToServer({type:Ke,token:this.authToken,user:t},\"\"),this.pendingLogin={resolve:n,reject:r}});this.authToken===\"\"&&_(\"login, cannot login until auth token has been obtained\")}subscribe(e){if(this.mapClientToServerViewport.has(e.viewport))_(`spurious subscribe call ${e.viewport}`);else{let t=this.getTableMeta(e.table),n=new z(e,this.postMessageToClient);this.viewports.set(e.viewport,n);let r=this.awaitResponseToMessage(n.subscribe(),e.viewport);Promise.all([r,t]).then(([i,u])=>{let{viewPortId:c}=i,{status:p}=n;e.viewport!==c&&(this.viewports.delete(e.viewport),this.viewports.set(c,n)),this.mapClientToServerViewport.set(e.viewport,c);let a=n.handleSubscribed(i,u);a&&(this.postMessageToClient(a),oe&&x(`post DataSourceSubscribedMessage to client: ${JSON.stringify(a)}`)),n.disabled&&this.disableViewport(n),this.queuedRequests.length>0&&this.processQueuedRequests(),p===\"subscribing\"&&!G(n.table)&&(this.sendMessageToServer({type:ne,vpId:c}),this.sendMessageToServer({type:je,vpId:c}),Array.from(this.viewports.entries()).filter(([l,{disabled:m}])=>l!==c&&!m).forEach(([l])=>{this.sendMessageToServer({type:ne,vpId:l})}))})}}processQueuedRequests(){let e={};for(;this.queuedRequests.length;){let t=this.queuedRequests.pop();if(t){let{clientViewportId:n,message:r,requestId:o}=t;if(r.type===\"CHANGE_VP_RANGE\"){if(e.CHANGE_VP_RANGE)continue;e.CHANGE_VP_RANGE=!0;let i=this.mapClientToServerViewport.get(n);i&&this.sendMessageToServer({...r,viewPortId:i},o)}}}}unsubscribe(e){let t=this.mapClientToServerViewport.get(e);t?(S==null||S(`Unsubscribe Message (Client to Server):\n ${t}`),this.sendMessageToServer({type:Ye,viewPortId:t})):_(`failed to unsubscribe client viewport ${e}, viewport not found`)}getViewportForClient(e,t=!0){let n=this.mapClientToServerViewport.get(e);if(n){let r=this.viewports.get(n);if(r)return r;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=b(),[r,o,i]=e.rangeRequest(n,t.range);S==null||S(`setViewRange ${t.range.from} - ${t.range.to}`),r&&(this.sendIfReady(r,n,e.status===\"subscribed\")||this.queuedRequests.push({clientViewportId:t.viewport,message:r,requestId:n})),o?(S==null||S(`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=b(),r=e.setConfig(n,t.config);this.sendIfReady(r,n,e.status===\"subscribed\")}aggregate(e,t){let n=b(),r=e.aggregateRequest(n,t.aggregations);this.sendIfReady(r,n,e.status===\"subscribed\")}sort(e,t){let n=b(),r=e.sortRequest(n,t.sort);this.sendIfReady(r,n,e.status===\"subscribed\")}groupBy(e,t){let n=b(),r=e.groupByRequest(n,t.groupBy);this.sendIfReady(r,n,e.status===\"subscribed\")}filter(e,t){let n=b(),{filter:r}=t,o=e.filterRequest(n,r);this.sendIfReady(o,n,e.status===\"subscribed\")}setColumns(e,t){let n=b(),{columns:r}=t,o=e.columnRequest(n,r);this.sendIfReady(o,n,e.status===\"subscribed\")}setTitle(e,t){e&&(e.title=t.title,this.updateTitleOnVisualLinks(e))}select(e,t){let n=b(),{selected:r}=t,o=e.selectRequest(n,r);this.sendIfReady(o,n,e.status===\"subscribed\")}disableViewport(e){let t=b(),n=e.disable(t);this.sendIfReady(n,t,e.status===\"subscribed\")}enableViewport(e){if(e.disabled){let t=b(),n=e.enable(t);this.sendIfReady(n,t,e.status===\"subscribed\")}}suspendViewport(e){e.suspend(),e.suspendTimer=setTimeout(()=>{S==null||S(\"suspendTimer expired, escalate suspend to disable\"),this.disableViewport(e)},3e3)}resumeViewport(e){e.suspendTimer&&(x==null||x(\"clear suspend timer\"),clearTimeout(e.suspendTimer),e.suspendTimer=null);let[t,n]=e.resume();x==null||x(`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=b();this.sendIfReady(e.openTreeNode(n,t),n,e.status===\"subscribed\")}}closeTreeNode(e,t){if(e.serverViewportId){let n=b();this.sendIfReady(e.closeTreeNode(n,t),n,e.status===\"subscribed\")}}createLink(e,t){let{parentClientVpId:n,parentColumnName:r,childColumnName:o}=t,i=b(),u=this.mapClientToServerViewport.get(n);if(u){let c=e.createLink(i,o,u,r);this.sendMessageToServer(c,i)}else _(\"ServerProxy unable to create link, viewport not found\")}removeLink(e){let t=b(),n=e.removeLink(t);this.sendMessageToServer(n,t)}updateTitleOnVisualLinks(e){var r;let{serverViewportId:t,title:n}=e;for(let o of this.viewports.values())if(o!==e&&o.links&&t&&n&&(r=o.links)!=null&&r.some(i=>i.parentVpId===t)){let[i]=o.setLinks(Bt(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:r})=>r===e)){let[r]=n.setLinks(n.links.filter(({parentVpId:o})=>o!==e));this.postMessageToClient(r)}}menuRpcCall(e){let t=this.getViewportForClient(e.vpId,!1);if(t!=null&&t.serverViewportId){let[n,r]=$(e);this.sendMessageToServer({...r,vpId:t.serverViewportId},n)}}viewportRpcCall(e){let t=this.getViewportForClient(e.vpId,!1);if(t!=null&&t.serverViewportId){let[n,r]=$(e);this.sendMessageToServer({...r,vpId:t.serverViewportId,namedParams:{}},n)}}rpcCall(e){let[t,n]=$(e),r=tt(n.service);this.sendMessageToServer(n,t,{module:r})}handleMessageFromClient(e){var t;if(Ae(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(Pe(e))return this.viewportRpcCall(e);if(De(e))return this.menuRpcCall(e);{let{type:n,requestId:r}=e;switch(n){case\"GET_TABLE_LIST\":{(t=this.tableList)!=null||(this.tableList=this.awaitResponseToMessage({type:n},r)),this.tableList.then(o=>{this.postMessageToClient({type:\"TABLE_LIST_RESP\",tables:o.tables,requestId:r})});return}case\"GET_TABLE_META\":{this.getTableMeta(e.table,r).then(o=>{o&&this.postMessageToClient({type:\"TABLE_META_RESP\",tableSchema:o,requestId:r})});return}case\"RPC_CALL\":return this.rpcCall(e);default:}}}_(`Vuu ServerProxy Unexpected message from client ${JSON.stringify(e)}`)}getTableMeta(e,t=b()){if(G(e))return Promise.resolve(void 0);let n=`${e.module}:${e.table}`,r=this.cachedTableMetaRequests.get(n);return r||(r=this.awaitResponseToMessage({type:\"GET_TABLE_META\",table:e},t),this.cachedTableMetaRequests.set(n,r)),r==null?void 0:r.then(o=>this.cacheTableMeta(o))}awaitResponseToMessage(e,t=b()){return new Promise((n,r)=>{this.sendMessageToServer(e,t),this.pendingRequests.set(t,{reject:r,resolve:n})})}sendIfReady(e,t,n=!0){return n&&this.sendMessageToServer(e,t),n}sendMessageToServer(e,t=`${rt++}`,n=qt){let{module:r=\"CORE\"}=n;this.authToken&&this.connection.send({requestId:t,sessionId:this.sessionId,token:this.authToken,user:this.user,module:r,body:e})}handleMessageFromServer(e){var u;let{body:t,requestId:n,sessionId:r}=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 ze:this.sendMessageToServer({type:Je,ts:+new Date},\"NA\");break;case\"LOGIN_SUCCESS\":if(r)this.sessionId=r,(u=this.pendingLogin)==null||u.resolve(r),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 Ze:{let a=this.viewports.get(t.vpId);a&&a.completeOperation(n)}break;case Fe:case Ge:if(i.has(t.viewPortId)){let a=this.viewports.get(t.viewPortId);if(a){let l=a.completeOperation(n);l!==void 0&&(this.postMessageToClient(l),oe&&x(`postMessageToClient ${JSON.stringify(l)}`))}}break;case He:{let a=this.viewports.get(t.viewPortId);if(a){let l=a.completeOperation(n);if(l){this.postMessageToClient(l);let[m,y]=a.resume();this.postMessageToClient({clientViewportId:a.clientViewportId,mode:\"batch\",rows:y,size:m,type:\"viewport-update\"})}}}break;case\"TABLE_ROW\":{let a=_e(t.rows);for(let[l,m]of Object.entries(a)){let y=i.get(l);y?y.updateRows(m):ie==null||ie(`TABLE_ROW message received for non registered viewport ${l}`)}this.processUpdates()}break;case\"CHANGE_VP_RANGE_SUCCESS\":{let a=this.viewports.get(t.viewPortId);if(a){let{from:l,to:m}=t;a.completeOperation(n,l,m)}}break;case Xe:case We:break;case\"CREATE_VISUAL_LINK_SUCCESS\":{let a=this.viewports.get(t.childVpId),l=this.viewports.get(t.parentVpId);if(a&&l){let{childColumnName:m,parentColumnName:y}=t,O=a.completeOperation(n,m,l.clientViewportId,y);O&&this.postMessageToClient(O)}}break;case\"REMOVE_VISUAL_LINK_SUCCESS\":{let a=this.viewports.get(t.childVpId);if(a){let l=a.completeOperation(n);l&&this.postMessageToClient(l)}}break;case\"VP_VISUAL_LINKS_RESP\":{let a=this.getActiveLinks(t.links),l=this.viewports.get(t.vpId);if(a.length&&l){let m=Ht(a,this.viewports),[y,O]=l.setLinks(m);if(this.postMessageToClient(y),O){let{link:le,parentClientVpId:st}=O,ce=b(),pe=this.mapClientToServerViewport.get(st);if(pe){let ot=l.createLink(ce,le.fromColumn,pe,le.toColumn);this.sendMessageToServer(ot,ce)}}}}break;case\"VIEW_PORT_MENUS_RESP\":if(t.menu.name){let a=this.viewports.get(t.vpId);if(a){let l=a.setMenu(t.menu);this.postMessageToClient(l)}}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:l,vpId:m}=t,y=this.viewports.get(m);y&&this.postMessageToClient({clientViewportId:y.clientViewportId,error:a,rpcName:l,type:\"VIEW_PORT_MENU_REJ\",requestId:n});break}case\"VIEW_PORT_MENU_RESP\":if(Ue(t)){let{action:a,rpcName:l}=t;this.awaitResponseToMessage({type:\"GET_TABLE_META\",table:a.table}).then(m=>{let y=te(m);this.postMessageToClient({rpcName:l,type:\"VIEW_PORT_MENU_RESP\",action:{...a,tableSchema:y},tableAlreadyOpen:this.isTableOpen(a.table),requestId:n})})}else{let{action:a}=t;this.postMessageToClient({type:\"VIEW_PORT_MENU_RESP\",action:a||Gt,tableAlreadyOpen:a!==null&&this.isTableOpen(a.table),requestId:n})}break;case\"RPC_RESP\":{let{method:a,result:l}=t;this.postMessageToClient({type:\"RPC_RESP\",method:a,result:l,requestId:n})}break;case\"VIEW_PORT_RPC_REPONSE\":{let{method:a,action:l}=t;this.postMessageToClient({type:\"VIEW_PORT_RPC_RESPONSE\",rpcName:a,action:l,requestId:n})}break;case\"ERROR\":_(t.msg);break;default:Wt&&S(`handleMessageFromServer ${t.type}.`)}}cacheTableMeta(e){let{module:t,table:n}=e.table,r=`${t}:${n}`,o=this.cachedTableSchemas.get(r);return o||(o=te(e),this.cachedTableSchemas.set(r,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!==j){let[r,o]=n,i=e.getNewRowCount();(i!==void 0||r&&r.length>0)&&(oe&&x(`postMessageToClient #${e.clientViewportId} viewport-update ${o}, ${(t=r==null?void 0:r.length)!=null?t:\"no\"} rows, size ${i}`),o&&this.postMessageToClient({clientViewportId:e.clientViewportId,mode:o,rows:r,size:i,type:\"viewport-update\"}))}}})}};var D,{info:ae,infoEnabled:ue}=w(\"worker\");async function jt(s,e,t,n,r,o,i){let u=await ve(s,e,c=>{ke(c)?postMessage({type:\"connection-metrics\",messages:c}):Oe(c)?(r(c),c.status===\"reconnected\"&&D.reconnect()):D.handleMessageFromServer(c)},o,i);D=new J(u,c=>zt(c)),u.requiresLogin&&await D.login(t,n)}function zt(s){postMessage(s)}var Jt=async({data:s})=>{switch(s.type){case\"connect\":await jt(s.url,s.protocol,s.token,s.username,postMessage,s.retryLimitDisconnect,s.retryLimitStartup),postMessage({type:\"connected\"});break;case\"subscribe\":ue&&ae(`client subscribe: ${JSON.stringify(s)}`),D.subscribe(s);break;case\"unsubscribe\":ue&&ae(`client unsubscribe: ${JSON.stringify(s)}`),D.unsubscribe(s.viewport);break;default:ue&&ae(`client message: ${JSON.stringify(s)}`),D.handleMessageFromClient(s)}};self.addEventListener(\"message\",Jt);postMessage({type:\"ready\"});\n\n";
@@ -1,56 +0,0 @@
1
- import { ColumnDescriptor, Selection } from "@vuu-ui/vuu-table-types";
2
- import { LinkDescriptorWithLabel, VuuGroupBy, VuuAggregation, VuuRange, VuuSort, ClientToServerMenuRPC, ClientToServerEditRpc, VuuRowDataItemType } from "@vuu-ui/vuu-protocol-types";
3
- import { DataSourceFilter, DataSourceRow } from "@vuu-ui/vuu-data-types";
4
- import { EventEmitter, JsonData } from "@vuu-ui/vuu-utils";
5
- import type { DataSource, DataSourceConstructorProps, DataSourceEvents, DataSourceStatus, SubscribeCallback, SubscribeProps, WithFullConfig } from "./data-source";
6
- import { MenuRpcResponse, VuuUIMessageInRPCEditReject, VuuUIMessageInRPCEditResponse } from "./vuuUIMessageTypes";
7
- export interface JsonDataSourceConstructorProps extends Omit<DataSourceConstructorProps, "bufferSize" | "table"> {
8
- data: JsonData;
9
- }
10
- export declare class JsonDataSource extends EventEmitter<DataSourceEvents> implements DataSource {
11
- #private;
12
- columnDescriptors: ColumnDescriptor[];
13
- private clientCallback;
14
- private expandedRows;
15
- private visibleRows;
16
- rowCount: number | undefined;
17
- viewport: string;
18
- private keys;
19
- constructor({ aggregations, data, filter, groupBy, sort, title, viewport, }: JsonDataSourceConstructorProps);
20
- subscribe({ viewport, columns, aggregations, range, sort, groupBy, filter, }: SubscribeProps, callback: SubscribeCallback): Promise<void>;
21
- unsubscribe(): void;
22
- suspend(): this;
23
- resume(): this;
24
- disable(): this;
25
- enable(): this;
26
- set data(data: JsonData);
27
- select(selected: Selection): void;
28
- openTreeNode(key: string): void;
29
- closeTreeNode(key: string, cascade?: boolean): void;
30
- get status(): DataSourceStatus;
31
- get config(): WithFullConfig;
32
- applyConfig(): true;
33
- get selectedRowsCount(): number;
34
- get size(): number;
35
- get range(): VuuRange;
36
- set range(range: VuuRange);
37
- private sendRowsToClient;
38
- get columns(): string[];
39
- set columns(columns: string[]);
40
- get aggregations(): VuuAggregation[];
41
- set aggregations(aggregations: VuuAggregation[]);
42
- get sort(): VuuSort;
43
- set sort(sort: VuuSort);
44
- get filter(): DataSourceFilter;
45
- set filter(filter: DataSourceFilter);
46
- get groupBy(): VuuGroupBy;
47
- set groupBy(groupBy: VuuGroupBy);
48
- get title(): string | undefined;
49
- set title(title: string | undefined);
50
- createLink({ parentVpId, link: { fromColumn, toColumn }, }: LinkDescriptorWithLabel): void;
51
- removeLink(): void;
52
- menuRpcCall(rpcRequest: Omit<ClientToServerMenuRPC, "vpId"> | ClientToServerEditRpc): Promise<MenuRpcResponse | VuuUIMessageInRPCEditReject | VuuUIMessageInRPCEditResponse | undefined>;
53
- applyEdit(row: DataSourceRow, columnName: string, value: VuuRowDataItemType): Promise<true>;
54
- getChildRows(rowKey: string): DataSourceRow[];
55
- getRowsAtDepth(depth: number, visibleOnly?: boolean): DataSourceRow[];
56
- }
@@ -1,28 +0,0 @@
1
- import { ClientToServerMenuRPC, ClientToServerViewportRpcCall, VuuColumnDataType, VuuRow, VuuRpcRequest, VuuTable, VuuTableMeta } from "@vuu-ui/vuu-protocol-types";
2
- import { VuuUIMessageOut } from "./vuuUIMessageTypes";
3
- export declare const isVuuMenuRpcRequest: (message: VuuUIMessageOut | VuuRpcRequest | ClientToServerMenuRPC) => message is ClientToServerMenuRPC;
4
- export declare const isVuuRpcRequest: (message: VuuUIMessageOut | VuuRpcRequest | ClientToServerMenuRPC | ClientToServerViewportRpcCall) => message is ClientToServerViewportRpcCall;
5
- export type WithRequestId<T> = T & {
6
- requestId: string;
7
- };
8
- export declare const stripRequestId: <T>({ requestId, ...rest }: WithRequestId<T>) => [string, T];
9
- export declare const getFirstAndLastRows: (rows: VuuRow[]) => [VuuRow, VuuRow] | [VuuRow];
10
- export type ViewportRowMap = {
11
- [key: string]: VuuRow[];
12
- };
13
- export declare const groupRowsByViewport: (rows: VuuRow[]) => ViewportRowMap;
14
- export type SchemaColumn = {
15
- name: string;
16
- serverDataType: VuuColumnDataType;
17
- };
18
- export interface VuuTableMetaWithTable extends VuuTableMeta {
19
- table: VuuTable;
20
- }
21
- export type TableSchema = {
22
- columns: SchemaColumn[];
23
- key: string;
24
- table: VuuTable;
25
- };
26
- export declare const byModule: (schema1: TableSchema, schema2: TableSchema) => 0 | 1 | -1;
27
- export declare const getColumnByName: (schema: TableSchema, name?: string) => SchemaColumn | undefined;
28
- export declare const createSchemaFromTableMetadata: ({ columns, dataTypes, key, table, }: VuuTableMetaWithTable) => Readonly<TableSchema>;
@@ -1,65 +0,0 @@
1
- import { DataSourceFilter, DataSourceRow } from "@vuu-ui/vuu-data-types";
2
- import { Selection } from "@vuu-ui/vuu-table-types";
3
- import { ClientToServerEditRpc, ClientToServerMenuRPC, ClientToServerViewportRpcCall, LinkDescriptorWithLabel, VuuAggregation, VuuDataRowDto, VuuGroupBy, VuuMenu, VuuRange, VuuRowDataItemType, VuuSort, VuuTable } from "@vuu-ui/vuu-protocol-types";
4
- import { EventEmitter } from "@vuu-ui/vuu-utils";
5
- import { DataSource, DataSourceCallbackMessage, DataSourceConfig, DataSourceConstructorProps, DataSourceEvents, DataSourceStatus, OptimizeStrategy, RpcResponse, SubscribeCallback, SubscribeProps } from "./data-source";
6
- import { MenuRpcResponse } from "./vuuUIMessageTypes";
7
- import { TableSchema } from "./message-utils";
8
- export declare class RemoteDataSource extends EventEmitter<DataSourceEvents> implements DataSource {
9
- #private;
10
- private bufferSize;
11
- private server;
12
- private clientCallback;
13
- private configChangePending;
14
- private rangeRequest;
15
- table: VuuTable;
16
- tableSchema: TableSchema | undefined;
17
- viewport: string | undefined;
18
- constructor({ bufferSize, aggregations, columns, filter, groupBy, sort, table, title, viewport, visualLink, }: DataSourceConstructorProps);
19
- subscribe({ viewport, columns, aggregations, range, sort, groupBy, filter, }: SubscribeProps, callback: SubscribeCallback): Promise<void>;
20
- handleMessageFromServer: (message: DataSourceCallbackMessage) => void;
21
- unsubscribe(): void;
22
- suspend(): this;
23
- resume(): this;
24
- disable(): this;
25
- enable(callback?: SubscribeCallback): this;
26
- select(selected: Selection): void;
27
- openTreeNode(key: string): void;
28
- closeTreeNode(key: string): void;
29
- get links(): LinkDescriptorWithLabel[] | undefined;
30
- get menu(): VuuMenu | undefined;
31
- get status(): DataSourceStatus;
32
- get optimize(): OptimizeStrategy;
33
- set optimize(optimize: OptimizeStrategy);
34
- private revertDebounce;
35
- get selectedRowsCount(): number;
36
- get size(): number;
37
- get range(): VuuRange;
38
- set range(range: VuuRange);
39
- private rawRangeRequest;
40
- private debounceRangeRequest;
41
- private throttleRangeRequest;
42
- get config(): DataSourceConfig;
43
- set config(config: DataSourceConfig);
44
- applyConfig(config: DataSourceConfig): true | undefined;
45
- get columns(): string[];
46
- set columns(columns: string[]);
47
- get aggregations(): VuuAggregation[];
48
- set aggregations(aggregations: VuuAggregation[]);
49
- get sort(): VuuSort;
50
- set sort(sort: VuuSort);
51
- get filter(): DataSourceFilter;
52
- set filter(filter: DataSourceFilter);
53
- get groupBy(): VuuGroupBy;
54
- set groupBy(groupBy: VuuGroupBy);
55
- get title(): string | undefined;
56
- set title(title: string | undefined);
57
- get visualLink(): LinkDescriptorWithLabel | undefined;
58
- set visualLink(visualLink: LinkDescriptorWithLabel | undefined);
59
- private setConfigPending;
60
- rpcCall<T extends RpcResponse = RpcResponse>(rpcRequest: Omit<ClientToServerViewportRpcCall, "vpId">): Promise<T | undefined>;
61
- menuRpcCall(rpcRequest: Omit<ClientToServerMenuRPC, "vpId"> | ClientToServerEditRpc): Promise<MenuRpcResponse | undefined>;
62
- applyEdit(row: DataSourceRow, columnName: string, value: VuuRowDataItemType): Promise<string | true>;
63
- insertRow(key: string, data: VuuDataRowDto): Promise<string | true>;
64
- deleteRow(rowKey: string): Promise<string | true>;
65
- }
@@ -1,38 +0,0 @@
1
- export declare const CHANGE_VP_SUCCESS = "CHANGE_VP_SUCCESS";
2
- export declare const CHANGE_VP_RANGE_SUCCESS = "CHANGE_VP_RANGE_SUCCESS";
3
- export declare const CLOSE_TREE_NODE = "CLOSE_TREE_NODE";
4
- export declare const CLOSE_TREE_SUCCESS = "CLOSE_TREE_SUCCESS";
5
- export declare const CLOSE_TREE_REJECT = "CLOSE_TREE_REJECT";
6
- export declare const CREATE_VISUAL_LINK = "CREATE_VISUAL_LINK";
7
- export declare const CREATE_VP = "CREATE_VP";
8
- export declare const DISABLE_VP = "DISABLE_VP";
9
- export declare const DISABLE_VP_SUCCESS = "DISABLE_VP_SUCCESS";
10
- export declare const DISABLE_VP_REJECT = "DISABLE_VP_REJECT";
11
- export declare const ENABLE_VP = "ENABLE_VP";
12
- export declare const ENABLE_VP_SUCCESS = "ENABLE_VP_SUCCESS";
13
- export declare const ENABLE_VP_REJECT = "ENABLE_VP_REJECT";
14
- export declare const GET_TABLE_META = "GET_TABLE_META";
15
- export declare const GET_VP_VISUAL_LINKS = "GET_VP_VISUAL_LINKS";
16
- export declare const GET_VIEW_PORT_MENUS = "GET_VIEW_PORT_MENUS";
17
- export declare const VIEW_PORT_MENUS_SELECT_RPC = "VIEW_PORT_MENUS_SELECT_RPC";
18
- export declare const VIEW_PORT_MENU_CELL_RPC = "VIEW_PORT_MENU_CELL_RPC";
19
- export declare const VIEW_PORT_MENU_TABLE_RPC = "VIEW_PORT_MENU_TABLE_RPC";
20
- export declare const VIEW_PORT_MENU_ROW_RPC = "VIEW_PORT_MENU_ROW_RPC";
21
- export declare const VIEW_PORT_MENU_RESP = "VIEW_PORT_MENU_RESP";
22
- export declare const VIEW_PORT_MENU_REJ = "VIEW_PORT_MENU_REJ";
23
- export declare const HB = "HB";
24
- export declare const HB_RESP = "HB_RESP";
25
- export declare const LOGIN = "LOGIN";
26
- export declare const OPEN_TREE_NODE = "OPEN_TREE_NODE";
27
- export declare const OPEN_TREE_SUCCESS = "OPEN_TREE_SUCCESS";
28
- export declare const OPEN_TREE_REJECT = "OPEN_TREE_REJECT";
29
- export declare const REMOVE_VP = "REMOVE_VP";
30
- export declare const REMOVE_VP_REJECT = "REMOVE_VP_REJECT";
31
- export declare const RPC_CALL = "RPC_CALL";
32
- export declare const RPC_RESP = "RPC_RESP";
33
- export declare const MENU_RPC_RESP = "MENU_RPC_RESP";
34
- export declare const SET_SELECTION = "SET_SELECTION";
35
- export declare const SET_SELECTION_SUCCESS = "SET_SELECTION_SUCCESS";
36
- export declare const TABLE_ROW = "TABLE_ROW";
37
- export declare const SIZE = "SIZE";
38
- export declare const UPDATE = "U";
@@ -1,228 +0,0 @@
1
- import { ClientToServerTableList, ClientToServerTableMeta, LinkDescriptorWithLabel, ServerToClientBody, ServerToClientMenuSessionTableAction, ServerToClientViewportRpcResponse, TypeAheadMethod, VuuAggregation, VuuColumns, VuuGroupBy, VuuRange, VuuSort, VuuTable } from "@vuu-ui/vuu-protocol-types";
2
- import { DataSourceFilter } from "@vuu-ui/vuu-data-types";
3
- import { TableSchema, WithRequestId } from "./message-utils";
4
- import { DataSourceMenusMessage, DataSourceVisualLinkCreatedMessage, DataSourceVisualLinkRemovedMessage, DataSourceVisualLinksMessage, RpcResponse, VuuFeatureInvocationMessage, VuuFeatureMessage, WithFullConfig } from "./data-source";
5
- import { GridAction, Selection } from "@vuu-ui/vuu-table-types";
6
- import { WebSocketProtocol } from "./websocket-connection";
7
- export interface OpenDialogAction {
8
- type: "OPEN_DIALOG_ACTION";
9
- tableSchema?: TableSchema;
10
- table?: VuuTable;
11
- }
12
- export interface NoAction {
13
- type: "NO_ACTION";
14
- }
15
- export declare type MenuRpcAction = OpenDialogAction | NoAction;
16
- export type ConnectionStatus = "connecting" | "connection-open-awaiting-session" | "connected" | "disconnected" | "reconnected";
17
- export interface ConnectionStatusMessage {
18
- type: "connection-status";
19
- reason?: string;
20
- retry?: boolean;
21
- status: ConnectionStatus;
22
- }
23
- export declare const isConnectionStatusMessage: (msg: object | ConnectionStatusMessage) => msg is ConnectionStatusMessage;
24
- export interface ConnectionQualityMetrics {
25
- type: "connection-metrics";
26
- messagesLength: number;
27
- }
28
- export declare const isConnectionQualityMetrics: (msg: object) => msg is ConnectionQualityMetrics;
29
- export interface ServerProxySubscribeMessage {
30
- aggregations: VuuAggregation[];
31
- bufferSize?: number;
32
- columns: VuuColumns;
33
- filter: DataSourceFilter;
34
- groupBy: VuuGroupBy;
35
- range: VuuRange;
36
- sort: VuuSort;
37
- table: VuuTable;
38
- title?: string;
39
- viewport: string;
40
- visualLink?: LinkDescriptorWithLabel;
41
- }
42
- export type VuuUIMessageInConnected = {
43
- type: "connected";
44
- };
45
- export type VuuUIMessageInWorkerReady = {
46
- type: "ready";
47
- };
48
- export interface ViewportMessageIn {
49
- clientViewportId: string;
50
- }
51
- export interface VuuUIMessageInRPC {
52
- method: string;
53
- result: unknown;
54
- requestId: string;
55
- type: "RPC_RESP";
56
- }
57
- export interface VuuUIMessageInRPCEditReject {
58
- error: string;
59
- requestId?: string;
60
- type: "VP_EDIT_RPC_REJECT";
61
- }
62
- export interface VuuUIMessageInRPCEditResponse {
63
- action: unknown;
64
- requestId: string;
65
- rpcName: string;
66
- type: "VP_EDIT_RPC_RESPONSE";
67
- }
68
- export declare const messageHasResult: (msg: object) => msg is VuuUIMessageInRPC;
69
- export declare const isTableSchema: (message: VuuUIMessageIn) => message is VuuUIMessageInTableMeta;
70
- export interface VuuUIMessageInTableList {
71
- requestId: string;
72
- type: "TABLE_LIST_RESP";
73
- tables: VuuTable[];
74
- }
75
- export interface VuuUIMessageInTableMeta {
76
- requestId: string;
77
- tableSchema: TableSchema;
78
- type: "TABLE_META_RESP";
79
- }
80
- export interface MenuRpcResponse {
81
- action: MenuRpcAction;
82
- error?: string;
83
- requestId: string;
84
- rpcName?: string;
85
- tableAlreadyOpen?: boolean;
86
- type: "VIEW_PORT_MENU_RESP";
87
- }
88
- export interface ViewportRpcResponse {
89
- action: ServerToClientViewportRpcResponse["action"];
90
- requestId: string;
91
- rpcName?: string;
92
- type: "VIEW_PORT_RPC_RESPONSE";
93
- }
94
- export interface MenuRpcReject extends ViewportMessageIn {
95
- error?: string;
96
- requestId: string;
97
- rpcName?: string;
98
- type: "VIEW_PORT_MENU_REJ";
99
- }
100
- export interface VuuUIMessageInMenuRej {
101
- error: string;
102
- requestId: string;
103
- rpcName: string;
104
- type: "VIEW_PORT_MENU_REJ";
105
- }
106
- export type VuuUIMessageIn = VuuUIMessageInConnected | VuuUIMessageInWorkerReady | VuuUIMessageInRPC | ViewportRpcResponse | MenuRpcResponse | MenuRpcReject | VuuUIMessageInTableList | VuuUIMessageInTableMeta | VuuUIMessageInRPCEditReject | VuuUIMessageInRPCEditResponse;
107
- export declare const isErrorResponse: (response?: RpcResponse) => response is VuuUIMessageInRPCEditReject;
108
- export declare const hasAction: (response?: RpcResponse) => response is MenuRpcResponse | VuuUIMessageInRPCEditResponse;
109
- export interface VuuUIMessageOutConnect {
110
- protocol: WebSocketProtocol;
111
- type: "connect";
112
- token: string;
113
- url: string;
114
- username?: string;
115
- retryLimitDisconnect?: number;
116
- retryLimitStartup?: number;
117
- }
118
- export interface VuuUIMessageOutSubscribe extends ServerProxySubscribeMessage {
119
- type: "subscribe";
120
- }
121
- export interface VuuUIMessageOutUnsubscribe {
122
- type: "unsubscribe";
123
- viewport: string;
124
- }
125
- export interface VuuUIMessageOutSuspend {
126
- type: "suspend";
127
- viewport: string;
128
- }
129
- export interface VuuUIMessageOutResume {
130
- type: "resume";
131
- viewport: string;
132
- }
133
- export interface ViewportMessageOut {
134
- viewport: string;
135
- }
136
- export interface RequestMessage {
137
- requestId: string;
138
- }
139
- export interface VuuUIMessageOutColumns extends ViewportMessageOut {
140
- type: "setColumns";
141
- columns: string[];
142
- }
143
- export interface VuuUIMessageOutViewRange extends ViewportMessageOut {
144
- type: "setViewRange";
145
- range: {
146
- from: number;
147
- to: number;
148
- };
149
- }
150
- export interface VuuUIMessageOutAggregate extends ViewportMessageOut {
151
- aggregations: VuuAggregation[];
152
- type: "aggregate";
153
- }
154
- export interface VuuUIMessageOutCloseTreeNode extends ViewportMessageOut {
155
- key: string;
156
- type: "closeTreeNode";
157
- }
158
- export interface VuuUIMessageOutCreateLink extends ViewportMessageOut {
159
- childColumnName: string;
160
- parentColumnName: string;
161
- parentClientVpId: string;
162
- type: "createLink";
163
- }
164
- export interface VuuUIMessageOutRemoveLink extends ViewportMessageOut {
165
- type: "removeLink";
166
- }
167
- export interface VuuUIMessageOutSetTitle extends ViewportMessageOut {
168
- title: string;
169
- type: "setTitle";
170
- }
171
- export interface VuuUIMessageOutDisable extends ViewportMessageOut {
172
- type: "disable";
173
- }
174
- export interface VuuUIMessageOutEnable extends ViewportMessageOut {
175
- type: "enable";
176
- }
177
- export interface VuuUIMessageOutOpenTreeNode extends ViewportMessageOut {
178
- key: string;
179
- type: "openTreeNode";
180
- }
181
- export interface VuuUIMessageOutResume extends ViewportMessageOut {
182
- type: "resume";
183
- }
184
- export interface VuuUIMessageOutSelect extends ViewportMessageOut {
185
- selected: Selection;
186
- type: "select";
187
- }
188
- export interface VuuUIMessageOutSelectAll extends ViewportMessageOut {
189
- type: "selectAll";
190
- }
191
- export interface VuuUIMessageOutSelectNone extends ViewportMessageOut {
192
- type: "selectNone";
193
- }
194
- export interface VuuUIMessageOutSort extends ViewportMessageOut {
195
- sort: VuuSort;
196
- type: "sort";
197
- }
198
- export interface VuuUIMessageOutSuspend extends ViewportMessageOut {
199
- type: "suspend";
200
- }
201
- export interface VuuUIMessageOutFilter extends ViewportMessageOut {
202
- filter: DataSourceFilter;
203
- type: "filter";
204
- }
205
- export interface VuuUIMessageOutGroupby extends ViewportMessageOut {
206
- groupBy: VuuGroupBy;
207
- type: "groupBy";
208
- }
209
- export interface VuuUIMessageOutConfig extends ViewportMessageOut {
210
- config: WithFullConfig;
211
- type: "config";
212
- }
213
- export type VuuUIMessageOutViewport = VuuUIMessageOutAggregate | VuuUIMessageOutCloseTreeNode | VuuUIMessageOutColumns | VuuUIMessageOutConfig | VuuUIMessageOutCreateLink | VuuUIMessageOutFilter | VuuUIMessageOutDisable | VuuUIMessageOutEnable | VuuUIMessageOutGroupby | VuuUIMessageOutOpenTreeNode | VuuUIMessageOutRemoveLink | VuuUIMessageOutResume | VuuUIMessageOutSelect | VuuUIMessageOutSelectAll | VuuUIMessageOutSelectNone | VuuUIMessageOutSetTitle | VuuUIMessageOutSuspend | VuuUIMessageOutSort | VuuUIMessageOutViewRange;
214
- export declare const isViewporttMessage: (msg: object) => msg is VuuUIMessageOutViewport;
215
- export interface TypeAheadRpcRequest {
216
- method: TypeAheadMethod;
217
- params: [VuuTable, ...string[]];
218
- type: "RPC_CALL";
219
- }
220
- export type VuuUIMessageOut = VuuUIMessageOutConnect | VuuUIMessageOutSubscribe | VuuUIMessageOutUnsubscribe | VuuUIMessageOutViewport | WithRequestId<ClientToServerTableList> | WithRequestId<ClientToServerTableMeta>;
221
- export declare const isSessionTableActionMessage: (messageBody: ServerToClientBody) => messageBody is ServerToClientMenuSessionTableAction;
222
- export declare const isSessionTable: (table?: unknown) => boolean;
223
- export declare const isVisualLinksAction: (action: GridAction) => action is DataSourceVisualLinksMessage;
224
- export declare const isVisualLinkCreatedAction: (action: GridAction) => action is DataSourceVisualLinkCreatedMessage;
225
- export declare const isVisualLinkRemovedAction: (action: GridAction) => action is DataSourceVisualLinkRemovedMessage;
226
- export declare const isViewportMenusAction: (action: GridAction) => action is DataSourceMenusMessage;
227
- export declare const isVuuFeatureAction: (action: GridAction) => action is VuuFeatureMessage;
228
- export declare const isVuuFeatureInvocation: (action: GridAction) => action is VuuFeatureInvocationMessage;
@@ -1,25 +0,0 @@
1
- import { ServerToClientMessage, ClientToServerMessage } from "@vuu-ui/vuu-protocol-types";
2
- import { Connection } from "./connectionTypes";
3
- import { ConnectionQualityMetrics, ConnectionStatusMessage } from "./vuuUIMessageTypes";
4
- export type ConnectionMessage = ServerToClientMessage | ConnectionStatusMessage | ConnectionQualityMetrics;
5
- export type ConnectionCallback = (msg: ConnectionMessage) => void;
6
- export type WebSocketProtocol = string | string[] | undefined;
7
- declare const setWebsocket: unique symbol;
8
- declare const connectionCallback: unique symbol;
9
- export declare function connect(connectionString: string, protocol: WebSocketProtocol, callback: ConnectionCallback, retryLimitDisconnect?: number, retryLimitStartup?: number): Promise<Connection>;
10
- export declare class WebsocketConnection implements Connection<ClientToServerMessage> {
11
- [connectionCallback]: ConnectionCallback;
12
- close: () => void;
13
- requiresLogin: boolean;
14
- send: (msg: ClientToServerMessage) => void;
15
- status: "closed" | "ready" | "connection-open-awaiting-session" | "connected" | "reconnected";
16
- protocol: WebSocketProtocol;
17
- url: string;
18
- messagesCount: number;
19
- private connectionMetricsInterval;
20
- constructor(ws: WebSocket, url: string, protocol: WebSocketProtocol, callback: ConnectionCallback);
21
- reconnect(): void;
22
- [setWebsocket](ws: WebSocket): void;
23
- handleWebsocketMessage: (evt: MessageEvent) => void;
24
- }
25
- export {};