@vuu-ui/vuu-data-test 0.8.19 → 0.8.20-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.
package/esm/index.js CHANGED
@@ -1,2 +1,2400 @@
1
- var ct=Object.create;var fe=Object.defineProperty;var lt=Object.getOwnPropertyDescriptor;var pt=Object.getOwnPropertyNames;var mt=Object.getPrototypeOf,dt=Object.prototype.hasOwnProperty;var D=(t,r)=>()=>(r||t((r={exports:{}}).exports,r),r.exports);var Ct=(t,r,e,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of pt(r))!dt.call(t,o)&&o!==e&&fe(t,o,{get:()=>r[o],enumerable:!(n=lt(r,o))||n.enumerable});return t};var Tt=(t,r,e)=>(e=t!=null?ct(mt(t)):{},Ct(r||!t||!t.__esModule?fe(e,"default",{value:t,enumerable:!0}):e,t));var he=(t,r,e)=>{if(!r.has(t))throw TypeError("Cannot "+e)};var u=(t,r,e)=>(he(t,r,"read from private field"),e?e.call(t):r.get(t)),A=(t,r,e)=>{if(r.has(t))throw TypeError("Cannot add the same private member more than once");r instanceof WeakSet?r.add(t):r.set(t,e)},E=(t,r,e,n)=>(he(t,r,"write to private field"),n?n.call(t,e):r.set(t,e),e);var xe=D((xn,Jt)=>{Jt.exports=["AD","AE","AF","AG","AI","AL","AM","AO","AQ","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TC","TD","TF","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","YE","YT","ZA","ZM","ZW"]});var He=D(q=>{"use strict";Object.defineProperty(q,"__esModule",{value:!0});q.convertStringToBaseTenNumber=void 0;var zt=function(t){return parseInt(t,10)};q.convertStringToBaseTenNumber=zt});var Ge=D(Q=>{"use strict";Object.defineProperty(Q,"__esModule",{value:!0});Q.isOdd=void 0;var Zt=function(t){return t%2===1};Q.isOdd=Zt});var we=D(ee=>{"use strict";Object.defineProperty(ee,"__esModule",{value:!0});ee.generateCusipCheckCode=void 0;var jt=He(),qt=Ge(),Qt=function(t){for(var r=t.length,e,n=0,o,a=0;a<r;a++){e=t[a];var s=(0,jt.convertStringToBaseTenNumber)(e),i=isNaN(s)?e.charCodeAt(0)-65+10:e;(0,qt.isOdd)(a)&&(i=i*2),n=n+Math.floor(i/10)+i%10}return o=(10-n%10)%10,o};ee.generateCusipCheckCode=Qt});var Oe=D(te=>{"use strict";Object.defineProperty(te,"__esModule",{value:!0});te.alphabet=void 0;te.alphabet=["A","B","C","D","E","F","G","H","J","K","L","M","N","P","Q","R","S","T","U","V","W","X","Y","Z"]});var Ke=D(re=>{"use strict";Object.defineProperty(re,"__esModule",{value:!0});re.baseTenNumbers=void 0;re.baseTenNumbers=[0,1,2,3,4,5,6,7,8,9]});var _e=D(x=>{"use strict";var Ve=x&&x.__read||function(t,r){var e=typeof Symbol=="function"&&t[Symbol.iterator];if(!e)return t;var n=e.call(t),o,a=[],s;try{for(;(r===void 0||r-- >0)&&!(o=n.next()).done;)a.push(o.value)}catch(i){s={error:i}}finally{try{o&&!o.done&&(e=n.return)&&e.call(n)}finally{if(s)throw s.error}}return a},Ue=x&&x.__spreadArray||function(t,r,e){if(e||arguments.length===2)for(var n=0,o=r.length,a;n<o;n++)(a||!(n in r))&&(a||(a=Array.prototype.slice.call(r,0,n)),a[n]=r[n]);return t.concat(a||Array.prototype.slice.call(r))};Object.defineProperty(x,"__esModule",{value:!0});x.alphanumeric=void 0;var er=Oe(),tr=Ke();x.alphanumeric=Ue(Ue([],Ve(er.alphabet),!1),Ve(tr.baseTenNumbers),!1)});var We=D(ne=>{"use strict";Object.defineProperty(ne,"__esModule",{value:!0});ne.generateRandomAlphanumeric=void 0;var Fe=_e(),rr=function(){return Fe.alphanumeric[Math.floor(Math.random()*Fe.alphanumeric.length)]};ne.generateRandomAlphanumeric=rr});var Xe=D(oe=>{"use strict";Object.defineProperty(oe,"__esModule",{value:!0});oe.generateRandomStringOfAlphanumericChars=void 0;var nr=We(),or=function(){for(var t="",r=0;r<2;r++)t=t+(0,nr.generateRandomAlphanumeric)();return t};oe.generateRandomStringOfAlphanumericChars=or});var Ye=D(ae=>{"use strict";Object.defineProperty(ae,"__esModule",{value:!0});ae.generateRandomBaseTenNumber=void 0;var ar=function(){return Math.floor(Math.random()*10)};ae.generateRandomBaseTenNumber=ar});var $e=D(se=>{"use strict";Object.defineProperty(se,"__esModule",{value:!0});se.generateRandomStringOfBaseTenChars=void 0;var sr=Ye(),ir=function(){for(var t="",r=0;r<6;r++)t=t+(0,sr.generateRandomBaseTenNumber)();return t};se.generateRandomStringOfBaseTenChars=ir});var Je=D(ie=>{"use strict";Object.defineProperty(ie,"__esModule",{value:!0});ie.generateCusipWithoutCheckCode=void 0;var ur=Xe(),cr=$e(),lr=function(){var t=(0,cr.generateRandomStringOfBaseTenChars)(),r=(0,ur.generateRandomStringOfAlphanumericChars)();return t+r};ie.generateCusipWithoutCheckCode=lr});var ze=D(ue=>{"use strict";Object.defineProperty(ue,"__esModule",{value:!0});ue.generateCusip=void 0;var pr=we(),mr=Je(),dr=function(){var t=(0,mr.generateCusipWithoutCheckCode)(),r=(0,pr.generateCusipCheckCode)(t);return t+r};ue.generateCusip=dr});var Ze=D(ce=>{"use strict";Object.defineProperty(ce,"__esModule",{value:!0});ce.generateCusip=void 0;var Cr=ze();Object.defineProperty(ce,"generateCusip",{enumerable:!0,get:function(){return Cr.generateCusip}})});var Qe=D(qe=>{"use-strict";var je=xe(),Tr=Ze().generateCusip(),gr=t=>{let r=je[Math.floor(Math.random()*je.length)];return r+t+yr(r+t+"0")},yr=t=>{if(t.length!=12)return!1;for(var r=[],e=t.length-2;e>=0;e--){let i=t.charAt(e);if(isNaN(i)){var n=t.charCodeAt(e)-55;r.push(n%10),n>9&&r.push(Math.floor(n/10))}else r.push(Number(i))}for(var o=0,a=r.length,e=0;e<a;e++)if(e%2==0){var s=r[e]*2;o+=Math.floor(s/10),o+=s%10}else o+=r[e];return(10-o%10)%10};qe.isinGenerator=function(){return gr(Tr)}});var R={algoType:{columns:[{name:"algoType",serverDataType:"string"},{name:"id",serverDataType:"int"}],key:"id",table:{module:"BASKET",table:"algoType"}},basket:{columns:[{name:"id",serverDataType:"string"},{name:"name",serverDataType:"string"},{name:"notionalValue",serverDataType:"double"},{name:"notionalValueUsd",serverDataType:"double"}],key:"id",table:{module:"BASKET",table:"basket"}},basketConstituent:{columns:[{name:"basketId",serverDataType:"string"},{name:"change",serverDataType:"string"},{name:"description",serverDataType:"string"},{name:"lastTrade",serverDataType:"string"},{name:"ric",serverDataType:"string"},{name:"ricBasketId",serverDataType:"string"},{name:"side",serverDataType:"string"},{name:"volume",serverDataType:"string"},{name:"weighting",serverDataType:"double"}],key:"ricBasketId",table:{module:"BASKET",table:"basketConstituent"}},basketTrading:{columns:[{name:"basketId",serverDataType:"string"},{name:"basketName",serverDataType:"string"},{name:"filledPct",serverDataType:"double"},{name:"fxRateToUsd",serverDataType:"double"},{name:"instanceId",serverDataType:"string"},{name:"side",serverDataType:"string"},{name:"status",serverDataType:"string"},{name:"totalNotional",serverDataType:"double"},{name:"totalNotionalUsd",serverDataType:"double"},{name:"units",serverDataType:"int"}],key:"instanceId",table:{module:"BASKET",table:"basketTrading"}},basketTradingConstituent:{columns:[{name:"algo",serverDataType:"string"},{name:"algoParams",serverDataType:"string"},{name:"basketId",serverDataType:"string"},{name:"description",serverDataType:"string"},{name:"instanceId",serverDataType:"string"},{name:"instanceIdRic",serverDataType:"string"},{name:"limitPrice",serverDataType:"double"},{name:"notionalLocal",serverDataType:"double"},{name:"notionalUsd",serverDataType:"double"},{name:"pctFilled",serverDataType:"double"},{name:"priceSpread",serverDataType:"int"},{name:"priceStrategyId",serverDataType:"int"},{name:"quantity",serverDataType:"long"},{name:"ric",serverDataType:"string"},{name:"side",serverDataType:"string"},{name:"status",serverDataType:"string"},{name:"venue",serverDataType:"string"},{name:"weighting",serverDataType:"double"}],key:"instanceIdRic",table:{module:"BASKET",table:"basketTradingConstituent"}},basketTradingConstituentJoin:{columns:[{name:"algo",serverDataType:"string"},{name:"algoParams",serverDataType:"string"},{name:"ask",serverDataType:"double"},{name:"askSize",serverDataType:"double"},{name:"basketId",serverDataType:"string"},{name:"bid",serverDataType:"double"},{name:"bidSize",serverDataType:"double"},{name:"close",serverDataType:"double"},{name:"description",serverDataType:"string"},{name:"instanceId",serverDataType:"string"},{name:"instanceIdRic",serverDataType:"string"},{name:"last",serverDataType:"double"},{name:"limitPrice",serverDataType:"double"},{name:"notionalLocal",serverDataType:"double"},{name:"notionalUsd",serverDataType:"double"},{name:"open",serverDataType:"double"},{name:"pctFilled",serverDataType:"double"},{name:"phase",serverDataType:"string"},{name:"priceSpread",serverDataType:"int"},{name:"priceStrategyId",serverDataType:"int"},{name:"quantity",serverDataType:"long"},{name:"ric",serverDataType:"string"},{name:"scenario",serverDataType:"string"},{name:"side",serverDataType:"string"},{name:"status",serverDataType:"string"},{name:"venue",serverDataType:"string"},{name:"weighting",serverDataType:"double"}],key:"instanceIdRic",table:{module:"BASKET",table:"basketTradingConstituentJoin"}},priceStrategyType:{columns:[{name:"priceStrategy",serverDataType:"string"},{name:"id",serverDataType:"int"}],key:"",table:{module:"BASKET",table:"priceStrategyType"}}};var p={instruments:{columns:[{name:"bbg",serverDataType:"string"},{name:"currency",serverDataType:"string"},{name:"description",serverDataType:"string"},{name:"exchange",serverDataType:"string"},{name:"isin",serverDataType:"string"},{name:"lotSize",serverDataType:"int"},{name:"ric",serverDataType:"string"}],key:"ric",table:{module:"SIMUL",table:"instruments"}},instrumentsExtended:{columns:[{name:"bbg",serverDataType:"string"},{name:"currency",serverDataType:"string"},{name:"description",serverDataType:"string"},{name:"exchange",serverDataType:"string"},{name:"isin",serverDataType:"string"},{name:"lotSize",serverDataType:"int"},{name:"ric",serverDataType:"string"},{name:"supported",serverDataType:"boolean"},{name:"wishlist",serverDataType:"boolean"},{name:"lastUpdated",serverDataType:"long"}],key:"ric",table:{module:"SIMUL",table:"instruments"}},instrumentPrices:{columns:[{name:"ask",serverDataType:"double"},{name:"askSize",serverDataType:"double"},{name:"bbg",serverDataType:"string"},{name:"bid",serverDataType:"double"},{name:"bidSize",serverDataType:"double"},{name:"close",serverDataType:"double"},{name:"currency",serverDataType:"string"},{name:"description",serverDataType:"string"},{name:"exchange",serverDataType:"string"},{name:"isin",serverDataType:"string"},{name:"last",serverDataType:"double"},{name:"lotSize",serverDataType:"int"},{name:"open",serverDataType:"double"},{name:"phase",serverDataType:"string"},{name:"ric",serverDataType:"string"},{name:"scenario",serverDataType:"string"}],key:"ric",table:{module:"SIMUL",table:"instrumentPrices"}},orders:{columns:[{name:"ccy",serverDataType:"string"},{name:"created",serverDataType:"long"},{name:"filledQuantity",serverDataType:"double"},{name:"lastUpdate",serverDataType:"long"},{name:"orderId",serverDataType:"string"},{name:"quantity",serverDataType:"double"},{name:"ric",serverDataType:"string"},{name:"side",serverDataType:"string"},{name:"trader",serverDataType:"string"}],key:"orderId",table:{module:"SIMUL",table:"orders"}},childOrders:{columns:[{name:"account",serverDataType:"string"},{name:"averagePrice",serverDataType:"double"},{name:"ccy",serverDataType:"string"},{name:"exchange",serverDataType:"string"},{name:"filledQty",serverDataType:"double"},{name:"id",serverDataType:"string"},{name:"idAsInt",serverDataType:"int"},{name:"lastUpdate",serverDataType:"long"},{name:"openQty",serverDataType:"double"},{name:"parentOrderId",serverDataType:"string"},{name:"price",serverDataType:"double"},{name:"quantity",serverDataType:"double"},{name:"ric",serverDataType:"string"},{name:"side",serverDataType:"string"},{name:"status",serverDataType:"string"},{name:"strategy",serverDataType:"string"},{name:"volLimit",serverDataType:"int"}],key:"id",table:{module:"SIMUL",table:"childOrders"}},parentOrders:{columns:[{name:"account",serverDataType:"string"},{name:"algo",serverDataType:"string"},{name:"averagePrice",serverDataType:"double"},{name:"ccy",serverDataType:"string"},{name:"childCount",serverDataType:"int"},{name:"exchange",serverDataType:"string"},{name:"filledQty",serverDataType:"double"},{name:"id",serverDataType:"string"},{name:"idAsInt",serverDataType:"int"},{name:"lastUpdate",serverDataType:"long"},{name:"openQty",serverDataType:"double"},{name:"price",serverDataType:"double"},{name:"quantity",serverDataType:"double"},{name:"ric",serverDataType:"string"},{name:"side",serverDataType:"string"},{name:"status",serverDataType:"string"},{name:"volLimit",serverDataType:"int"}],key:"id",table:{module:"SIMUL",table:"parentOrders"}},prices:{columns:[{name:"ask",serverDataType:"double"},{name:"askSize",serverDataType:"double"},{name:"bid",serverDataType:"double"},{name:"bidSize",serverDataType:"double"},{name:"close",serverDataType:"double"},{name:"last",serverDataType:"double"},{name:"open",serverDataType:"double"},{name:"phase",serverDataType:"string"},{name:"ric",serverDataType:"string"},{name:"scenario",serverDataType:"string"}],key:"ric",table:{module:"SIMUL",table:"prices"}}};var gt={...R,...p},De={...R,...p},Kr=()=>gt,Vr=t=>{if(De[t])return De[t];throw Error(`getSchema no schema for table ${t}`)};import{ArrayDataSource as ht}from"@vuu-ui/vuu-data-local";var le={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:_r,IS_LEAF:Fr}=le;function be(t){return Array.isArray(t)}function yt(t){return!Array.isArray(t)}var h,Y=class{constructor(){A(this,h,new Map)}addListener(r,e){let n=u(this,h).get(r);n?be(n)?n.push(e):yt(n)&&u(this,h).set(r,[n,e]):u(this,h).set(r,e)}removeListener(r,e){if(!u(this,h).has(r))return;let n=u(this,h).get(r),o=-1;if(n===e)u(this,h).delete(r);else if(Array.isArray(n)){for(let a=length;a-- >0;)if(n[a]===e){o=a;break}if(o<0)return;n.length===1?(n.length=0,u(this,h).delete(r)):n.splice(o,1)}}removeAllListeners(r){r&&u(this,h).has(r)?u(this,h).delete(r):r===void 0&&u(this,h).clear()}emit(r,...e){if(u(this,h)){let n=u(this,h).get(r);n&&this.invokeHandler(n,e)}}once(r,e){let n=(...o)=>{this.removeListener(r,n),e(...o)};this.on(r,n)}on(r,e){this.addListener(r,e)}hasListener(r,e){let n=u(this,h).get(r);return Array.isArray(n)?n.includes(e):n===e}invokeHandler(r,e){if(be(r))r.slice().forEach(n=>this.invokeHandler(n,e));else switch(e.length){case 0:r();break;case 1:r(e[0]);break;case 2:r(e[0],e[1]);break;default:r.call(null,...e)}}};h=new WeakMap;var Se=new Map,ft=(t,r,e="")=>{let n,o=Se.get(t);if(o&&o.has(r))n=o.get(r);else{let{data:a,map:s}=t,i=s[r];n=[];let c=new Set;for(let C of a){let T=C[i];c.has(T)||(c.add(T),n.push(T))}n.sort(),o?o.set(r,n):Se.set(t,new Map([[r,n]]))}return e?n.filter(a=>a.toString().startsWith(e)):n},$=(t,r,e)=>new Promise(n=>{let o=ft(t,r,e),a=o.length>20?o==null?void 0:o.slice(0,20).map(s=>s.toString()):o.map(s=>s.toString());setTimeout(()=>n(a),100)});var J,w,H,O=class extends ht{constructor({data:e,menuRpcServices:n,rpcServices:o,table:a,menu:s,...i}){var c;if(e===void 0&&a===void 0)throw Error("TickingArrayDataSource must be constructed with data");super({...i,data:(c=e!=null?e:a==null?void 0:a.data)!=null?c:[]});A(this,J,void 0);A(this,w,void 0);A(this,H,void 0);this._menu=s,E(this,J,n),E(this,w,o),E(this,H,a),a&&(a.on("insert",this.insert),a.on("update",this.updateRow))}async subscribe(e,n){return super.subscribe(e,n)}set range(e){super.range=e}get range(){return super.range}getSelectedRows(){return this.selectedRows.reduce((e,n)=>{if(Array.isArray(n))n.forEach(o=>{let a=this.data[o];a&&e.push(a)});else{let o=this.data[n];o&&e.push(o)}return e},[])}applyEdit(e,n,o){var s;let a=e[le.KEY];return(s=u(this,H))==null||s.update(a,n,o),Promise.resolve(!0)}async rpcCall(e){var o;let n=(o=u(this,w))==null?void 0:o.find(a=>a.rpcName===e.rpcName);if(n)return n.service({...e});console.log(`no implementation for PRC service ${e.rpcName}`)}async menuRpcCall(e){var o;let n=(o=u(this,w))==null?void 0:o.find(a=>a.rpcName===e.rpcName);if(n)switch(e.type){case"VIEW_PORT_MENUS_SELECT_RPC":{let a=this.getSelectedRows();return n.service({...e,selectedRows:a})}default:}return super.menuRpcCall(e)}getTypeaheadSuggestions(e,n){if(u(this,H))return $(u(this,H),e,n);throw Error("cannot call getTypeaheadSuggestions on TickingDataSOurce if table has not been provided")}};J=new WeakMap,w=new WeakMap,H=new WeakMap;var en=t=>["Row No"].concat(Array(t).fill("").map((r,e)=>`Column ${e+1}`)),Dt=t=>r=>[`row ${r+1}`].concat(Array(t.length).fill(!0).map((e,n)=>`value ${n+1} @ ${r+1}`)),bt=(t,r={})=>{if(typeof t=="number")return[{name:"row number",width:150}].concat(Array(t).fill(!0).map((e,n)=>{let o=`column ${n+1}`;return{name:o,width:100,...r[o]}}));throw Error("DefaultColumnGenerator must be passed columns (number)")},pe={ColumnGenerator:bt,RowGenerator:Dt},tn=t=>{var e,n,o;let r=(e=t==null?void 0:t.table)!=null?e:"";switch(t==null?void 0:t.module){case"SIMUL":{let{ColumnGenerator:a,RowGenerator:s,createUpdateGenerator:i}=(n=simulDataGenerators[r])!=null?n:pe;return[a,s,i]}case"BASKET":{let{ColumnGenerator:a,RowGenerator:s,createUpdateGenerator:i}=(o=basketDataGenerators[r])!=null?o:pe;return[a,s,i]}case void 0:{let{ColumnGenerator:a,RowGenerator:s}=pe;return[a,s]}default:throw Error(`vuu-row-gererator table ${t==null?void 0:t.table} was requested but no generator is registered`)}},rn=(t,r,e,n)=>{let o=r(n),a=e(o.map(i=>i.name)),s=[];for(let i=0;i<t;i++){let c=a(i);if(c)s[i]=c;else break}return s};var b,K,B,V,W,m=class extends Y{constructor(e,n,o,a){super();A(this,b,void 0);A(this,K,void 0);A(this,B,void 0);A(this,V,new Map);A(this,W,void 0);E(this,b,n),E(this,K,o),E(this,W,e),E(this,B,o[e.key]),this.buildIndex(),a==null||a.setTable(this),a==null||a.setRange({from:0,to:100})}buildIndex(){for(let e=0;e<u(this,b).length;e++){let n=u(this,b)[e][u(this,B)];u(this,V).set(n,e)}}get data(){return u(this,b)}get map(){return u(this,K)}get schema(){return u(this,W)}insert(e){let n=u(this,b).length;u(this,b).push(e);let o=e[u(this,B)];u(this,V).set(o,n),this.emit("insert",e)}findByKey(e){var o;let n=(o=u(this,V).get(e))!=null?o:-1;return u(this,b)[n]}update(e,n,o){let a=u(this,b).findIndex(i=>i[u(this,B)]===e),s=u(this,K)[n];if(a!==-1){let c=u(this,b)[a].slice();c[s]=o,u(this,b)[a]=c,this.emit("update",c,n)}}updateRow(e){let n=e[u(this,B)],o=u(this,b).findIndex(a=>a[u(this,B)]===n);o!==-1&&(u(this,b)[o]=e,this.emit("update",e))}};b=new WeakMap,K=new WeakMap,B=new WeakMap,V=new WeakMap,W=new WeakMap;var S=t=>Object.values(t.columns).reduce((r,e,n)=>(r[e.name]=n,r),{}),St=(t,{columns:r,table:e},{columns:n,table:o})=>{let a=r.find(i=>i.name===t),s=n.find(i=>i.name===t);if(a&&s){if(a.serverDataType===s.serverDataType)return a.serverDataType;throw Error(`both tables ${e.table} and ${o.table} implement column ${t}, but with types differ`)}else{if(a)return a.serverDataType;if(s)return s.serverDataType;throw Error("WTF how is this possible")}},z=(t,r,e,n)=>{let{map:o,schema:a}=r,{map:s,schema:i}=e,c=o[n],C=s[n],T=new Set([...a.columns,...i.columns].map(d=>d.name).sort()),g={key:n,table:t,columns:Array.from(T).map(d=>({name:d,serverDataType:St(d,a,i)}))},P=[],y=S(g);for(let d of r.data){let I=e.findByKey(String(d[c]));if(I){let M=[];for(let f of r.schema.columns){let v=d[o[f.name]];M[y[f.name]]=v}for(let f of e.schema.columns){let v=I[s[f.name]];M[y[f.name]]=v}P.push(M)}}let L=new m(g,P,y);return r.on("insert",d=>{let I=e.findByKey(String(d[c]));if(I){let M=[];for(let f of r.schema.columns){let v=d[o[f.name]];M[y[f.name]]=v}for(let f of e.schema.columns){let v=I[s[f.name]];M[y[f.name]]=v}L.insert(M)}}),e.on("update",d=>{let I=d[C],M=L.findByKey(I);if(M){let f=M.slice();for(let{name:v}of e.schema.columns)d[s[v]]!==f[y[v]]&&(f[y[v]]=d[s[v]]);L.updateRow(f)}}),L};function l(t,r){return t=Math.ceil(t),r=Math.floor(r),Math.floor(Math.random()*(r-t+1))+t}var Z=(t,r)=>t+(r-t)*Math.random(),Me=(t,r)=>{let e=r(0,1e3),n=r(e-t,e-1),o=r(e+1,e+t),a=n<0?e:n,s=Math.round(a*100)/100,i=Math.round(o*100)/100;return[s,i]},Mt=(t,r,e,n)=>{let o=r-t;return Math.min(r+e*o,o/2+t+n)},vt=(t,r,e,n)=>Math.max(t+1,(r-t)/2+t),Lt=(t,r,e,n)=>{let o=Math.min(r-1,(r-t)/2+t);return o<1?t+1:o},Rt=(t,r,e,n)=>{let o=r-t,a=o/2+t,s=Math.max(t-Math.min(e*o,10),a-n);return s<0?t:s},ve=(t,r,e,n,o)=>{let a=r;Math.abs(t-r)<=1&&(a=r+1);let s=Rt(t,a,e,n),i=Lt(t,a,e,n),c=vt(t,a,e,n),C=Mt(t,a,e,n),T=Math.round(o(s,i)*100)/100,g=Math.round(o(c,C)*100)/100;return[T,g]};var It=t=>{let r=l(0,100)/1e3,e=l(0,10)>=5?1:-1;return t+t*r*e},U=class{constructor(r){this.updating=!1;this.update=()=>{var r;if(this.range&&this.table){let e=(r=this.table)==null?void 0:r.data,{bid:n,ask:o,last:a,...s}=this.tickingColumns;if(e&&(e==null?void 0:e.length)>0){let i=Math.min(this.range.to,e.length);for(let c=this.range.from;c<i;c++){let C=0;if(l(0,10)<2){let g=this.table.data[c],P=e[c];if(n!==void 0&&o!==void 0){let{[n]:y,[o]:L}=P,[d,I]=ve(y,L,10,5,Z);if(g[o]=I,g[n]=d,a!==void 0){let M=Math.round((L+(I-L)/2)*100)/100;g[a]=M}}for(let y of Object.values(s))if(l(0,10)<5){C+=1;let d=It(P[y]);this.table&&(g[y]=d)}this.table&&C>0&&this.table.updateRow(g)}}}}this.updating&&(this.timer=window.setTimeout(this.update,500))};this.tickingColumns=r}setRange(r){this.range=r,!this.updating&&this.table&&this.startUpdating()}setTable(r){this.table=r}startUpdating(){this.updating=!0,this.update()}stopUpdating(){this.updating=!1,this.timer&&(window.clearTimeout(this.timer),this.timer=void 0)}};var Le=[["AAL.L","Anglo American PLC","436.35 13:13","5.35 (1.24%)","5,799,089"],["ABF.L","Associated British Foods PLC","3,435.60 13:12","7.40 (0.21%)","86,808"],["ADM.L","Admiral Group PLC","1,627.00 13:13",""],["ADN.L","Aberdeen Asset Management PLC","334.00 13:13","2.50 (0.75%)","806,880"],["AHT.L","Ashtead Group PLC","1,027.00 13:13","6.00 (0.59%)","331,255"],["ANTO.L","Antofagasta PLC","484.10 13:13","11.70 (2.48%)","1,753,976"],["ARM.L","ARM Holdings PLC","1,058.00 13:13","3.00 (0.28%)","475,927"],["AV.L","Aviva PLC","493.97 13:13","2.23 (0.45%)","2,226,835"],["AZN.L","AstraZeneca PLC","4,399.50 13:13","2.50 (0.06%)","815,133"],["BA.L","BAE Systems PLC","478.10 13:13","4.30 (0.91%)","2,039,934"],["BAB.L","Babcock International Group PLC","988.00 13:13","9.50 (0.97%)","209,614"],["BARC.L","Barclays PLC","226.30 13:13","1.15 (0.51%)","6,575,664"],["BATS.L","British American Tobacco PLC","3,803.50 13:13","8.50 (0.22%)","465,110"],["BDEV.L","Barratt Developments PLC","576.00 13:13","0.50 (0.09%)","1,044,365"],["BG.L","BG Group PLC","1,013.50 13:13","5.50 (0.55%)","1,507,332"],["BKG.L","Berkeley Group Holdings (The) PLC","3,126.00 13:13","15.00 (0.48%)","95,071"],["BLND.L","British Land Co PLC","828.06 13:12","10.44 (1.25%)","1,802,548"],["BLT.L","BHP Billiton PLC","881.40 13:13","4.30 (0.49%)","4,947,287"],["BNZL.L","Bunzl PLC","1,875.40 13:05","4.60 (0.24%)","104,541"],["BP.L","BP PLC","381.50 13:13","2.95 (0.78%)","10,493,561"],["BRBY.L","Burberry Group PLC","1,269.00 13:13","7.00 (0.55%)","295,647"],["BT-A","L,BT Group PLC","489.20 13:13","3.70 (0.75%)","3,914,982"],["CCL.L","Carnival PLC","3,426.00 13:12","22.00 (0.64%)","86,257"],["CNA.L","Centrica PLC","212.80 13:13","0.60 (0.28%)","2,144,540"],["CPG.L","Compass Group PLC","1,054.00 13:08","5.00 (0.48%)","1,001,167"],["CPI.L","Capita PLC","1,235.00 13:11","1.00 (0.08%)","244,591"],["CRH.L","CRH PLC","1,783.20 13:12","17.80 (0.99%)","897,325"],["DC.L","DIXONS CARPHONE","462.10 13:11",""],["DGE.L","Diageo PLC","1,881.50 13:13","6.50 (0.34%)","756,906"],["DLG.L","Direct Line Insurance Group PLC","403.80 13:13","0.40 (0.10%)","1,095,340"],["EXPN.L","Experian PLC","1,191.00 13:12","2.00 (0.17%)","467,283"],["EZJ.L","easyJet PLC","1,682.00 13:12","28.00 (1.64%)","1,191,230"],["FRES.L","Fresnillo PLC","678.50 13:12","6.50 (0.97%)","381,871"],["GFS.L","G4S PLC","232.30 13:03","2.00 (0.85%)","1,096,551"],["GKN.L","GKN PLC","294.80 13:12","2.50 (0.86%)","792,247"],["GLEN.L","Glencore PLC","90.48 13:13","1.65 (1.86%)","41,631,528"],["GSK.L","GlaxoSmithKline PLC","1,345.00 13:13","0.50 (0.04%)","1,767,356"],["HIK.L","Hikma Pharmaceuticals PLC","2,010.00 13:04","57.00 (2.92%)","261,511"],["HL.L","Hargreaves Lansdown PLC","1,488.03 13:12","9.97 (0.67%)","372,261"],["HMSO.L","Hammerson PLC","597.50 13:11","3.50 (0.58%)","478,301"],["HSBA.L","HSBC Holdings PLC","519.70 13:13","0.50 (0.10%)","7,415,629"],["IAG.L","International Consolidated Airlines Group SA","575.40 13:12","16.10 (2.72%)","4,311,514"],["IHG.L","InterContinental Hotels Group PLC","2,481.00 13:12","19.00 (0.76%)","219,918"],["III.L","3i Group PLC","487.30 13:11","4.50 (0.92%)","189,987"],["IMT.L","Imperial Tobacco Group PLC","3,571.00 13:13","29.00 (0.81%)","926,816"],["INTU.L","intu properties PLC","319.90 13:09","4.60 (1.42%)","514,821"],["ISAT.L","Inmarsat PLC","1,054.44 13:13","3.44 (0.33%)","988,089"],["ITRK.L","Intertek Group PLC","2,643.00 13:14","3.00 (0.11%)","45,868"],["ITV.L","ITV PLC","267.30 13:14","2.60 (0.96%)","3,453,208"],["JMAT.L","Johnson Matthey PLC","2,445.00 13:14","29.00 (1.20%)","276,397"],["KGF.L","Kingfisher PLC","346.20 13:14","4.30 (1.23%)","1,021,408"],["LAND.L","Land Securities Group PLC","1,239.00 13:13","7.00 (0.56%)","384,973"],["LGEN.L","Legal & General Group PLC","266.00 13:14","1.60 (0.60%)","1,998,399"],["LLOY.L","Lloyds Banking Group PLC","73.86 13:14","0.02 (0.03%)","18,907,878"],["LSE.L","London Stock Exchange Group PLC","2,544.00 13:11","6.00 (0.24%)","129,657"],["MGGT.L","Meggitt PLC","386.00 13:15","3.20 (0.84%)","611,044"],["MKS.L","Marks & Spencer Group PLC","514.75 13:12","3.25 (0.63%)","920,128"],["MNDI.L","Mondi PLC","1,463.00 13:14","7.00 (0.48%)","383,546"],["MRW.L","Morrison (Wm) Supermarkets PLC","155.20 13:14",""],["NG.L","National Grid PLC","926.40 13:14","1.10 (0.12%)","1,659,592"],["NXT.L","Next PLC","7,765.00 13:11","95.00 (1.21%)","114,062"],["OML.L","Old Mutual PLC","198.50 13:14","0.40 (0.20%)","2,040,849"],["PRU.L","Prudential PLC","1,499.50 13:15","14.00 (0.93%)","580,870"],["PSON.L","Pearson PLC","794.00 13:09","5.00 (0.63%)","1,177,953"],["RB.L","Reckitt Benckiser Group PLC","6,293.00 13:14","34.00 (0.54%)","281,172"],["RBS.L","Royal Bank of Scotland Group PLC","313.40 13:14","2.40 (0.77%)","2,100,058"],["RDSA.L","Royal Dutch Shell PLC","1,636.00 13:14","18.00 (1.11%)","2,467,461"],["RDSB.L","Royal Dutch Shell PLC","1,652.00 13:15","14.50 (0.89%)","1,457,434"],["REL.L","Reed Elsevier PLC","1,170.00 13:14","0.00 (0.00%)","908,802"],["RIO.L","Rio Tinto PLC","2,235.00 13:15","21.00 (0.95%)","2,190,722"],["RMG.L","Royal Mail PLC","453.50 13:14","1.20 (0.26%)","995,316"],["RR.L","Rolls-Royce Group PLC","546.63 13:14","8.38 (1.51%)","2,792,915"],["RRS.L","Randgold Resources Ltd","3,929.00 13:14","0.00 (0.00%)","135,524"],["RSA.L","RSA Insurance Group PLC","437.10 13:14","0.10 (0.02%)","395,477"],["SAB.L","SABMiller PLC","4,011.00 13:15","1.00 (0.02%)","892,451"],["SBRY.L","Sainsbury (J) PLC","255.80 13:14","7.40 (2.98%)","2,395,670"],["SDR.L","Schroders PLC","2,930.00 13:09","12.00 (0.41%)","44,674"],["SGE.L","Sage Group (The) PLC","545.50 13:13","0.50 (0.09%)","539,717"],["SHP.L","Shire PLC","4,685.00 13:14","22.00 (0.47%)","221,318"],["SKY.L","SKY","1,095.00 13:12","4.00 (0.37%)","925,016"],["SL.L","Standard Life PLC","399.90 13:14","3.20 (0.79%)","861,636"],["SMIN.L","Smiths Group PLC","992.50 13:14","27.50 (2.70%)","640,309"],["SN.L","Smith & Nephew PLC","1,110.00 13:14","9.00 (0.82%)","480,018"],["SPD.L","Sports Direct International PLC","694.50 13:11","1.50 (0.22%)","157,981"],["SSE.L","SSE PLC","1,463.00 13:13","2.00 (0.14%)","562,454"],["STAN.L","Standard Chartered PLC","583.00 13:14","0.60 (0.10%)","2,018,697"],["STJ.L","St James's Place PLC","964.00 13:14","11.00 (1.13%)","418,480"],["SVT.L","Severn Trent PLC","2,199.00 13:12","1.00 (0.05%)","95,342"],["TPK.L","Travis Perkins PLC","1,945.00 13:13","4.00 (0.21%)","92,916"],["TSCO.L","Tesco PLC","171.54 13:14","2.54 (1.50%)","9,831,136"],["TUI.L","TUI AG","1,115.00 13:10","5.00 (0.45%)","458,970"],["TW.L","Taylor Wimpey PLC","183.90 13:15","1.10 (0.59%)","3,180,729"],["ULVR.L","Unilever PLC","2,791.00 13:14","29.00 (1.03%)","824,827"],["UU.L","United Utilities Group PLC","959.00 13:10","2.50 (0.26%)","436,911"],["VOD.L","Vodafone Group PLC","224.25 13:15","1.30 (0.58%)","17,572,036"],["WOS.L","Wolseley PLC","3,657.00 13:14","4.00 (0.11%)","179,536"],["WPP.L","WPP PLC","1,502.00 13:15","12.00 (0.79%)","857,887"],["WTB.L","Whitbread PLC","4,484.00 13:16","60.00 (1.32%)","141,036"]];var Re=[["Apple Inc","AAPL",11.007,174.94,.15,"(0.09%)"],["Microsoft Corp","MSFT",9.61,316.98,-.03,"(-0.01%)"],["Amazon.com Inc","AMZN",5.401,129.31,.19,"(0.14%)"],["NVIDIA Corp","NVDA",4.101,415.74,-.36,"(-0.09%)"],["Meta Platforms Inc","META",3.729,299.42,.34,"(0.11%)"],["Tesla Inc","TSLA",3.285,244.13,-.75,"(-0.31%)"],["Alphabet Inc","GOOGL",3.133,130.49,.24,"(0.18%)"],["Alphabet Inc","GOOG",3.085,131.49,.24,"(0.18%)"],["Broadcom Inc","AVGO",2.896,833.04,3.96,"(0.48%)"],["Costco Wholesale Corp","COST",2.137,557.85,-.74,"(-0.13%)"],["PepsiCo Inc","PEP",2.096,174.84,-.43,"(-0.25%)"],["Adobe Inc","ADBE",2.033,511.42,-1.48,"(-0.29%)"],["Cisco Systems Inc","CSCO",1.887,53.68,.11,"(0.20%)"],["Comcast Corp","CMCSA",1.633,45.3,-.01,"(-0.01%)"],["Netflix Inc","NFLX",1.478,379.89,.08,"(0.02%)"],["T-Mobile US Inc","TMUS",1.43,140.18,.83,"(0.60%)"],["Advanced Micro Devices Inc","AMD",1.348,96.09,-.11,"(-0.12%)"],["Texas Instruments Inc","TXN",1.264,161,.69,"(0.43%)"],["Intel Corp","INTC",1.26,34.19,.01,"(0.01%)"],["Amgen Inc","AMGN",1.251,271.18,3.48,"(1.30%)"],["Intuit Inc","INTU",1.226,509,.43,"(0.08%)"],["Honeywell International Inc","HON",1.103,188.67,-1.12,"(-0.59%)"],["QUALCOMM Inc","QCOM",1.046,107.53,-.16,"(-0.14%)"],["Applied Materials Inc","AMAT",.982,136.32,.15,"(0.11%)"],["Booking Holdings Inc","BKNG",.941,3,19.2,-43.3,"(-1.42%)"],["Starbucks Corp","SBUX",.926,93.8,.12,"(0.12%)"],["Intuitive Surgical Inc","ISRG",.867,288.5,.3,"(0.10%)"],["Automatic Data Processing Inc","ADP",.854,239.45,.1,"(0.04%)"],["Mondelez International Inc","MDLZ",.835,71.25,.82,"(1.16%)"],["Gilead Sciences Inc","GILD",.814,75.47,.46,"(0.61%)"],["Vertex Pharmaceuticals Inc","VRTX",.794,353.67,4.14,"(1.18%)"],["Regeneron Pharmaceuticals Inc","REGN",.763,828.09,3.25,"(0.39%)"],["Analog Devices Inc","ADI",.752,176.82,1.34,"(0.76%)"],["Lam Research Corp","LRCX",.702,620,.89,"(0.14%)"],["Micron Technology Inc","MU",.646,68.9,.02,"(0.03%)"],["Palo Alto Networks Inc","PANW",.604,228.7,.19,"(0.08%)"],["Synopsys Inc","SNPS",.587,447.12,.27,"(0.06%)"],["Charter Communications Inc","CHTR",.581,441.88,-3.33,"(-0.75%)"],["MercadoLibre Inc","MELI",.562,1,275.5,-1.47,"(-0.11%)"],["PayPal Holdings Inc","PYPL",.559,57.9,.02,"(0.03%)"],["CSX Corp","CSX",.54,31.23,.03,"(0.09%)"],["Cadence Design Systems Inc","CDNS",.539,230.83,.17,"(0.07%)"],["KLA Corp","KLAC",.53,456.11,4.29,"(0.95%)"],["PDD Holdings Inc ADR","PDD",.521,95.93,-.01,"(-0.01%)"],["Marriott International Inc/MD","MAR",.505,193.9,-.46,"(-0.23%)"],["Monster Beverage Corp","MNST",.498,54.48,-.04,"(-0.08%)"],["Airbnb Inc","ABNB",.491,132.09,-.11,"(-0.08%)"],["O'Reilly Automotive Inc","ORLY",.485,936.67,.65,"(0.07%)"],["Cintas Corp","CTAS",.446,505.27,.52,"(0.10%)"],["ASML Holding NV","ASML",.438,585,-2.1,"(-0.36%)"],["NXP Semiconductors NV","NXPI",.434,196.76,-.04,"(-0.02%)"],["Workday Inc","WDAY",.414,235.55,4.73,"(2.05%)"],["Lululemon Athletica Inc","LULU",.405,386.36,-1.69,"(-0.44%)"],["Keurig Dr Pepper Inc,KDP",.404,33.25,.13,"(0.39%)"],["Fortinet Inc","FTNT",.401,58.29,.05,"(0.09%)"],["Marvell Technology Inc","MRVL",.388,52.38,.08,"(0.14%)"],["PACCAR Inc","PCAR",.38,84.97,.04,"(0.04%)"],["Old Dominion Freight Line Inc","ODFL",.38,401.01,.35,"(0.09%)"],["Autodesk Inc","ADSK",.379,204.07,.03,"(0.01%)"],["Kraft Heinz Co/The","KHC",.368,34.27,.11,"(0.31%)"],["Microchip Technology Inc","MCHP",.36,77,-.08,"(-0.10%)"],["Copart Inc","CPRT",.358,43.26,.1,"(0.22%)"],["American Electric Power Co Inc","AEP",.357,79.23,.06,"(0.08%)"],["Paychex Inc","PAYX",.355,113.01,.06,"(0.06%)"],["Exelon Corp","EXC",.35,40.28,.07,"(0.16%)"],["ON Semiconductor Corp","ON",.341,93.87,.06,"(0.06%)"],["AstraZeneca PLC ADR","AZN",.339,67.35,-.49,"(-0.72%)"],["Seagen Inc","SGEN",.336,212.18,-1.52,"(-0.71%)"],["Ross Stores Inc","ROST",.335,111.71,.05,"(0.04%)"],["Moderna Inc","MRNA",.331,100.32,.33,"(0.33%)"],["Biogen Inc","BIIB",.326,257.93,.25,"(0.10%)"],["Crowdstrike Holdings Inc","CRWD",.319,162.85,.28,"(0.17%)"],["IDEXX Laboratories Inc","IDXX",.316,439.41,3.72,"(0.85%)"],["Baker Hughes Co","BKR",.307,35.44,.04,"(0.10%)"],["Constellation Energy Corp","CEG",.307,110.41,.05,"(0.04%)"],["Cognizant Technology Solutions Corp","CTSH",.303,70.19,.58,"(0.83%)"],["Verisk Analytics Inc","VRSK",.303,242.05,.1,"(0.04%)"],["Dexcom Inc","DXCM",.3,88.3,.8,"(0.92%)"],["Trade Desk Inc/The","TTD",.293,76.38,.03,"(0.03%)"],["Xcel Energy Inc","XEL",.284,59.76,.03,"(0.04%)"],["Electronic Arts Inc","EA",.279,118.38,-.63,"(-0.53%)"],["CoStar Group Inc","CSGP",.277,78.18,.12,"(0.15%)"],["GLOBALFOUNDRIES Inc","GFS",.273,57.21,.38,"(0.67%)"],["Fastenal Co","FAST",.268,54.32,.11,"(0.20%)"],["Atlassian Corp","TEAM",.253,196.01,.55,"(0.28%)"],["GE HealthCare Technologies Inc","GEHC",.252,63.78,-.56,"(-0.86%)"],["Warner Bros Discovery Inc","WBD",.244,11.09,-.02,"(-0.14%)"],["Diamondback Energy Inc","FANG",.235,150.7,.13,"(0.09%)"],["Datadog Inc","DDOG",.23,88.81,.05,"(0.06%)"],["ANSYS Inc","ANSS",.227,300.6,-2.31,"(-0.76%)"],["eBay Inc","EBAY",.203,43.22,.09,"(0.20%)"],["Dollar Tree Inc","DLTR",.201,104.77,.27,"(0.25%)"],["Align Technology Inc","ALGN",.2,297.25,-1.31,"(-0.44%)"],["Zscaler Inc","ZS",.188,151.8,.09,"(0.06%)"],["Illumina Inc","ILMN",.183,132.31,-.13,"(-0.10%)"],["Walgreens Boots Alliance Inc","WBA",.161,21.18,.06,"(0.28%)"],["Zoom Video Communications Inc","ZM",.151,68.57,-.29,"(-0.41%)"],["Enphase Energy Inc","ENPH",.148,120.41,.49,"(0.41%)"],["Sirius XM Holdings Inc","SIRI",.137,4.05,.02,"(0.50%)"],["JD.com Inc ADR","JD",.117,30.43,.02,"(0.05%)"],["Lucid Group Inc","LCID",.102,5.14,.03,"(0.49%)"]];var Ie=[["Apple Inc","AAPL",6.992488,171.9,1.47,"(0.86%)"],["Microsoft Corp","MSFT",6.487978,314.55,1.76,"(0.56%)"],["Amazon.com Inc","AMZN",3.193379,126.25,.27,"(0.22%)"],["Nvidia Corp","NVDA",2.928461,433.11,8.43,"(1.99%)"],["Alphabet Inc Cl A","GOOGL",2.162218,132.93,2.39,"(1.83%)"],["Tesla Inc","TSLA",1.854311,246.56,6.06,"(2.52%)"],["Alphabet Inc Cl C","GOOG",1.85251,133.81,2.35,"(1.78%)"],["Meta Platforms Inc Class A","META",1.847731,305.93,8.19,"(2.75%)"],["Berkshire Hathaway Inc Cl B","BRK.B",1.82184,358.67,.89,"(0.25%)"],["Exxon Mobil Corp","XOM",1.343563,118.97,-1.23,"(-1.03%)"],["Unitedhealth Group Inc","UNH",1.302884,510.04,6.31,"(1.25%)"],["Eli Lilly & Co","LLY",1.224046,546.65,-3.11,"(-0.57%)"],["Jpmorgan Chase & Co","JPM",1.182918,148.23,2.45,"(1.68%)"],["Johnson & Johnson W/d","JNJ",1.056344,156.83,-.28,"(-0.18%)"],["Visa Inc Class a Shares","V",1.029636,231.97,2.47,"(1.08%)"],["Procter & Gamble Co","PG",.969793,145.75,-1.59,"(-1.08%)"],["Broadcom Inc","AVGO",.941177,835.33,18.52,"(2.27%)"],["Mastercard Inc A","MA",.918779,400.65,5.17,"(1.31%)"],["Chevron Corp","CVX",.847353,170.55,-.49,"(-0.28%)"],["Home Depot Inc","HD",.847289,304.35,2.53,"(0.84%)"],["Abbvie Inc","BBV",.754672,152.14,-.99,"(-0.65%)"],["Merck & Co. Inc.","MRK",.736434,104.2,.26,"(0.25%)"],["Costco Wholesale Corp","COST",.697258,569.05,5.52,"(0.98%)"],["Pepsico Inc","PEP",.651768,168.92,-.65,"(-0.38%)"],["Walmart Inc","WMT",.644449,161.87,.15,"(0.09%)"],["Adobe Inc","ADBE",.639652,507.17,4.57,"(0.91%)"],["Coca Cola Co","KO",.60801,55.82,-.13,"(-0.23%)"],["Cisco Systems Inc","CSCO",.605326,53.97,.77,"(1.44%)"],["Accenture Plc Cl A","ACN",.55372,298.5,-15.9,"(-5.05%)"],["Salesforce Inc","CRM",.551342,204.46,1.73,"(0.85%)"],["Thermo Fisher Scientific Inc","TMO",.536951,503.47,5.18,"(1.04%)"],["Mcdonald S Corp","MCD",.536457,265.83,2.19,"(0.83%)"],["Bank of America Corp","BAC",.526405,27.51,.24,"(0.86%)"],["Comcast Corp Class A","CMCSA",.512537,45.17,.57,"(1.27%)"],["Linde Plc","LIN",.506835,375.48,3.47,"(0.93%)"],["Pfizer Inc","PFE",.506043,32.09,-.02,"(-0.05%)"],["Netflix Inc","NFLX",.467192,377.77,.18,"(0.05%)"],["Abbott Laboratories","ABT",.462893,97.52,1.99,"(2.08%)"],["Oracle Corp","ORCL",.459877,106.29,1.67,"(1.60%)"]];var Ae=[["CKH HOLDINGS","00001.HK",41.9,1.15,"+2.822%","5.15M","215.13M",4.38,.31,"6.98%","160.48B"],["CLP HOLDINGS","00002.HK",57.95,-.1,"-0.172%","3.32M","193.19M",156.62,1.39,"5.35%","146.41B"],["HK & CHINA GAS","00003.HK",5.46,.13,"+2.439%","16.16M","88.00M",19.43,1.66,"6.41%","101.88B"],["HSBC HOLDINGS,00005.HK",61.7,1.1,"+1.815%","22.19M","1.37B",10.54,.86,"4.05%",1,"227.60B"],["POWER ASSETS","00006.HK",37.9,-.25,"-0.655%","4.23M","160.75M",14.3,.93,"7.44%","80.77B"],["HANG SENG BANK","00011.HK",97.45,2.95,"+3.122%","2.54M","247.44M",19.69,1.01,"4.21%","186.31B"],["HENDERSON LAND","00012.HK",20.65,.85,"+4.293%","5.07M","103.70M",10.81,.31,"8.72%","99.97B"],["SHK PPT","00016.HK",83.8,3.25,"+4.035%","8.25M","685.41M",10.16,.4,"5.91%","242.83B"],["NEW WORLD DEV","00017.HK",15.24,.8,"+5.540%","12.95M","196.19M",30.48,.18,"13.52%","38.35B"],["GALAXY ENT","00027.HK",47.15,1.9,"+4.199%","11.97M","560.21M","No Profit",3.22,"0.00%","206.21B"],["MTR CORPORATION","00066.HK",31,.8,"+2.649%","4.68M","144.86M",19.5,1.07,"4.23%","192.64B"],["HANG LUNG PPT","00101.HK",10.72,.56,"+5.512%","7.68M","81.99M",12.61,.36,"7.28%","48.23B"],["GEELY AUTO","00175.HK",9.24,.17,"+1.874%","18.77M","173.30M",16.06,1.15,"2.27%","92.99B"],["ALI HEALTH","00241.HK",4.88,.47,"+10.658%","53.62M","257.82M",108.09,3.81,"0.00%","66.04B"],["CITIC","00267.HK",7.2,.2,"+2.857%","11.54M","82.96M",2.78,.28,"9.04%","209.45B"],["WH GROUP","00288.HK",4.11,.08,"+1.985%","18.94M","77.65M",4.93,.7,"7.30%","52.73B"],["CHINA RES BEER","00291.HK",42.95,1.2,"+2.874%","4.83M","207.98M",28.41,4.57,"1.41%","139.34B"],["OOIL","00316.HK",104.5,-.4,"-0.381%","296.54K","30.98M",.89,.66,"78.90%","69.01B"],["TINGYI","00322.HK",10.94,.18,"+1.673%","2.91M","31.81M",20.75,4.09,"9.39%","61.64B"],["SINOPEC CORP","00386.HK",4.28,-.01,"-0.233%","92.43M","396.61M",6.94,.58,"9.36%","105.92B"],["HKEX","00388.HK",292.6,9,"+3.173%","4.61M","1.34B",36.76,7.46,"2.44%","370.97B"],["TECHTRONIC IND","00669.HK",76,1.35,"+1.808%","5.47M","414.78M",16.54,3.43,"2.43%","139.45B"],["CHINA OVERSEAS","00688.HK",16.24,.52,"+3.308%","13.15M","212.60M",6.76,.44,"4.93%","177.74B"],["TENCENT","00700.HK",306.2,8.8,"+2.959%","11.25M","3.43B",13.74,3.6,"0.78%",2,"926.16B"],["CHINA UNICOM","00762.HK",5.68,-.05,"-0.873%","9.23M","52.77M",9.16,.45,"5.44%","173.80B"],["LINK REIT","00823.HK",38.4,1.45,"+3.924%","12.04M","460.96M",5.42,.52,"7.03%","98.38B"],["CHINA RES POWER","00836.HK",14.94,.32,"+2.189%","9.91M","147.81M",10.23,.87,"3.92%","71.87B"],["PETROCHINA","00857.HK",5.9,0,"0.000%","64.23M","380.44M",6.38,.7,"8.08%","124.48B"],["XINYI GLASS","00868.HK",10.14,.17,"+1.705%","3.75M","38.02M",8.01,1.3,"6.11%","42.22B"],["ZHONGSHENG HLDG","00881.HK",22.05,1.45,"+7.039%","6.76M","147.71M",7.08,1.07,"4.94%","52.72B"],["CNOOC","00883.HK",13.78,-.02,"-0.145%","26.37M","365.08M",4.03,.97,"19.09%","655.47B"],["CCB","00939.HK",4.42,.06,"+1.376%","233.61M","1.03B",3.06,.35,"9.93%",1,"062.64B"],["CHINA MOBILE","00941.HK",65.7,.25,"+0.382%","7.82M","516.10M",9.91,.96,"6.71%",1,"404.46B"],["LONGFOR GROUP","00960.HK",14.08,.9,"+6.829%","10.88M","150.68M",3.06,.55,"9.05%","92.81B"],["XINYI SOLAR","00968.HK",5.86,.28,"+5.018%","15.99M","92.88M",13.64,1.75,"3.41%","52.17B"],["SMIC","00981.HK",20.05,.25,"+1.263%","13.10M","264.32M",11.17,1.06,"0.00%","159.31B"],["LENOVO GROUP","00992.HK",8.07,.25,"+3.197%","33.60M","270.50M",7.61,2.23,"4.71%","97.87B"],["CKI HOLDINGS","01038.HK",37.05,-.2,"-0.537%","1.44M","53.73M",12.03,.78,"6.83%","93.35B"],["HENGAN INT'L","01044.HK",24.95,.2,"+0.808%","2.62M","64.97M",13.35,1.32,"6.33%","28.99B"],["CHINA SHENHUA","01088.HK",25.4,.35,"+1.397%","7.98M","203.11M",6.14,1.13,"11.33%","85.79B"],["CSPC PHARMA","01093.HK",5.74,.05,"+0.879%","29.29M","167.41M",9.96,2.01,"3.66%","68.32B"],["SINOPHARM","01099.HK",22.7,.2,"+0.889%","2.07M","46.80M",7.37,.92,"4.08%","30.46B"],["CHINA RES LAND","01109.HK",31.2,1,"+3.311%","9.88M","305.88M",7.02,.81,"5.07%","222.49B"],["CK ASSET","01113.HK",41.25,1.25,"+3.125%","8.57M","352.44M",6.9,.39,"5.53%","146.47B"],["SINO BIOPHARM","01177.HK",2.83,.02,"+0.712%","26.30M","74.09M",18.37,1.59,"4.24%","53.21B"],["CHINA RES MIXC","01209.HK",31.6,1.6,"+5.333%","3.07M","96.42M",28.97,4.48,"2.87%","72.13B"],["BYD COMPANY","01211.HK",242,7,"+2.979%","3.90M","938.50M",37.57,5.63,"0.53%","265.72B"],["AIA","01299.HK",63.85,.95,"+1.510%","38.75M","2.48B",408.88,2.53,"2.41%","735.40B"],["CHINAHONGQIAO","01378.HK",7.67,.28,"+3.789%","13.05M","99.58M",7.27,.76,"6.65%","72.68B"],["ICBC","01398.HK",3.77,.07,"+1.892%","233.48M","881.67M",3.45,.36,"9.08%","327.21B"],["XIAOMI-W","01810.HK",12.34,.62,"+5.290%","78.53M","960.98M",109.39,1.9,"0.00%","308.83B"],["BUD APAC","01876.HK",15.46,.16,"+1.046%","16.17M","250.45M",28.65,2.44,"1.91%","204.74B"],["SANDS CHINA LTD","01928.HK",24,.95,"+4.121%","19.98M","475.93M","No Profit","N/A","0.00%","194.24B"],["CHOW TAI FOOK","01929.HK",11.8,.28,"+2.431%","4.88M","57.68M",21.93,3.64,"10.34%","118.00B"],["WHARF REIC","01997.HK",30.25,1.4,"+4.853%","4.23M","127.31M","No Profit",.48,"4.33%","91.85B"],["ANTA SPORTS","02020.HK",88.15,4.4,"+5.254%","4.82M","422.51M",27.71,6.16,"1.52%","249.70B"],["WUXI BIO","02269.HK",45.65,1.55,"+3.515%","17.91M","811.49M",38.18,4.88,"0.00%","194.01B"],["SHENZHOU INTL","02313.HK",75,4.6,"+6.534%","5.52M","410.68M",21.87,3.25,"2.55%","112.74B"],["PING AN","02318.HK",44.85,.85,"+1.932%","23.05M","1.03B",8.28,.85,"6.09%","334.02B"],["MENGNIU DAIRY","02319.HK",26.25,1.5,"+6.061%","8.58M","223.15M",17.34,2.3,"1.73%","103.42B"],["LI NING","02331.HK",32.95,1.5,"+4.769%","22.54M","738.37M",18.8,3.16,"1.58%","86.86B"],["SUNNY OPTICAL","02382.HK",54.7,1.05,"+1.957%","5.62M","308.60M",22.01,2.44,"0.91%","60.00B"],["BOC HONG KONG","02388.HK",21.45,.3,"+1.418%","6.53M","140.32M",8.38,.75,"6.33%","226.79B"],["CHINA LIFE","02628.HK",12.2,.24,"+2.007%","13.53M","165.07M",9.49,.7,"4.53%","90.78B"],["ENN ENERGY","02688.HK",65,1.15,"+1.801%","3.06M","198.69M",11.08,1.67,"4.48%","73.53B"],["ZIJIN MINING","02899.HK",11.98,.16,"+1.354%","16.20M","194.50M",13.97,3.14,"1.88%","68.73B"],["MEITUAN-W","03690.HK",114.6,3.8,"+3.430%","19.17M","2.19B","No Profit",4.89,"0.00%","715.43B"],["HANSOH PHARMA","03692.HK",10.66,.16,"+1.524%","17.56M","187.72M",21.48,2.47,"0.94%","63.25B"],["CM BANK","03968.HK",32.7,.1,"+0.307%","11.13M","363.99M",5.51,.86,"6.00%","150.12B"],["BANK OF CHINA","03988.HK",2.74,.05,"+1.859%","275.47M","754.54M",3.33,.33,"9.55%","229.13B"],["CG SERVICES","06098.HK",8.08,.25,"+3.193%","16.08M","128.87M",12.42,.65,"5.20%","27.01B"],["JD HEALTH","06618.HK",40.6,2.95,"+7.835%","7.75M","312.36M",299.91,2.56,"0.00%","129.12B"],["HAIER SMARTHOME","06690.HK",24.65,1.15,"+4.894%","7.24M","178.37M",13.83,2.21,"2.59%","70.46B"],["HAIDILAO","06862.HK",21,.6,"+2.941%","6.86M","143.79M",74.46,13.94,"0.55%","117.05B"],["JD-SW","09618.HK",115.1,4,"+3.600%","7.43M","852.28M",30.73,1.5,"6.38%","360.24B"],["NONGFU SPRING","09633.HK",45,1.5,"+3.448%","3.69M","165.62M",52.49,18.63,"1.71%","226.56B"],["BIDU-SW","09888.HK",133.4,4.6,"+3.571%","5.82M","772.73M",47.3,1.5,"0.00%","377.37B"],["TRIP.COM-S","09961.HK",279.2,7,"+2.572%","1.25M","349.59M",114.05,1.4,"0.00%","176.65B"],["BABA-SW","09988.HK",85.6,2.6,"+3.133%","34.61M","2.96B",21.65,1.62,"0.00%",1,"837.13B"],["NTES-S","09999.HK",159.5,8.3,"+5.489%","5.02M","797.10M",22.7,4.63,"1.36%","546.99B"]];var X=[];for(let t of Le){let[r,e,n,o,a]=t,s=".FTSE100",i="BUY",c=1;X.push([s,o,e,n,r,`${r}-${s}`,i,a,c])}for(let t of Ae){let[r,e,n,o,,a]=t,s=".HSI",i="BUY",c=1;X.push([s,o,r,n,e,`${e}-${s}`,i,a,c])}for(let t of Re){let[r,e,n,o,a]=t,s=".NASDAQ100",i="BUY",c=1e3;X.push([s,a,r,o,e,`${e}-${s}`,i,c,n])}for(let t of Ie){let[r,e,n,,o]=t,a=".SP500",s="BUY",i=1e3,c=0;X.push([a,o,r,c,e,`${e}-${a}`,s,i,n])}var _=X;var{bid:At,bidSize:Pt,ask:Et,askSize:Bt,last:kt}=S(p.prices),Nt=new U({bid:At,bidSize:Pt,ask:Et,askSize:Bt,last:kt}),Pe=[];for(let[,,,t,r]of _){let e=parseFloat(String(t));if(!isNaN(e)){let[n,o]=Me(5,Z),a=l(1e3,3e3),s=l(1e3,3e3),i=e+l(0,1)/10,c=e+l(0,1)/10,C=e+l(0,1)/10,T="C",g="close";Pe.push([o,a,n,s,i,c,C,T,r,g])}}var xt=new m(p.prices,Pe,S(p.prices),Nt),Ee=xt;var k=t=>Object.values(R[t].columns).reduce((r,e,n)=>(r[e.name]=n,r),{}),N={algoType:k("algoType"),basket:k("basket"),basketTrading:k("basketTrading"),basketTradingConstituent:k("basketTradingConstituent"),basketConstituent:k("basketConstituent"),basketTradingConstituentJoin:k("basketTradingConstituentJoin"),priceStrategyType:k("priceStrategyType")},Be=new m(R.basketConstituent,_,N.basketConstituent),j=new m(R.basketTrading,[],N.basketTrading),Ht=1,me=new m(R.basketTradingConstituent,[],N.basketTradingConstituent),ke=(t,r,e="BUY",n="OFF MARKET")=>[t,r,0,1.25,`steve-${Ht++}`,e,n,1e6,125e4,100];function Gt(t,r){let e=ke(t,r);j.insert(e);let{basketId:n}=k("basketConstituent");Be.data.filter(a=>a[n]===t).forEach(([,,a,,s,,,i,c])=>{let C="",T="",I="",M="BUY",f="venue",{instanceId:v}=N.basketTrading,ye=e[v],ut=[C,T,t,a,ye,`${ye}-${s}`,95,0,0,0,0,I,i,s,M,f,c];me.insert(ut)})}async function wt(t){console.log(`RPC call erceived ${t.rpcName}`)}async function Ot(t){let[r]=t.params;j.update(r,"status","ON_MARKET")}async function Kt(t){let[r]=t.params;j.update(r,"status","OFF-MARKET")}async function Vt(t){let{params:[r,e]}=t;Gt(r,e)}var Ut={algoType:new m(R.algoType,[["Sniper",0],["Dark Liquidity",1],["VWAP",2],["POV",3],["Dynamic Close",4]],N.algoType),basket:new m(R.basket,[[".NASDAQ100",".NASDAQ100",0,0],[".HSI",".HSI",0,0],[".FTSE100",".FTSE100",0,0],[".SP500",".SP500",0,0]],N.basket),basketConstituent:Be,basketTrading:j,basketTradingConstituent:me,basketTradingConstituentJoin:z({module:"BASKET",table:"basketTradingConstituentJoin"},me,Ee,"ric"),priceStrategyType:new m(R.priceStrategyType,[["Peg to Near Touch",0],["Far Touch",1],["Limit",2],["Algo",3]],N.priceStrategyType)},_t={algoType:void 0,basket:{name:"ROOT",menus:[{context:"selected-rows",filter:"",name:"Add Basket",rpcName:"CREATE_NEW_BASKET"}]},basketConstituent:void 0,basketTrading:void 0,basketTradingConstituent:void 0,basketTradingConstituentJoin:void 0,priceStrategyType:void 0},Ft={algoType:void 0,basket:[{rpcName:"createBasket",service:Vt}],basketConstituent:void 0,basketTrading:[{rpcName:"sendToMarket",service:Ot},{rpcName:"takeOffMarket",service:Kt}],basketTradingConstituent:void 0,basketTradingConstituentJoin:[{rpcName:"addConstituent",service:wt}],priceStrategyType:void 0},Wt=t=>R[t].columns,Xt=t=>{let r=Wt(t),{key:e}=R[t];return new O({columnDescriptors:r,dataMap:N[t],keyColumn:e,menu:_t[t],rpcServices:Ft[t],table:Ut[t]})},Yt=async()=>[],$t={createDataSource:Xt,typeaheadHook:()=>Yt},Ne=$t;var rt=Tt(Qe());var et=["CAD","GBX","USD","EUR","GBP"];var tt={L:["London PLC","XLON/LSE-SETS"],N:["Corporation","XNGS/NAS-GSM"],AS:["B.V.","XAMS/ENA-MAIN"],OQ:["Co.","XNYS/NYS-MAIN"],PA:["Paris","PAR/EUR_FR"],MI:["Milan","MIL/EUR_IT"],FR:["Frankfurt","FR/EUR_DE"],AT:["Athens","AT/EUR_GR"]},de=["L","N","OQ","AS","PA","MI","FR","AT"];var Ce=[1,2,5,10,50,50,70,100,100,100,120,150,150,200,500,700,1e3,2e3,2500,5e3,1e4];var nt={bbg:0,currency:1,description:2,exchange:3,string:4,number:5,ric:6,price:7},F=[],G=Array.from("ABCEFGHKMNOPQRTUVWYZ"),fr=()=>{let t=l(0,1e4),r=l(1,10);return t/r};for(let t of G)for(let r=0;r<1e3;r++){let e=G[l(0,G.length-1)],n=G[l(0,G.length-1)],o=G[l(0,G.length-1)],a=de[l(0,de.length-1)],s=t+e+n+o+"."+a,i=t+e+n+o+" "+a,c=`${s} description`,C=et[l(0,4)],T=(0,rt.isinGenerator)(),g=Ce[l(0,Ce.length-1)],P=tt[a][1],y=fr();F.push([i,C,c,P,String(T),g,s,y])}var hr=new m(p.instruments,F,S(p.instruments));var Te=hr;var Dr=F.map(t=>t.slice(0,-1).concat([l(0,1)===1,l(0,1)===1,new Date().getTime()])),br=new m(p.instrumentsExtended,Dr,S(p.instrumentsExtended)),ot=br;var{bid:Sr,bidSize:Mr,ask:vr,askSize:Lr}=S(p.prices),Rr=new U({bid:Sr,bidSize:Mr,ask:vr,askSize:Lr}),Ir=["ric","price"],at=F.map(t=>{let{ric:r,price:e}=Ir.reduce((y,L)=>({...y,[L]:t[nt[L]]}),{}),n=l(0,10),o=e+n/2,a=l(1e3,3e3),s=e-n/2,i=l(1e3,3e3),c=e+l(0,1)/10,C=e+l(0,1)/10,T=e+l(0,1)/10;return[o,a,s,i,c,C,T,"C",r,"close"]});for(let[,,,t,r]of _){let e=parseFloat(String(t));if(!isNaN(e)){let n=l(0,10),o=e+n/2,a=l(1e3,3e3),s=e-n/2,i=l(1e3,3e3),c=e+l(0,1)/10,C=e+l(0,1)/10,T=e+l(0,1)/10,g="C",P="close";at.push([o,a,s,i,c,C,T,g,r,P])}}var Ar=new m(p.prices,at,S(p.prices),Rr);var ge=Ar;var st={childOrders:new m(p.childOrders,[],S(p.childOrders)),instruments:Te,instrumentsExtended:ot,instrumentPrices:z({module:"SIMUL",table:"instrumentPrices"},Te,ge,"ric"),orders:new m(p.orders,[],S(p.orders)),parentOrders:new m(p.parentOrders,[],S(p.parentOrders)),prices:ge},Pr=t=>{let r=p[t];if(r)return r.columns;throw Error(`simul-module no schema found for table SIMUL ${t}`)},Er=t=>{let r=Pr(t);return new O({columnDescriptors:r,keyColumn:p[t].key,table:st[t]})},Br=([t,r,e])=>{let n=st[t.table];if(n)return $(n,r,e);throw Error(`SIMUL suggestionFetcher, unknown table ${t.module} ${t.table}`)},kr={createDataSource:Er,typeaheadHook:()=>Br},it=kr;var Nr={BASKET:Ne,SIMUL:it},Po=t=>Nr[t];export{bt as DefaultColumnGenerator,Dt as DefaultRowGenerator,O as TickingArrayDataSource,en as VuuColumnGenerator,ke as createBasketTradingRow,Kr as getAllSchemas,tn as getColumnAndRowGenerator,Vr as getSchema,rn as populateArray,gt as schemas,Po as vuuModule};
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __commonJS = (cb, mod) => function __require() {
8
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
19
+ // If the importer is in node compatibility mode or this is not an ESM
20
+ // file that has been converted to a CommonJS file using a Babel-
21
+ // compatible transform (i.e. "__esModule" has not been set), then set
22
+ // "default" to the CommonJS "module.exports" for node compatibility.
23
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
24
+ mod
25
+ ));
26
+ var __accessCheck = (obj, member, msg) => {
27
+ if (!member.has(obj))
28
+ throw TypeError("Cannot " + msg);
29
+ };
30
+ var __privateGet = (obj, member, getter) => {
31
+ __accessCheck(obj, member, "read from private field");
32
+ return getter ? getter.call(obj) : member.get(obj);
33
+ };
34
+ var __privateAdd = (obj, member, value) => {
35
+ if (member.has(obj))
36
+ throw TypeError("Cannot add the same private member more than once");
37
+ member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
38
+ };
39
+ var __privateSet = (obj, member, value, setter) => {
40
+ __accessCheck(obj, member, "write to private field");
41
+ setter ? setter.call(obj, value) : member.set(obj, value);
42
+ return value;
43
+ };
44
+
45
+ // ../../node_modules/@thomaschaplin/isin-generator/country-codes.json
46
+ var require_country_codes = __commonJS({
47
+ "../../node_modules/@thomaschaplin/isin-generator/country-codes.json"(exports, module) {
48
+ module.exports = [
49
+ "AD",
50
+ "AE",
51
+ "AF",
52
+ "AG",
53
+ "AI",
54
+ "AL",
55
+ "AM",
56
+ "AO",
57
+ "AQ",
58
+ "AR",
59
+ "AS",
60
+ "AT",
61
+ "AU",
62
+ "AW",
63
+ "AX",
64
+ "AZ",
65
+ "BA",
66
+ "BB",
67
+ "BD",
68
+ "BE",
69
+ "BF",
70
+ "BG",
71
+ "BH",
72
+ "BI",
73
+ "BJ",
74
+ "BL",
75
+ "BM",
76
+ "BN",
77
+ "BO",
78
+ "BQ",
79
+ "BR",
80
+ "BS",
81
+ "BT",
82
+ "BV",
83
+ "BW",
84
+ "BY",
85
+ "BZ",
86
+ "CA",
87
+ "CC",
88
+ "CD",
89
+ "CF",
90
+ "CG",
91
+ "CH",
92
+ "CI",
93
+ "CK",
94
+ "CL",
95
+ "CM",
96
+ "CN",
97
+ "CO",
98
+ "CR",
99
+ "CU",
100
+ "CV",
101
+ "CW",
102
+ "CX",
103
+ "CY",
104
+ "CZ",
105
+ "DE",
106
+ "DJ",
107
+ "DK",
108
+ "DM",
109
+ "DO",
110
+ "DZ",
111
+ "EC",
112
+ "EE",
113
+ "EG",
114
+ "EH",
115
+ "ER",
116
+ "ES",
117
+ "ET",
118
+ "FI",
119
+ "FJ",
120
+ "FK",
121
+ "FM",
122
+ "FO",
123
+ "FR",
124
+ "GA",
125
+ "GB",
126
+ "GD",
127
+ "GE",
128
+ "GF",
129
+ "GG",
130
+ "GH",
131
+ "GI",
132
+ "GL",
133
+ "GM",
134
+ "GN",
135
+ "GP",
136
+ "GQ",
137
+ "GR",
138
+ "GS",
139
+ "GT",
140
+ "GU",
141
+ "GW",
142
+ "GY",
143
+ "HK",
144
+ "HM",
145
+ "HN",
146
+ "HR",
147
+ "HT",
148
+ "HU",
149
+ "ID",
150
+ "IE",
151
+ "IL",
152
+ "IM",
153
+ "IN",
154
+ "IO",
155
+ "IQ",
156
+ "IR",
157
+ "IS",
158
+ "IT",
159
+ "JE",
160
+ "JM",
161
+ "JO",
162
+ "JP",
163
+ "KE",
164
+ "KG",
165
+ "KH",
166
+ "KI",
167
+ "KM",
168
+ "KN",
169
+ "KP",
170
+ "KR",
171
+ "KW",
172
+ "KY",
173
+ "KZ",
174
+ "LA",
175
+ "LB",
176
+ "LC",
177
+ "LI",
178
+ "LK",
179
+ "LR",
180
+ "LS",
181
+ "LT",
182
+ "LU",
183
+ "LV",
184
+ "LY",
185
+ "MA",
186
+ "MC",
187
+ "MD",
188
+ "ME",
189
+ "MF",
190
+ "MG",
191
+ "MH",
192
+ "MK",
193
+ "ML",
194
+ "MM",
195
+ "MN",
196
+ "MO",
197
+ "MP",
198
+ "MQ",
199
+ "MR",
200
+ "MS",
201
+ "MT",
202
+ "MU",
203
+ "MV",
204
+ "MW",
205
+ "MX",
206
+ "MY",
207
+ "MZ",
208
+ "NA",
209
+ "NC",
210
+ "NE",
211
+ "NF",
212
+ "NG",
213
+ "NI",
214
+ "NL",
215
+ "NO",
216
+ "NP",
217
+ "NR",
218
+ "NU",
219
+ "NZ",
220
+ "OM",
221
+ "PA",
222
+ "PE",
223
+ "PF",
224
+ "PG",
225
+ "PH",
226
+ "PK",
227
+ "PL",
228
+ "PM",
229
+ "PN",
230
+ "PR",
231
+ "PS",
232
+ "PT",
233
+ "PW",
234
+ "PY",
235
+ "QA",
236
+ "RE",
237
+ "RO",
238
+ "RS",
239
+ "RU",
240
+ "RW",
241
+ "SA",
242
+ "SB",
243
+ "SC",
244
+ "SD",
245
+ "SE",
246
+ "SG",
247
+ "SH",
248
+ "SI",
249
+ "SJ",
250
+ "SK",
251
+ "SL",
252
+ "SM",
253
+ "SN",
254
+ "SO",
255
+ "SR",
256
+ "SS",
257
+ "ST",
258
+ "SV",
259
+ "SX",
260
+ "SY",
261
+ "SZ",
262
+ "TC",
263
+ "TD",
264
+ "TF",
265
+ "TG",
266
+ "TH",
267
+ "TJ",
268
+ "TK",
269
+ "TL",
270
+ "TM",
271
+ "TN",
272
+ "TO",
273
+ "TR",
274
+ "TT",
275
+ "TV",
276
+ "TW",
277
+ "TZ",
278
+ "UA",
279
+ "UG",
280
+ "UM",
281
+ "US",
282
+ "UY",
283
+ "UZ",
284
+ "VA",
285
+ "VC",
286
+ "VE",
287
+ "VG",
288
+ "VI",
289
+ "VN",
290
+ "VU",
291
+ "WF",
292
+ "WS",
293
+ "YE",
294
+ "YT",
295
+ "ZA",
296
+ "ZM",
297
+ "ZW"
298
+ ];
299
+ }
300
+ });
301
+
302
+ // ../../node_modules/@thomaschaplin/cusip-generator/build/convert-string-to-base-ten-number.js
303
+ var require_convert_string_to_base_ten_number = __commonJS({
304
+ "../../node_modules/@thomaschaplin/cusip-generator/build/convert-string-to-base-ten-number.js"(exports) {
305
+ "use strict";
306
+ Object.defineProperty(exports, "__esModule", { value: true });
307
+ exports.convertStringToBaseTenNumber = void 0;
308
+ var convertStringToBaseTenNumber = function(value) {
309
+ return parseInt(value, 10);
310
+ };
311
+ exports.convertStringToBaseTenNumber = convertStringToBaseTenNumber;
312
+ }
313
+ });
314
+
315
+ // ../../node_modules/@thomaschaplin/cusip-generator/build/is-odd.js
316
+ var require_is_odd = __commonJS({
317
+ "../../node_modules/@thomaschaplin/cusip-generator/build/is-odd.js"(exports) {
318
+ "use strict";
319
+ Object.defineProperty(exports, "__esModule", { value: true });
320
+ exports.isOdd = void 0;
321
+ var isOdd = function(value) {
322
+ return value % 2 === 1;
323
+ };
324
+ exports.isOdd = isOdd;
325
+ }
326
+ });
327
+
328
+ // ../../node_modules/@thomaschaplin/cusip-generator/build/generate-cusip-check-code.js
329
+ var require_generate_cusip_check_code = __commonJS({
330
+ "../../node_modules/@thomaschaplin/cusip-generator/build/generate-cusip-check-code.js"(exports) {
331
+ "use strict";
332
+ Object.defineProperty(exports, "__esModule", { value: true });
333
+ exports.generateCusipCheckCode = void 0;
334
+ var convert_string_to_base_ten_number_1 = require_convert_string_to_base_ten_number();
335
+ var is_odd_1 = require_is_odd();
336
+ var generateCusipCheckCode = function(cusip) {
337
+ var cusipLength = cusip.length;
338
+ var currentValue;
339
+ var total = 0;
340
+ var check;
341
+ for (var i = 0; i < cusipLength; i++) {
342
+ currentValue = cusip[i];
343
+ var currentNumberToBaseTen = (0, convert_string_to_base_ten_number_1.convertStringToBaseTenNumber)(currentValue);
344
+ var currentNumberOrPosition = isNaN(currentNumberToBaseTen) ? currentValue.charCodeAt(0) - "A".charCodeAt(0) + 10 : currentValue;
345
+ if ((0, is_odd_1.isOdd)(i)) {
346
+ currentNumberOrPosition = currentNumberOrPosition * 2;
347
+ }
348
+ total = total + Math.floor(currentNumberOrPosition / 10) + currentNumberOrPosition % 10;
349
+ }
350
+ check = (10 - total % 10) % 10;
351
+ return check;
352
+ };
353
+ exports.generateCusipCheckCode = generateCusipCheckCode;
354
+ }
355
+ });
356
+
357
+ // ../../node_modules/@thomaschaplin/cusip-generator/build/fixtures/alphabet.js
358
+ var require_alphabet = __commonJS({
359
+ "../../node_modules/@thomaschaplin/cusip-generator/build/fixtures/alphabet.js"(exports) {
360
+ "use strict";
361
+ Object.defineProperty(exports, "__esModule", { value: true });
362
+ exports.alphabet = void 0;
363
+ exports.alphabet = [
364
+ "A",
365
+ "B",
366
+ "C",
367
+ "D",
368
+ "E",
369
+ "F",
370
+ "G",
371
+ "H",
372
+ "J",
373
+ "K",
374
+ "L",
375
+ "M",
376
+ "N",
377
+ "P",
378
+ "Q",
379
+ "R",
380
+ "S",
381
+ "T",
382
+ "U",
383
+ "V",
384
+ "W",
385
+ "X",
386
+ "Y",
387
+ "Z"
388
+ ];
389
+ }
390
+ });
391
+
392
+ // ../../node_modules/@thomaschaplin/cusip-generator/build/fixtures/base-ten-numbers.js
393
+ var require_base_ten_numbers = __commonJS({
394
+ "../../node_modules/@thomaschaplin/cusip-generator/build/fixtures/base-ten-numbers.js"(exports) {
395
+ "use strict";
396
+ Object.defineProperty(exports, "__esModule", { value: true });
397
+ exports.baseTenNumbers = void 0;
398
+ exports.baseTenNumbers = [
399
+ 0,
400
+ 1,
401
+ 2,
402
+ 3,
403
+ 4,
404
+ 5,
405
+ 6,
406
+ 7,
407
+ 8,
408
+ 9
409
+ ];
410
+ }
411
+ });
412
+
413
+ // ../../node_modules/@thomaschaplin/cusip-generator/build/fixtures/alphanumeric-values.js
414
+ var require_alphanumeric_values = __commonJS({
415
+ "../../node_modules/@thomaschaplin/cusip-generator/build/fixtures/alphanumeric-values.js"(exports) {
416
+ "use strict";
417
+ var __read = exports && exports.__read || function(o, n) {
418
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
419
+ if (!m)
420
+ return o;
421
+ var i = m.call(o), r, ar = [], e;
422
+ try {
423
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done)
424
+ ar.push(r.value);
425
+ } catch (error) {
426
+ e = { error };
427
+ } finally {
428
+ try {
429
+ if (r && !r.done && (m = i["return"]))
430
+ m.call(i);
431
+ } finally {
432
+ if (e)
433
+ throw e.error;
434
+ }
435
+ }
436
+ return ar;
437
+ };
438
+ var __spreadArray = exports && exports.__spreadArray || function(to, from, pack) {
439
+ if (pack || arguments.length === 2)
440
+ for (var i = 0, l = from.length, ar; i < l; i++) {
441
+ if (ar || !(i in from)) {
442
+ if (!ar)
443
+ ar = Array.prototype.slice.call(from, 0, i);
444
+ ar[i] = from[i];
445
+ }
446
+ }
447
+ return to.concat(ar || Array.prototype.slice.call(from));
448
+ };
449
+ Object.defineProperty(exports, "__esModule", { value: true });
450
+ exports.alphanumeric = void 0;
451
+ var alphabet_1 = require_alphabet();
452
+ var base_ten_numbers_1 = require_base_ten_numbers();
453
+ exports.alphanumeric = __spreadArray(__spreadArray([], __read(alphabet_1.alphabet), false), __read(base_ten_numbers_1.baseTenNumbers), false);
454
+ }
455
+ });
456
+
457
+ // ../../node_modules/@thomaschaplin/cusip-generator/build/generate-random-alphanumeric.js
458
+ var require_generate_random_alphanumeric = __commonJS({
459
+ "../../node_modules/@thomaschaplin/cusip-generator/build/generate-random-alphanumeric.js"(exports) {
460
+ "use strict";
461
+ Object.defineProperty(exports, "__esModule", { value: true });
462
+ exports.generateRandomAlphanumeric = void 0;
463
+ var alphanumeric_values_1 = require_alphanumeric_values();
464
+ var generateRandomAlphanumeric = function() {
465
+ return alphanumeric_values_1.alphanumeric[Math.floor(Math.random() * alphanumeric_values_1.alphanumeric.length)];
466
+ };
467
+ exports.generateRandomAlphanumeric = generateRandomAlphanumeric;
468
+ }
469
+ });
470
+
471
+ // ../../node_modules/@thomaschaplin/cusip-generator/build/generate-random-string-of-alphanumeric-chars.js
472
+ var require_generate_random_string_of_alphanumeric_chars = __commonJS({
473
+ "../../node_modules/@thomaschaplin/cusip-generator/build/generate-random-string-of-alphanumeric-chars.js"(exports) {
474
+ "use strict";
475
+ Object.defineProperty(exports, "__esModule", { value: true });
476
+ exports.generateRandomStringOfAlphanumericChars = void 0;
477
+ var generate_random_alphanumeric_1 = require_generate_random_alphanumeric();
478
+ var generateRandomStringOfAlphanumericChars = function() {
479
+ var string = "";
480
+ for (var i = 0; i < 2; i++) {
481
+ string = string + (0, generate_random_alphanumeric_1.generateRandomAlphanumeric)();
482
+ }
483
+ return string;
484
+ };
485
+ exports.generateRandomStringOfAlphanumericChars = generateRandomStringOfAlphanumericChars;
486
+ }
487
+ });
488
+
489
+ // ../../node_modules/@thomaschaplin/cusip-generator/build/generate-random-base-ten-number.js
490
+ var require_generate_random_base_ten_number = __commonJS({
491
+ "../../node_modules/@thomaschaplin/cusip-generator/build/generate-random-base-ten-number.js"(exports) {
492
+ "use strict";
493
+ Object.defineProperty(exports, "__esModule", { value: true });
494
+ exports.generateRandomBaseTenNumber = void 0;
495
+ var generateRandomBaseTenNumber = function() {
496
+ return Math.floor(Math.random() * 10);
497
+ };
498
+ exports.generateRandomBaseTenNumber = generateRandomBaseTenNumber;
499
+ }
500
+ });
501
+
502
+ // ../../node_modules/@thomaschaplin/cusip-generator/build/generate-random-string-of-base-ten-chars.js
503
+ var require_generate_random_string_of_base_ten_chars = __commonJS({
504
+ "../../node_modules/@thomaschaplin/cusip-generator/build/generate-random-string-of-base-ten-chars.js"(exports) {
505
+ "use strict";
506
+ Object.defineProperty(exports, "__esModule", { value: true });
507
+ exports.generateRandomStringOfBaseTenChars = void 0;
508
+ var generate_random_base_ten_number_1 = require_generate_random_base_ten_number();
509
+ var generateRandomStringOfBaseTenChars = function() {
510
+ var string = "";
511
+ for (var i = 0; i < 6; i++) {
512
+ string = string + (0, generate_random_base_ten_number_1.generateRandomBaseTenNumber)();
513
+ }
514
+ return string;
515
+ };
516
+ exports.generateRandomStringOfBaseTenChars = generateRandomStringOfBaseTenChars;
517
+ }
518
+ });
519
+
520
+ // ../../node_modules/@thomaschaplin/cusip-generator/build/generate-cusip-without-check-code.js
521
+ var require_generate_cusip_without_check_code = __commonJS({
522
+ "../../node_modules/@thomaschaplin/cusip-generator/build/generate-cusip-without-check-code.js"(exports) {
523
+ "use strict";
524
+ Object.defineProperty(exports, "__esModule", { value: true });
525
+ exports.generateCusipWithoutCheckCode = void 0;
526
+ var generate_random_string_of_alphanumeric_chars_1 = require_generate_random_string_of_alphanumeric_chars();
527
+ var generate_random_string_of_base_ten_chars_1 = require_generate_random_string_of_base_ten_chars();
528
+ var generateCusipWithoutCheckCode = function() {
529
+ var randomBaseTenString = (0, generate_random_string_of_base_ten_chars_1.generateRandomStringOfBaseTenChars)();
530
+ var randomAlphanumericString = (0, generate_random_string_of_alphanumeric_chars_1.generateRandomStringOfAlphanumericChars)();
531
+ return randomBaseTenString + randomAlphanumericString;
532
+ };
533
+ exports.generateCusipWithoutCheckCode = generateCusipWithoutCheckCode;
534
+ }
535
+ });
536
+
537
+ // ../../node_modules/@thomaschaplin/cusip-generator/build/generate-cusip.js
538
+ var require_generate_cusip = __commonJS({
539
+ "../../node_modules/@thomaschaplin/cusip-generator/build/generate-cusip.js"(exports) {
540
+ "use strict";
541
+ Object.defineProperty(exports, "__esModule", { value: true });
542
+ exports.generateCusip = void 0;
543
+ var generate_cusip_check_code_1 = require_generate_cusip_check_code();
544
+ var generate_cusip_without_check_code_1 = require_generate_cusip_without_check_code();
545
+ var generateCusip = function() {
546
+ var cusip = (0, generate_cusip_without_check_code_1.generateCusipWithoutCheckCode)();
547
+ var check = (0, generate_cusip_check_code_1.generateCusipCheckCode)(cusip);
548
+ return cusip + check;
549
+ };
550
+ exports.generateCusip = generateCusip;
551
+ }
552
+ });
553
+
554
+ // ../../node_modules/@thomaschaplin/cusip-generator/build/index.js
555
+ var require_build = __commonJS({
556
+ "../../node_modules/@thomaschaplin/cusip-generator/build/index.js"(exports) {
557
+ "use strict";
558
+ Object.defineProperty(exports, "__esModule", { value: true });
559
+ exports.generateCusip = void 0;
560
+ var generate_cusip_1 = require_generate_cusip();
561
+ Object.defineProperty(exports, "generateCusip", { enumerable: true, get: function() {
562
+ return generate_cusip_1.generateCusip;
563
+ } });
564
+ }
565
+ });
566
+
567
+ // ../../node_modules/@thomaschaplin/isin-generator/index.js
568
+ var require_isin_generator = __commonJS({
569
+ "../../node_modules/@thomaschaplin/isin-generator/index.js"(exports) {
570
+ "use-strict";
571
+ var countryCodes = require_country_codes();
572
+ var cusip = require_build().generateCusip();
573
+ var generateIsin = (cusip2) => {
574
+ let code = countryCodes[Math.floor(Math.random() * countryCodes.length)];
575
+ let isin = code + cusip2 + generateIsinCheckDigit(code + cusip2 + "0");
576
+ return isin;
577
+ };
578
+ var generateIsinCheckDigit = (isin) => {
579
+ if (isin.length != 12)
580
+ return false;
581
+ var v = [];
582
+ for (var i = isin.length - 2; i >= 0; i--) {
583
+ let c = isin.charAt(i);
584
+ if (isNaN(c)) {
585
+ var letterCode = isin.charCodeAt(i) - 55;
586
+ v.push(letterCode % 10);
587
+ if (letterCode > 9) {
588
+ v.push(Math.floor(letterCode / 10));
589
+ }
590
+ } else {
591
+ v.push(Number(c));
592
+ }
593
+ }
594
+ var sum = 0;
595
+ var l = v.length;
596
+ for (var i = 0; i < l; i++) {
597
+ if (i % 2 == 0) {
598
+ var d = v[i] * 2;
599
+ sum += Math.floor(d / 10);
600
+ sum += d % 10;
601
+ } else {
602
+ sum += v[i];
603
+ }
604
+ }
605
+ return (10 - sum % 10) % 10;
606
+ };
607
+ exports.isinGenerator = function isinGenerator2() {
608
+ return generateIsin(cusip);
609
+ };
610
+ }
611
+ });
612
+
613
+ // src/basket/basket-schemas.ts
614
+ var schemas = {
615
+ algoType: {
616
+ columns: [
617
+ { name: "algoType", serverDataType: "string" },
618
+ { name: "id", serverDataType: "int" }
619
+ ],
620
+ key: "id",
621
+ table: { module: "BASKET", table: "algoType" }
622
+ },
623
+ basket: {
624
+ columns: [
625
+ { name: "id", serverDataType: "string" },
626
+ { name: "name", serverDataType: "string" },
627
+ { name: "notionalValue", serverDataType: "double" },
628
+ { name: "notionalValueUsd", serverDataType: "double" }
629
+ ],
630
+ key: "id",
631
+ table: { module: "BASKET", table: "basket" }
632
+ },
633
+ basketConstituent: {
634
+ columns: [
635
+ { name: "basketId", serverDataType: "string" },
636
+ { name: "change", serverDataType: "string" },
637
+ { name: "description", serverDataType: "string" },
638
+ { name: "lastTrade", serverDataType: "string" },
639
+ { name: "ric", serverDataType: "string" },
640
+ { name: "ricBasketId", serverDataType: "string" },
641
+ { name: "side", serverDataType: "string" },
642
+ { name: "volume", serverDataType: "string" },
643
+ { name: "weighting", serverDataType: "double" }
644
+ ],
645
+ key: "ricBasketId",
646
+ table: { module: "BASKET", table: "basketConstituent" }
647
+ },
648
+ basketTrading: {
649
+ columns: [
650
+ { name: "basketId", serverDataType: "string" },
651
+ { name: "basketName", serverDataType: "string" },
652
+ { name: "filledPct", serverDataType: "double" },
653
+ { name: "fxRateToUsd", serverDataType: "double" },
654
+ { name: "instanceId", serverDataType: "string" },
655
+ { name: "side", serverDataType: "string" },
656
+ { name: "status", serverDataType: "string" },
657
+ { name: "totalNotional", serverDataType: "double" },
658
+ { name: "totalNotionalUsd", serverDataType: "double" },
659
+ { name: "units", serverDataType: "int" }
660
+ ],
661
+ key: "instanceId",
662
+ table: { module: "BASKET", table: "basketTrading" }
663
+ },
664
+ basketTradingConstituent: {
665
+ columns: [
666
+ { name: "algo", serverDataType: "string" },
667
+ { name: "algoParams", serverDataType: "string" },
668
+ { name: "basketId", serverDataType: "string" },
669
+ { name: "description", serverDataType: "string" },
670
+ { name: "instanceId", serverDataType: "string" },
671
+ { name: "instanceIdRic", serverDataType: "string" },
672
+ { name: "limitPrice", serverDataType: "double" },
673
+ { name: "notionalLocal", serverDataType: "double" },
674
+ { name: "notionalUsd", serverDataType: "double" },
675
+ { name: "pctFilled", serverDataType: "double" },
676
+ { name: "priceSpread", serverDataType: "int" },
677
+ { name: "priceStrategyId", serverDataType: "int" },
678
+ { name: "quantity", serverDataType: "long" },
679
+ { name: "ric", serverDataType: "string" },
680
+ { name: "side", serverDataType: "string" },
681
+ { name: "status", serverDataType: "string" },
682
+ { name: "venue", serverDataType: "string" },
683
+ { name: "weighting", serverDataType: "double" }
684
+ ],
685
+ key: "instanceIdRic",
686
+ table: { module: "BASKET", table: "basketTradingConstituent" }
687
+ },
688
+ basketTradingConstituentJoin: {
689
+ columns: [
690
+ { name: "algo", serverDataType: "string" },
691
+ { name: "algoParams", serverDataType: "string" },
692
+ { name: "ask", serverDataType: "double" },
693
+ { name: "askSize", serverDataType: "double" },
694
+ { name: "basketId", serverDataType: "string" },
695
+ { name: "bid", serverDataType: "double" },
696
+ { name: "bidSize", serverDataType: "double" },
697
+ { name: "close", serverDataType: "double" },
698
+ { name: "description", serverDataType: "string" },
699
+ { name: "instanceId", serverDataType: "string" },
700
+ { name: "instanceIdRic", serverDataType: "string" },
701
+ { name: "last", serverDataType: "double" },
702
+ { name: "limitPrice", serverDataType: "double" },
703
+ { name: "notionalLocal", serverDataType: "double" },
704
+ { name: "notionalUsd", serverDataType: "double" },
705
+ { name: "open", serverDataType: "double" },
706
+ { name: "pctFilled", serverDataType: "double" },
707
+ { name: "phase", serverDataType: "string" },
708
+ { name: "priceSpread", serverDataType: "int" },
709
+ { name: "priceStrategyId", serverDataType: "int" },
710
+ { name: "quantity", serverDataType: "long" },
711
+ { name: "ric", serverDataType: "string" },
712
+ { name: "scenario", serverDataType: "string" },
713
+ { name: "side", serverDataType: "string" },
714
+ { name: "status", serverDataType: "string" },
715
+ { name: "venue", serverDataType: "string" },
716
+ { name: "weighting", serverDataType: "double" }
717
+ ],
718
+ key: "instanceIdRic",
719
+ table: { module: "BASKET", table: "basketTradingConstituentJoin" }
720
+ },
721
+ priceStrategyType: {
722
+ columns: [
723
+ { name: "priceStrategy", serverDataType: "string" },
724
+ { name: "id", serverDataType: "int" }
725
+ ],
726
+ key: "",
727
+ table: { module: "BASKET", table: "priceStrategyType" }
728
+ }
729
+ };
730
+
731
+ // src/simul/simul-schemas.ts
732
+ var schemas2 = {
733
+ instruments: {
734
+ columns: [
735
+ { name: "bbg", serverDataType: "string" },
736
+ { name: "currency", serverDataType: "string" },
737
+ { name: "description", serverDataType: "string" },
738
+ { name: "exchange", serverDataType: "string" },
739
+ { name: "isin", serverDataType: "string" },
740
+ { name: "lotSize", serverDataType: "int" },
741
+ { name: "ric", serverDataType: "string" }
742
+ ],
743
+ key: "ric",
744
+ table: { module: "SIMUL", table: "instruments" }
745
+ },
746
+ instrumentsExtended: {
747
+ columns: [
748
+ { name: "bbg", serverDataType: "string" },
749
+ { name: "currency", serverDataType: "string" },
750
+ { name: "description", serverDataType: "string" },
751
+ { name: "exchange", serverDataType: "string" },
752
+ { name: "isin", serverDataType: "string" },
753
+ { name: "lotSize", serverDataType: "int" },
754
+ { name: "ric", serverDataType: "string" },
755
+ { name: "supported", serverDataType: "boolean" },
756
+ { name: "wishlist", serverDataType: "boolean" },
757
+ { name: "lastUpdated", serverDataType: "long" }
758
+ ],
759
+ key: "ric",
760
+ table: { module: "SIMUL", table: "instruments" }
761
+ },
762
+ instrumentPrices: {
763
+ columns: [
764
+ { name: "ask", serverDataType: "double" },
765
+ { name: "askSize", serverDataType: "double" },
766
+ // type: "int"
767
+ { name: "bbg", serverDataType: "string" },
768
+ { name: "bid", serverDataType: "double" },
769
+ { name: "bidSize", serverDataType: "double" },
770
+ { name: "close", serverDataType: "double" },
771
+ { name: "currency", serverDataType: "string" },
772
+ { name: "description", serverDataType: "string" },
773
+ { name: "exchange", serverDataType: "string" },
774
+ { name: "isin", serverDataType: "string" },
775
+ { name: "last", serverDataType: "double" },
776
+ { name: "lotSize", serverDataType: "int" },
777
+ { name: "open", serverDataType: "double" },
778
+ { name: "phase", serverDataType: "string" },
779
+ { name: "ric", serverDataType: "string" },
780
+ { name: "scenario", serverDataType: "string" }
781
+ ],
782
+ key: "ric",
783
+ table: { module: "SIMUL", table: "instrumentPrices" }
784
+ },
785
+ orders: {
786
+ columns: [
787
+ { name: "ccy", serverDataType: "string" },
788
+ { name: "created", serverDataType: "long" },
789
+ { name: "filledQuantity", serverDataType: "double" },
790
+ { name: "lastUpdate", serverDataType: "long" },
791
+ { name: "orderId", serverDataType: "string" },
792
+ { name: "quantity", serverDataType: "double" },
793
+ { name: "ric", serverDataType: "string" },
794
+ { name: "side", serverDataType: "string" },
795
+ { name: "trader", serverDataType: "string" }
796
+ ],
797
+ key: "orderId",
798
+ table: { module: "SIMUL", table: "orders" }
799
+ },
800
+ childOrders: {
801
+ columns: [
802
+ { name: "account", serverDataType: "string" },
803
+ { name: "averagePrice", serverDataType: "double" },
804
+ { name: "ccy", serverDataType: "string" },
805
+ { name: "exchange", serverDataType: "string" },
806
+ { name: "filledQty", serverDataType: "double" },
807
+ { name: "id", serverDataType: "string" },
808
+ { name: "idAsInt", serverDataType: "int" },
809
+ { name: "lastUpdate", serverDataType: "long" },
810
+ { name: "openQty", serverDataType: "double" },
811
+ { name: "parentOrderId", serverDataType: "string" },
812
+ { name: "price", serverDataType: "double" },
813
+ { name: "quantity", serverDataType: "double" },
814
+ { name: "ric", serverDataType: "string" },
815
+ { name: "side", serverDataType: "string" },
816
+ { name: "status", serverDataType: "string" },
817
+ { name: "strategy", serverDataType: "string" },
818
+ { name: "volLimit", serverDataType: "int" }
819
+ ],
820
+ key: "id",
821
+ table: { module: "SIMUL", table: "childOrders" }
822
+ },
823
+ parentOrders: {
824
+ columns: [
825
+ { name: "account", serverDataType: "string" },
826
+ { name: "algo", serverDataType: "string" },
827
+ { name: "averagePrice", serverDataType: "double" },
828
+ { name: "ccy", serverDataType: "string" },
829
+ { name: "childCount", serverDataType: "int" },
830
+ { name: "exchange", serverDataType: "string" },
831
+ { name: "filledQty", serverDataType: "double" },
832
+ { name: "id", serverDataType: "string" },
833
+ { name: "idAsInt", serverDataType: "int" },
834
+ { name: "lastUpdate", serverDataType: "long" },
835
+ { name: "openQty", serverDataType: "double" },
836
+ { name: "price", serverDataType: "double" },
837
+ { name: "quantity", serverDataType: "double" },
838
+ { name: "ric", serverDataType: "string" },
839
+ { name: "side", serverDataType: "string" },
840
+ { name: "status", serverDataType: "string" },
841
+ { name: "volLimit", serverDataType: "int" }
842
+ ],
843
+ key: "id",
844
+ table: { module: "SIMUL", table: "parentOrders" }
845
+ },
846
+ prices: {
847
+ columns: [
848
+ { name: "ask", serverDataType: "double" },
849
+ { name: "askSize", serverDataType: "double" },
850
+ // type: "int"
851
+ { name: "bid", serverDataType: "double" },
852
+ { name: "bidSize", serverDataType: "double" },
853
+ { name: "close", serverDataType: "double" },
854
+ { name: "last", serverDataType: "double" },
855
+ { name: "open", serverDataType: "double" },
856
+ { name: "phase", serverDataType: "string" },
857
+ { name: "ric", serverDataType: "string" },
858
+ { name: "scenario", serverDataType: "string" }
859
+ ],
860
+ key: "ric",
861
+ table: { module: "SIMUL", table: "prices" }
862
+ }
863
+ };
864
+
865
+ // src/schemas.ts
866
+ var schemas3 = {
867
+ ...schemas,
868
+ ...schemas2
869
+ };
870
+ var allSchemas = {
871
+ ...schemas,
872
+ ...schemas2
873
+ };
874
+ var getAllSchemas = () => schemas3;
875
+ var getSchema = (tableName) => {
876
+ if (allSchemas[tableName]) {
877
+ return allSchemas[tableName];
878
+ }
879
+ throw Error(`getSchema no schema for table ${tableName}`);
880
+ };
881
+
882
+ // src/TickingArrayDataSource.ts
883
+ import {
884
+ ArrayDataSource
885
+ } from "@vuu-ui/vuu-data-local";
886
+
887
+ // ../vuu-utils/src/column-utils.ts
888
+ var metadataKeys = {
889
+ IDX: 0,
890
+ RENDER_IDX: 1,
891
+ IS_LEAF: 2,
892
+ IS_EXPANDED: 3,
893
+ DEPTH: 4,
894
+ COUNT: 5,
895
+ KEY: 6,
896
+ SELECTED: 7,
897
+ count: 8,
898
+ // TODO following only used in datamodel
899
+ PARENT_IDX: "parent_idx",
900
+ IDX_POINTER: "idx_pointer",
901
+ FILTER_COUNT: "filter_count",
902
+ NEXT_FILTER_IDX: "next_filter_idx"
903
+ };
904
+ var { DEPTH, IS_LEAF } = metadataKeys;
905
+
906
+ // ../vuu-utils/src/event-emitter.ts
907
+ function isArrayOfListeners(listeners) {
908
+ return Array.isArray(listeners);
909
+ }
910
+ function isOnlyListener(listeners) {
911
+ return !Array.isArray(listeners);
912
+ }
913
+ var _events;
914
+ var EventEmitter = class {
915
+ constructor() {
916
+ __privateAdd(this, _events, /* @__PURE__ */ new Map());
917
+ }
918
+ addListener(event, listener) {
919
+ const listeners = __privateGet(this, _events).get(event);
920
+ if (!listeners) {
921
+ __privateGet(this, _events).set(event, listener);
922
+ } else if (isArrayOfListeners(listeners)) {
923
+ listeners.push(listener);
924
+ } else if (isOnlyListener(listeners)) {
925
+ __privateGet(this, _events).set(event, [listeners, listener]);
926
+ }
927
+ }
928
+ removeListener(event, listener) {
929
+ if (!__privateGet(this, _events).has(event)) {
930
+ return;
931
+ }
932
+ const listenerOrListeners = __privateGet(this, _events).get(event);
933
+ let position = -1;
934
+ if (listenerOrListeners === listener) {
935
+ __privateGet(this, _events).delete(event);
936
+ } else if (Array.isArray(listenerOrListeners)) {
937
+ for (let i = length; i-- > 0; ) {
938
+ if (listenerOrListeners[i] === listener) {
939
+ position = i;
940
+ break;
941
+ }
942
+ }
943
+ if (position < 0) {
944
+ return;
945
+ }
946
+ if (listenerOrListeners.length === 1) {
947
+ listenerOrListeners.length = 0;
948
+ __privateGet(this, _events).delete(event);
949
+ } else {
950
+ listenerOrListeners.splice(position, 1);
951
+ }
952
+ }
953
+ }
954
+ removeAllListeners(event) {
955
+ if (event && __privateGet(this, _events).has(event)) {
956
+ __privateGet(this, _events).delete(event);
957
+ } else if (event === void 0) {
958
+ __privateGet(this, _events).clear();
959
+ }
960
+ }
961
+ emit(event, ...args) {
962
+ if (__privateGet(this, _events)) {
963
+ const handler = __privateGet(this, _events).get(event);
964
+ if (handler) {
965
+ this.invokeHandler(handler, args);
966
+ }
967
+ }
968
+ }
969
+ once(event, listener) {
970
+ const handler = (...args) => {
971
+ this.removeListener(event, handler);
972
+ listener(...args);
973
+ };
974
+ this.on(event, handler);
975
+ }
976
+ on(event, listener) {
977
+ this.addListener(event, listener);
978
+ }
979
+ hasListener(event, listener) {
980
+ const listeners = __privateGet(this, _events).get(event);
981
+ if (Array.isArray(listeners)) {
982
+ return listeners.includes(listener);
983
+ } else {
984
+ return listeners === listener;
985
+ }
986
+ }
987
+ invokeHandler(handler, args) {
988
+ if (isArrayOfListeners(handler)) {
989
+ handler.slice().forEach((listener) => this.invokeHandler(listener, args));
990
+ } else {
991
+ switch (args.length) {
992
+ case 0:
993
+ handler();
994
+ break;
995
+ case 1:
996
+ handler(args[0]);
997
+ break;
998
+ case 2:
999
+ handler(args[0], args[1]);
1000
+ break;
1001
+ default:
1002
+ handler.call(null, ...args);
1003
+ }
1004
+ }
1005
+ }
1006
+ };
1007
+ _events = new WeakMap();
1008
+
1009
+ // src/makeSuggestions.ts
1010
+ var cachedValues = /* @__PURE__ */ new Map();
1011
+ var getUniqueValues = (table, column, pattern = "") => {
1012
+ let uniqueValues;
1013
+ const cachedEntry = cachedValues.get(table);
1014
+ if (cachedEntry && cachedEntry.has(column)) {
1015
+ uniqueValues = cachedEntry.get(column);
1016
+ } else {
1017
+ const { data, map } = table;
1018
+ const key = map[column];
1019
+ uniqueValues = [];
1020
+ const set = /* @__PURE__ */ new Set();
1021
+ for (const row of data) {
1022
+ const value = row[key];
1023
+ if (!set.has(value)) {
1024
+ set.add(value);
1025
+ uniqueValues.push(value);
1026
+ }
1027
+ }
1028
+ uniqueValues.sort();
1029
+ if (cachedEntry) {
1030
+ cachedEntry.set(column, uniqueValues);
1031
+ } else {
1032
+ cachedValues.set(table, /* @__PURE__ */ new Map([[column, uniqueValues]]));
1033
+ }
1034
+ }
1035
+ return pattern ? uniqueValues.filter((value) => value.toString().startsWith(pattern)) : uniqueValues;
1036
+ };
1037
+ var makeSuggestions = (table, column, pattern) => new Promise((resolve) => {
1038
+ const uniqueValues = getUniqueValues(table, column, pattern);
1039
+ const result = uniqueValues.length > 20 ? uniqueValues == null ? void 0 : uniqueValues.slice(0, 20).map((v) => v.toString()) : uniqueValues.map((v) => v.toString());
1040
+ setTimeout(() => resolve(result), 100);
1041
+ });
1042
+
1043
+ // src/TickingArrayDataSource.ts
1044
+ var _menuRpcServices, _rpcServices, _table;
1045
+ var TickingArrayDataSource = class extends ArrayDataSource {
1046
+ constructor({
1047
+ data,
1048
+ menuRpcServices,
1049
+ rpcServices,
1050
+ table,
1051
+ menu,
1052
+ ...arrayDataSourceProps
1053
+ }) {
1054
+ var _a;
1055
+ if (data === void 0 && table === void 0) {
1056
+ throw Error("TickingArrayDataSource must be constructed with data");
1057
+ }
1058
+ super({
1059
+ ...arrayDataSourceProps,
1060
+ data: (_a = data != null ? data : table == null ? void 0 : table.data) != null ? _a : []
1061
+ });
1062
+ __privateAdd(this, _menuRpcServices, void 0);
1063
+ __privateAdd(this, _rpcServices, void 0);
1064
+ __privateAdd(this, _table, void 0);
1065
+ this._menu = menu;
1066
+ __privateSet(this, _menuRpcServices, menuRpcServices);
1067
+ __privateSet(this, _rpcServices, rpcServices);
1068
+ __privateSet(this, _table, table);
1069
+ if (table) {
1070
+ table.on("insert", this.insert);
1071
+ table.on("update", this.updateRow);
1072
+ }
1073
+ }
1074
+ async subscribe(subscribeProps, callback) {
1075
+ const subscription = super.subscribe(subscribeProps, callback);
1076
+ return subscription;
1077
+ }
1078
+ set range(range) {
1079
+ super.range = range;
1080
+ }
1081
+ get range() {
1082
+ return super.range;
1083
+ }
1084
+ getSelectedRows() {
1085
+ return this.selectedRows.reduce(
1086
+ (rows, selected) => {
1087
+ if (Array.isArray(selected)) {
1088
+ selected.forEach((sel) => {
1089
+ const row = this.data[sel];
1090
+ if (row) {
1091
+ rows.push(row);
1092
+ }
1093
+ });
1094
+ } else {
1095
+ const row = this.data[selected];
1096
+ if (row) {
1097
+ rows.push(row);
1098
+ }
1099
+ }
1100
+ return rows;
1101
+ },
1102
+ []
1103
+ );
1104
+ }
1105
+ applyEdit(row, columnName, value) {
1106
+ var _a;
1107
+ const key = row[metadataKeys.KEY];
1108
+ (_a = __privateGet(this, _table)) == null ? void 0 : _a.update(key, columnName, value);
1109
+ return Promise.resolve(true);
1110
+ }
1111
+ async rpcCall(rpcRequest) {
1112
+ var _a;
1113
+ const rpcService = (_a = __privateGet(this, _rpcServices)) == null ? void 0 : _a.find(
1114
+ (service) => service.rpcName === rpcRequest.rpcName
1115
+ );
1116
+ if (rpcService) {
1117
+ return rpcService.service({
1118
+ ...rpcRequest
1119
+ });
1120
+ } else {
1121
+ console.log(`no implementation for PRC service ${rpcRequest.rpcName}`);
1122
+ }
1123
+ }
1124
+ async menuRpcCall(rpcRequest) {
1125
+ var _a;
1126
+ const rpcService = (_a = __privateGet(this, _rpcServices)) == null ? void 0 : _a.find(
1127
+ (service) => service.rpcName === rpcRequest.rpcName
1128
+ );
1129
+ if (rpcService) {
1130
+ switch (rpcRequest.type) {
1131
+ case "VIEW_PORT_MENUS_SELECT_RPC": {
1132
+ const selectedRows = this.getSelectedRows();
1133
+ return rpcService.service({
1134
+ ...rpcRequest,
1135
+ selectedRows
1136
+ });
1137
+ }
1138
+ default:
1139
+ }
1140
+ }
1141
+ return super.menuRpcCall(rpcRequest);
1142
+ }
1143
+ getTypeaheadSuggestions(column, pattern) {
1144
+ if (__privateGet(this, _table)) {
1145
+ return makeSuggestions(__privateGet(this, _table), column, pattern);
1146
+ } else {
1147
+ throw Error(
1148
+ "cannot call getTypeaheadSuggestions on TickingDataSOurce if table has not been provided"
1149
+ );
1150
+ }
1151
+ }
1152
+ };
1153
+ _menuRpcServices = new WeakMap();
1154
+ _rpcServices = new WeakMap();
1155
+ _table = new WeakMap();
1156
+
1157
+ // src/vuu-row-generator.ts
1158
+ var VuuColumnGenerator = (columnCount) => ["Row No"].concat(
1159
+ Array(columnCount).fill("").map((_, i) => `Column ${i + 1}`)
1160
+ );
1161
+ var DefaultRowGenerator = (columns) => (index) => {
1162
+ return [`row ${index + 1}`].concat(
1163
+ Array(columns.length).fill(true).map((v, j) => `value ${j + 1} @ ${index + 1}`)
1164
+ );
1165
+ };
1166
+ var DefaultColumnGenerator = (columns, columnConfig = {}) => {
1167
+ if (typeof columns === "number") {
1168
+ return [{ name: "row number", width: 150 }].concat(
1169
+ Array(columns).fill(true).map((_, i) => {
1170
+ const name = `column ${i + 1}`;
1171
+ return { name, width: 100, ...columnConfig[name] };
1172
+ })
1173
+ );
1174
+ } else {
1175
+ throw Error("DefaultColumnGenerator must be passed columns (number)");
1176
+ }
1177
+ };
1178
+ var defaultGenerators = {
1179
+ ColumnGenerator: DefaultColumnGenerator,
1180
+ RowGenerator: DefaultRowGenerator
1181
+ };
1182
+ var getColumnAndRowGenerator = (table) => {
1183
+ var _a, _b, _c;
1184
+ const tableName = (_a = table == null ? void 0 : table.table) != null ? _a : "";
1185
+ switch (table == null ? void 0 : table.module) {
1186
+ case "SIMUL": {
1187
+ const { ColumnGenerator, RowGenerator, createUpdateGenerator } = (
1188
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
1189
+ // @ts-ignore
1190
+ (_b = simulDataGenerators[tableName]) != null ? _b : defaultGenerators
1191
+ );
1192
+ return [ColumnGenerator, RowGenerator, createUpdateGenerator];
1193
+ }
1194
+ case "BASKET": {
1195
+ const { ColumnGenerator, RowGenerator, createUpdateGenerator } = (
1196
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
1197
+ // @ts-ignore
1198
+ (_c = basketDataGenerators[tableName]) != null ? _c : defaultGenerators
1199
+ );
1200
+ return [ColumnGenerator, RowGenerator, createUpdateGenerator];
1201
+ }
1202
+ case void 0: {
1203
+ const { ColumnGenerator, RowGenerator } = defaultGenerators;
1204
+ return [ColumnGenerator, RowGenerator];
1205
+ }
1206
+ default:
1207
+ throw Error(
1208
+ `vuu-row-gererator table ${table == null ? void 0 : table.table} was requested but no generator is registered`
1209
+ );
1210
+ }
1211
+ };
1212
+ var populateArray = (count, colGen, rowGen, columns) => {
1213
+ const columnDescriptors = colGen(columns);
1214
+ const generateRow = rowGen(columnDescriptors.map((col) => col.name));
1215
+ const data = [];
1216
+ for (let i = 0; i < count; i++) {
1217
+ const row = generateRow(i);
1218
+ if (row) {
1219
+ data[i] = row;
1220
+ } else {
1221
+ break;
1222
+ }
1223
+ }
1224
+ return data;
1225
+ };
1226
+
1227
+ // src/Table.ts
1228
+ var _data, _dataMap, _indexOfKey, _index, _schema;
1229
+ var Table = class extends EventEmitter {
1230
+ constructor(schema, data, dataMap, updateGenerator) {
1231
+ super();
1232
+ __privateAdd(this, _data, void 0);
1233
+ __privateAdd(this, _dataMap, void 0);
1234
+ __privateAdd(this, _indexOfKey, void 0);
1235
+ __privateAdd(this, _index, /* @__PURE__ */ new Map());
1236
+ __privateAdd(this, _schema, void 0);
1237
+ __privateSet(this, _data, data);
1238
+ __privateSet(this, _dataMap, dataMap);
1239
+ __privateSet(this, _schema, schema);
1240
+ __privateSet(this, _indexOfKey, dataMap[schema.key]);
1241
+ this.buildIndex();
1242
+ updateGenerator == null ? void 0 : updateGenerator.setTable(this);
1243
+ updateGenerator == null ? void 0 : updateGenerator.setRange({ from: 0, to: 100 });
1244
+ }
1245
+ buildIndex() {
1246
+ for (let i = 0; i < __privateGet(this, _data).length; i++) {
1247
+ const key = __privateGet(this, _data)[i][__privateGet(this, _indexOfKey)];
1248
+ __privateGet(this, _index).set(key, i);
1249
+ }
1250
+ }
1251
+ get data() {
1252
+ return __privateGet(this, _data);
1253
+ }
1254
+ get map() {
1255
+ return __privateGet(this, _dataMap);
1256
+ }
1257
+ get schema() {
1258
+ return __privateGet(this, _schema);
1259
+ }
1260
+ insert(row) {
1261
+ const index = __privateGet(this, _data).length;
1262
+ __privateGet(this, _data).push(row);
1263
+ const key = row[__privateGet(this, _indexOfKey)];
1264
+ __privateGet(this, _index).set(key, index);
1265
+ this.emit("insert", row);
1266
+ }
1267
+ findByKey(key) {
1268
+ var _a;
1269
+ const index = (_a = __privateGet(this, _index).get(key)) != null ? _a : -1;
1270
+ return __privateGet(this, _data)[index];
1271
+ }
1272
+ update(key, columnName, value) {
1273
+ const rowIndex = __privateGet(this, _data).findIndex(
1274
+ (row) => row[__privateGet(this, _indexOfKey)] === key
1275
+ );
1276
+ const colIndex = __privateGet(this, _dataMap)[columnName];
1277
+ if (rowIndex !== -1) {
1278
+ const row = __privateGet(this, _data)[rowIndex];
1279
+ const newRow = row.slice();
1280
+ newRow[colIndex] = value;
1281
+ __privateGet(this, _data)[rowIndex] = newRow;
1282
+ this.emit("update", newRow, columnName);
1283
+ }
1284
+ }
1285
+ updateRow(row) {
1286
+ const key = row[__privateGet(this, _indexOfKey)];
1287
+ const rowIndex = __privateGet(this, _data).findIndex(
1288
+ (row2) => row2[__privateGet(this, _indexOfKey)] === key
1289
+ );
1290
+ if (rowIndex !== -1) {
1291
+ __privateGet(this, _data)[rowIndex] = row;
1292
+ this.emit("update", row);
1293
+ }
1294
+ }
1295
+ };
1296
+ _data = new WeakMap();
1297
+ _dataMap = new WeakMap();
1298
+ _indexOfKey = new WeakMap();
1299
+ _index = new WeakMap();
1300
+ _schema = new WeakMap();
1301
+ var buildDataColumnMap = (schema) => Object.values(schema.columns).reduce((map, col, index) => {
1302
+ map[col.name] = index;
1303
+ return map;
1304
+ }, {});
1305
+ var getServerDataType = (columnName, { columns: cols1, table: t1 }, { columns: cols2, table: t2 }) => {
1306
+ const col1 = cols1.find((col) => col.name === columnName);
1307
+ const col2 = cols2.find((col) => col.name === columnName);
1308
+ if (col1 && col2) {
1309
+ if (col1.serverDataType === col2.serverDataType) {
1310
+ return col1.serverDataType;
1311
+ } else {
1312
+ throw Error(
1313
+ `both tables ${t1.table} and ${t2.table} implement column ${columnName}, but with types differ`
1314
+ );
1315
+ }
1316
+ } else if (col1) {
1317
+ return col1.serverDataType;
1318
+ } else if (col2) {
1319
+ return col2.serverDataType;
1320
+ } else {
1321
+ throw Error(`WTF how is this possible`);
1322
+ }
1323
+ };
1324
+ var joinTables = (joinTable, table1, table2, joinColumn) => {
1325
+ const { map: m1, schema: schema1 } = table1;
1326
+ const { map: m2, schema: schema2 } = table2;
1327
+ const k1 = m1[joinColumn];
1328
+ const k2 = m2[joinColumn];
1329
+ const combinedColumns = new Set(
1330
+ [...schema1.columns, ...schema2.columns].map((col) => col.name).sort()
1331
+ );
1332
+ const combinedSchema = {
1333
+ key: joinColumn,
1334
+ table: joinTable,
1335
+ columns: Array.from(combinedColumns).map((columnName) => ({
1336
+ name: columnName,
1337
+ serverDataType: getServerDataType(columnName, schema1, schema2)
1338
+ }))
1339
+ };
1340
+ const data = [];
1341
+ const combinedColumnMap = buildDataColumnMap(combinedSchema);
1342
+ for (const row of table1.data) {
1343
+ const row2 = table2.findByKey(String(row[k1]));
1344
+ if (row2) {
1345
+ const out = [];
1346
+ for (const column of table1.schema.columns) {
1347
+ const value = row[m1[column.name]];
1348
+ out[combinedColumnMap[column.name]] = value;
1349
+ }
1350
+ for (const column of table2.schema.columns) {
1351
+ const value = row2[m2[column.name]];
1352
+ out[combinedColumnMap[column.name]] = value;
1353
+ }
1354
+ data.push(out);
1355
+ }
1356
+ }
1357
+ const newTable = new Table(combinedSchema, data, combinedColumnMap);
1358
+ table1.on("insert", (row) => {
1359
+ const row2 = table2.findByKey(String(row[k1]));
1360
+ if (row2) {
1361
+ const out = [];
1362
+ for (const column of table1.schema.columns) {
1363
+ const value = row[m1[column.name]];
1364
+ out[combinedColumnMap[column.name]] = value;
1365
+ }
1366
+ for (const column of table2.schema.columns) {
1367
+ const value = row2[m2[column.name]];
1368
+ out[combinedColumnMap[column.name]] = value;
1369
+ }
1370
+ newTable.insert(out);
1371
+ }
1372
+ });
1373
+ table2.on("update", (row) => {
1374
+ const keyValue = row[k2];
1375
+ const targetRow = newTable.findByKey(keyValue);
1376
+ if (targetRow) {
1377
+ const updatedRow = targetRow.slice();
1378
+ for (const { name } of table2.schema.columns) {
1379
+ if (row[m2[name]] !== updatedRow[combinedColumnMap[name]]) {
1380
+ updatedRow[combinedColumnMap[name]] = row[m2[name]];
1381
+ }
1382
+ }
1383
+ newTable.updateRow(updatedRow);
1384
+ }
1385
+ });
1386
+ return newTable;
1387
+ };
1388
+
1389
+ // src/data-utils.ts
1390
+ function random(min, max) {
1391
+ min = Math.ceil(min);
1392
+ max = Math.floor(max);
1393
+ return Math.floor(Math.random() * (max - min + 1)) + min;
1394
+ }
1395
+ var nextRandomDouble = (min, max) => min + (max - min) * Math.random();
1396
+ var initBidAsk = (priceMaxDelta, nextRandomDouble2) => {
1397
+ const mid = nextRandomDouble2(0, 1e3);
1398
+ const tempBid = nextRandomDouble2(mid - priceMaxDelta, mid - 1);
1399
+ const ask3 = nextRandomDouble2(mid + 1, mid + priceMaxDelta);
1400
+ const bid3 = tempBid < 0 ? mid : tempBid;
1401
+ const newBid = Math.round(bid3 * 100) / 100;
1402
+ const newAsk = Math.round(ask3 * 100) / 100;
1403
+ return [newBid, newAsk];
1404
+ };
1405
+ var maxAsk = (bid3, ask3, spreadMultipler, priceMaxDelta) => {
1406
+ const spread = ask3 - bid3;
1407
+ return Math.min(
1408
+ ask3 + spreadMultipler * spread,
1409
+ spread / 2 + bid3 + priceMaxDelta
1410
+ );
1411
+ };
1412
+ var minAsk = (bid3, ask3, spreadMultipler, priceMaxDelta) => {
1413
+ return Math.max(bid3 + 1, (ask3 - bid3) / 2 + bid3);
1414
+ };
1415
+ var maxBid = (bid3, ask3, spreadMultipler, priceMaxDelta) => {
1416
+ const result = Math.min(ask3 - 1, (ask3 - bid3) / 2 + bid3);
1417
+ return result < 1 ? bid3 + 1 : result;
1418
+ };
1419
+ var minBid = (bid3, ask3, spreadMultipler, priceMaxDelta) => {
1420
+ const spread = ask3 - bid3;
1421
+ const mid = spread / 2 + bid3;
1422
+ const result = Math.max(
1423
+ bid3 - Math.min(spreadMultipler * spread, 10),
1424
+ mid - priceMaxDelta
1425
+ );
1426
+ return result < 0 ? bid3 : result;
1427
+ };
1428
+ var generateNextBidAsk = (bid3, ask3, spreadMultipler, priceMaxDelta, nextRandomDouble2) => {
1429
+ let tempAsk = ask3;
1430
+ if (Math.abs(bid3 - ask3) <= 1)
1431
+ tempAsk = ask3 + 1;
1432
+ const minBidValue = minBid(bid3, tempAsk, spreadMultipler, priceMaxDelta);
1433
+ const maxBidValue = maxBid(bid3, tempAsk, spreadMultipler, priceMaxDelta);
1434
+ const minAskValue = minAsk(bid3, tempAsk, spreadMultipler, priceMaxDelta);
1435
+ const maxAskValue = maxAsk(bid3, tempAsk, spreadMultipler, priceMaxDelta);
1436
+ const newBid = Math.round(nextRandomDouble2(minBidValue, maxBidValue) * 100) / 100;
1437
+ const newAsk = Math.round(nextRandomDouble2(minAskValue, maxAskValue) * 100) / 100;
1438
+ return [newBid, newAsk];
1439
+ };
1440
+
1441
+ // src/UpdateGenerator.ts
1442
+ var getNewValue = (value) => {
1443
+ const multiplier = random(0, 100) / 1e3;
1444
+ const direction = random(0, 10) >= 5 ? 1 : -1;
1445
+ return value + value * multiplier * direction;
1446
+ };
1447
+ var BaseUpdateGenerator = class {
1448
+ constructor(tickingColumns) {
1449
+ this.updating = false;
1450
+ this.update = () => {
1451
+ var _a;
1452
+ if (this.range && this.table) {
1453
+ const data = (_a = this.table) == null ? void 0 : _a.data;
1454
+ const { bid: bid3, ask: ask3, last: last2, ...rest } = this.tickingColumns;
1455
+ if (data && (data == null ? void 0 : data.length) > 0) {
1456
+ const maxRange = Math.min(this.range.to, data.length);
1457
+ for (let rowIndex = this.range.from; rowIndex < maxRange; rowIndex++) {
1458
+ let updateCount = 0;
1459
+ const shallUpdateRow = random(0, 10) < 2;
1460
+ if (shallUpdateRow) {
1461
+ const rowUpdates = this.table.data[rowIndex];
1462
+ const row = data[rowIndex];
1463
+ if (bid3 !== void 0 && ask3 !== void 0) {
1464
+ const { [bid3]: currentBid, [ask3]: currentAsk } = row;
1465
+ const [newBid, newAsk] = generateNextBidAsk(
1466
+ currentBid,
1467
+ currentAsk,
1468
+ 10,
1469
+ 5,
1470
+ nextRandomDouble
1471
+ );
1472
+ rowUpdates[ask3] = newAsk;
1473
+ rowUpdates[bid3] = newBid;
1474
+ if (last2 !== void 0) {
1475
+ const newLast = Math.round((currentAsk + (newAsk - currentAsk) / 2) * 100) / 100;
1476
+ rowUpdates[last2] = newLast;
1477
+ }
1478
+ }
1479
+ for (const colIdx of Object.values(rest)) {
1480
+ const shallUpdateColumn = random(0, 10) < 5;
1481
+ if (shallUpdateColumn) {
1482
+ updateCount += 1;
1483
+ const newValue = getNewValue(row[colIdx]);
1484
+ if (this.table) {
1485
+ rowUpdates[colIdx] = newValue;
1486
+ }
1487
+ }
1488
+ }
1489
+ if (this.table && updateCount > 0) {
1490
+ this.table.updateRow(rowUpdates);
1491
+ }
1492
+ }
1493
+ }
1494
+ }
1495
+ }
1496
+ if (this.updating) {
1497
+ this.timer = window.setTimeout(this.update, 500);
1498
+ }
1499
+ };
1500
+ this.tickingColumns = tickingColumns;
1501
+ }
1502
+ setRange(range) {
1503
+ this.range = range;
1504
+ if (!this.updating && this.table) {
1505
+ this.startUpdating();
1506
+ }
1507
+ }
1508
+ setTable(table) {
1509
+ this.table = table;
1510
+ }
1511
+ startUpdating() {
1512
+ this.updating = true;
1513
+ this.update();
1514
+ }
1515
+ stopUpdating() {
1516
+ this.updating = false;
1517
+ if (this.timer) {
1518
+ window.clearTimeout(this.timer);
1519
+ this.timer = void 0;
1520
+ }
1521
+ }
1522
+ };
1523
+
1524
+ // src/basket/reference-data/ftse100.ts
1525
+ var ftse100_default = [
1526
+ ["AAL.L", "Anglo American PLC", "436.35 13:13", "5.35 (1.24%)", "5,799,089"],
1527
+ ["ABF.L", "Associated British Foods PLC", "3,435.60 13:12", "7.40 (0.21%)", "86,808"],
1528
+ ["ADM.L", "Admiral Group PLC", "1,627.00 13:13", ""],
1529
+ ["ADN.L", "Aberdeen Asset Management PLC", "334.00 13:13", "2.50 (0.75%)", "806,880"],
1530
+ ["AHT.L", "Ashtead Group PLC", "1,027.00 13:13", "6.00 (0.59%)", "331,255"],
1531
+ ["ANTO.L", "Antofagasta PLC", "484.10 13:13", "11.70 (2.48%)", "1,753,976"],
1532
+ ["ARM.L", "ARM Holdings PLC", "1,058.00 13:13", "3.00 (0.28%)", "475,927"],
1533
+ ["AV.L", "Aviva PLC", "493.97 13:13", "2.23 (0.45%)", "2,226,835"],
1534
+ ["AZN.L", "AstraZeneca PLC", "4,399.50 13:13", "2.50 (0.06%)", "815,133"],
1535
+ ["BA.L", "BAE Systems PLC", "478.10 13:13", "4.30 (0.91%)", "2,039,934"],
1536
+ ["BAB.L", "Babcock International Group PLC", "988.00 13:13", "9.50 (0.97%)", "209,614"],
1537
+ ["BARC.L", "Barclays PLC", "226.30 13:13", "1.15 (0.51%)", "6,575,664"],
1538
+ ["BATS.L", "British American Tobacco PLC", "3,803.50 13:13", "8.50 (0.22%)", "465,110"],
1539
+ ["BDEV.L", "Barratt Developments PLC", "576.00 13:13", "0.50 (0.09%)", "1,044,365"],
1540
+ ["BG.L", "BG Group PLC", "1,013.50 13:13", "5.50 (0.55%)", "1,507,332"],
1541
+ ["BKG.L", "Berkeley Group Holdings (The) PLC", "3,126.00 13:13", "15.00 (0.48%)", "95,071"],
1542
+ ["BLND.L", "British Land Co PLC", "828.06 13:12", "10.44 (1.25%)", "1,802,548"],
1543
+ ["BLT.L", "BHP Billiton PLC", "881.40 13:13", "4.30 (0.49%)", "4,947,287"],
1544
+ ["BNZL.L", "Bunzl PLC", "1,875.40 13:05", "4.60 (0.24%)", "104,541"],
1545
+ ["BP.L", "BP PLC", "381.50 13:13", "2.95 (0.78%)", "10,493,561"],
1546
+ ["BRBY.L", "Burberry Group PLC", "1,269.00 13:13", "7.00 (0.55%)", "295,647"],
1547
+ ["BT-A", "L,BT Group PLC", "489.20 13:13", "3.70 (0.75%)", "3,914,982"],
1548
+ ["CCL.L", "Carnival PLC", "3,426.00 13:12", "22.00 (0.64%)", "86,257"],
1549
+ ["CNA.L", "Centrica PLC", "212.80 13:13", "0.60 (0.28%)", "2,144,540"],
1550
+ ["CPG.L", "Compass Group PLC", "1,054.00 13:08", "5.00 (0.48%)", "1,001,167"],
1551
+ ["CPI.L", "Capita PLC", "1,235.00 13:11", "1.00 (0.08%)", "244,591"],
1552
+ ["CRH.L", "CRH PLC", "1,783.20 13:12", "17.80 (0.99%)", "897,325"],
1553
+ ["DC.L", "DIXONS CARPHONE", "462.10 13:11", ""],
1554
+ ["DGE.L", "Diageo PLC", "1,881.50 13:13", "6.50 (0.34%)", "756,906"],
1555
+ ["DLG.L", "Direct Line Insurance Group PLC", "403.80 13:13", "0.40 (0.10%)", "1,095,340"],
1556
+ ["EXPN.L", "Experian PLC", "1,191.00 13:12", "2.00 (0.17%)", "467,283"],
1557
+ ["EZJ.L", "easyJet PLC", "1,682.00 13:12", "28.00 (1.64%)", "1,191,230"],
1558
+ ["FRES.L", "Fresnillo PLC", "678.50 13:12", "6.50 (0.97%)", "381,871"],
1559
+ ["GFS.L", "G4S PLC", "232.30 13:03", "2.00 (0.85%)", "1,096,551"],
1560
+ ["GKN.L", "GKN PLC", "294.80 13:12", "2.50 (0.86%)", "792,247"],
1561
+ ["GLEN.L", "Glencore PLC", "90.48 13:13", "1.65 (1.86%)", "41,631,528"],
1562
+ ["GSK.L", "GlaxoSmithKline PLC", "1,345.00 13:13", "0.50 (0.04%)", "1,767,356"],
1563
+ ["HIK.L", "Hikma Pharmaceuticals PLC", "2,010.00 13:04", "57.00 (2.92%)", "261,511"],
1564
+ ["HL.L", "Hargreaves Lansdown PLC", "1,488.03 13:12", "9.97 (0.67%)", "372,261"],
1565
+ ["HMSO.L", "Hammerson PLC", "597.50 13:11", "3.50 (0.58%)", "478,301"],
1566
+ ["HSBA.L", "HSBC Holdings PLC", "519.70 13:13", "0.50 (0.10%)", "7,415,629"],
1567
+ ["IAG.L", "International Consolidated Airlines Group SA", "575.40 13:12", "16.10 (2.72%)", "4,311,514"],
1568
+ ["IHG.L", "InterContinental Hotels Group PLC", "2,481.00 13:12", "19.00 (0.76%)", "219,918"],
1569
+ ["III.L", "3i Group PLC", "487.30 13:11", "4.50 (0.92%)", "189,987"],
1570
+ ["IMT.L", "Imperial Tobacco Group PLC", "3,571.00 13:13", "29.00 (0.81%)", "926,816"],
1571
+ ["INTU.L", "intu properties PLC", "319.90 13:09", "4.60 (1.42%)", "514,821"],
1572
+ ["ISAT.L", "Inmarsat PLC", "1,054.44 13:13", "3.44 (0.33%)", "988,089"],
1573
+ ["ITRK.L", "Intertek Group PLC", "2,643.00 13:14", "3.00 (0.11%)", "45,868"],
1574
+ ["ITV.L", "ITV PLC", "267.30 13:14", "2.60 (0.96%)", "3,453,208"],
1575
+ ["JMAT.L", "Johnson Matthey PLC", "2,445.00 13:14", "29.00 (1.20%)", "276,397"],
1576
+ ["KGF.L", "Kingfisher PLC", "346.20 13:14", "4.30 (1.23%)", "1,021,408"],
1577
+ ["LAND.L", "Land Securities Group PLC", "1,239.00 13:13", "7.00 (0.56%)", "384,973"],
1578
+ ["LGEN.L", "Legal & General Group PLC", "266.00 13:14", "1.60 (0.60%)", "1,998,399"],
1579
+ ["LLOY.L", "Lloyds Banking Group PLC", "73.86 13:14", "0.02 (0.03%)", "18,907,878"],
1580
+ ["LSE.L", "London Stock Exchange Group PLC", "2,544.00 13:11", "6.00 (0.24%)", "129,657"],
1581
+ ["MGGT.L", "Meggitt PLC", "386.00 13:15", "3.20 (0.84%)", "611,044"],
1582
+ ["MKS.L", "Marks & Spencer Group PLC", "514.75 13:12", "3.25 (0.63%)", "920,128"],
1583
+ ["MNDI.L", "Mondi PLC", "1,463.00 13:14", "7.00 (0.48%)", "383,546"],
1584
+ ["MRW.L", "Morrison (Wm) Supermarkets PLC", "155.20 13:14", ""],
1585
+ ["NG.L", "National Grid PLC", "926.40 13:14", "1.10 (0.12%)", "1,659,592"],
1586
+ ["NXT.L", "Next PLC", "7,765.00 13:11", "95.00 (1.21%)", "114,062"],
1587
+ ["OML.L", "Old Mutual PLC", "198.50 13:14", "0.40 (0.20%)", "2,040,849"],
1588
+ ["PRU.L", "Prudential PLC", "1,499.50 13:15", "14.00 (0.93%)", "580,870"],
1589
+ ["PSON.L", "Pearson PLC", "794.00 13:09", "5.00 (0.63%)", "1,177,953"],
1590
+ ["RB.L", "Reckitt Benckiser Group PLC", "6,293.00 13:14", "34.00 (0.54%)", "281,172"],
1591
+ ["RBS.L", "Royal Bank of Scotland Group PLC", "313.40 13:14", "2.40 (0.77%)", "2,100,058"],
1592
+ ["RDSA.L", "Royal Dutch Shell PLC", "1,636.00 13:14", "18.00 (1.11%)", "2,467,461"],
1593
+ ["RDSB.L", "Royal Dutch Shell PLC", "1,652.00 13:15", "14.50 (0.89%)", "1,457,434"],
1594
+ ["REL.L", "Reed Elsevier PLC", "1,170.00 13:14", "0.00 (0.00%)", "908,802"],
1595
+ ["RIO.L", "Rio Tinto PLC", "2,235.00 13:15", "21.00 (0.95%)", "2,190,722"],
1596
+ ["RMG.L", "Royal Mail PLC", "453.50 13:14", "1.20 (0.26%)", "995,316"],
1597
+ ["RR.L", "Rolls-Royce Group PLC", "546.63 13:14", "8.38 (1.51%)", "2,792,915"],
1598
+ ["RRS.L", "Randgold Resources Ltd", "3,929.00 13:14", "0.00 (0.00%)", "135,524"],
1599
+ ["RSA.L", "RSA Insurance Group PLC", "437.10 13:14", "0.10 (0.02%)", "395,477"],
1600
+ ["SAB.L", "SABMiller PLC", "4,011.00 13:15", "1.00 (0.02%)", "892,451"],
1601
+ ["SBRY.L", "Sainsbury (J) PLC", "255.80 13:14", "7.40 (2.98%)", "2,395,670"],
1602
+ ["SDR.L", "Schroders PLC", "2,930.00 13:09", "12.00 (0.41%)", "44,674"],
1603
+ ["SGE.L", "Sage Group (The) PLC", "545.50 13:13", "0.50 (0.09%)", "539,717"],
1604
+ ["SHP.L", "Shire PLC", "4,685.00 13:14", "22.00 (0.47%)", "221,318"],
1605
+ ["SKY.L", "SKY", "1,095.00 13:12", "4.00 (0.37%)", "925,016"],
1606
+ ["SL.L", "Standard Life PLC", "399.90 13:14", "3.20 (0.79%)", "861,636"],
1607
+ ["SMIN.L", "Smiths Group PLC", "992.50 13:14", "27.50 (2.70%)", "640,309"],
1608
+ ["SN.L", "Smith & Nephew PLC", "1,110.00 13:14", "9.00 (0.82%)", "480,018"],
1609
+ ["SPD.L", "Sports Direct International PLC", "694.50 13:11", "1.50 (0.22%)", "157,981"],
1610
+ ["SSE.L", "SSE PLC", "1,463.00 13:13", "2.00 (0.14%)", "562,454"],
1611
+ ["STAN.L", "Standard Chartered PLC", "583.00 13:14", "0.60 (0.10%)", "2,018,697"],
1612
+ ["STJ.L", "St James's Place PLC", "964.00 13:14", "11.00 (1.13%)", "418,480"],
1613
+ ["SVT.L", "Severn Trent PLC", "2,199.00 13:12", "1.00 (0.05%)", "95,342"],
1614
+ ["TPK.L", "Travis Perkins PLC", "1,945.00 13:13", "4.00 (0.21%)", "92,916"],
1615
+ ["TSCO.L", "Tesco PLC", "171.54 13:14", "2.54 (1.50%)", "9,831,136"],
1616
+ ["TUI.L", "TUI AG", "1,115.00 13:10", "5.00 (0.45%)", "458,970"],
1617
+ ["TW.L", "Taylor Wimpey PLC", "183.90 13:15", "1.10 (0.59%)", "3,180,729"],
1618
+ ["ULVR.L", "Unilever PLC", "2,791.00 13:14", "29.00 (1.03%)", "824,827"],
1619
+ ["UU.L", "United Utilities Group PLC", "959.00 13:10", "2.50 (0.26%)", "436,911"],
1620
+ ["VOD.L", "Vodafone Group PLC", "224.25 13:15", "1.30 (0.58%)", "17,572,036"],
1621
+ ["WOS.L", "Wolseley PLC", "3,657.00 13:14", "4.00 (0.11%)", "179,536"],
1622
+ ["WPP.L", "WPP PLC", "1,502.00 13:15", "12.00 (0.79%)", "857,887"],
1623
+ ["WTB.L", "Whitbread PLC", "4,484.00 13:16", "60.00 (1.32%)", "141,036"]
1624
+ ];
1625
+
1626
+ // src/basket/reference-data/nasdaq100.ts
1627
+ var nasdaq100_default = [
1628
+ ["Apple Inc", "AAPL", 11.007, 174.94, 0.15, "(0.09%)"],
1629
+ ["Microsoft Corp", "MSFT", 9.61, 316.98, -0.03, "(-0.01%)"],
1630
+ ["Amazon.com Inc", "AMZN", 5.401, 129.31, 0.19, "(0.14%)"],
1631
+ ["NVIDIA Corp", "NVDA", 4.101, 415.74, -0.36, "(-0.09%)"],
1632
+ ["Meta Platforms Inc", "META", 3.729, 299.42, 0.34, "(0.11%)"],
1633
+ ["Tesla Inc", "TSLA", 3.285, 244.13, -0.75, "(-0.31%)"],
1634
+ ["Alphabet Inc", "GOOGL", 3.133, 130.49, 0.24, "(0.18%)"],
1635
+ ["Alphabet Inc", "GOOG", 3.085, 131.49, 0.24, "(0.18%)"],
1636
+ ["Broadcom Inc", "AVGO", 2.896, 833.04, 3.96, "(0.48%)"],
1637
+ ["Costco Wholesale Corp", "COST", 2.137, 557.85, -0.74, "(-0.13%)"],
1638
+ ["PepsiCo Inc", "PEP", 2.096, 174.84, -0.43, "(-0.25%)"],
1639
+ ["Adobe Inc", "ADBE", 2.033, 511.42, -1.48, "(-0.29%)"],
1640
+ ["Cisco Systems Inc", "CSCO", 1.887, 53.68, 0.11, "(0.20%)"],
1641
+ ["Comcast Corp", "CMCSA", 1.633, 45.3, -0.01, "(-0.01%)"],
1642
+ ["Netflix Inc", "NFLX", 1.478, 379.89, 0.08, "(0.02%)"],
1643
+ ["T-Mobile US Inc", "TMUS", 1.43, 140.18, 0.83, "(0.60%)"],
1644
+ ["Advanced Micro Devices Inc", "AMD", 1.348, 96.09, -0.11, "(-0.12%)"],
1645
+ ["Texas Instruments Inc", "TXN", 1.264, 161, 0.69, "(0.43%)"],
1646
+ ["Intel Corp", "INTC", 1.26, 34.19, 0.01, "(0.01%)"],
1647
+ ["Amgen Inc", "AMGN", 1.251, 271.18, 3.48, "(1.30%)"],
1648
+ ["Intuit Inc", "INTU", 1.226, 509, 0.43, "(0.08%)"],
1649
+ ["Honeywell International Inc", "HON", 1.103, 188.67, -1.12, "(-0.59%)"],
1650
+ ["QUALCOMM Inc", "QCOM", 1.046, 107.53, -0.16, "(-0.14%)"],
1651
+ ["Applied Materials Inc", "AMAT", 0.982, 136.32, 0.15, "(0.11%)"],
1652
+ ["Booking Holdings Inc", "BKNG", 0.941, 3, 19.2, -43.3, "(-1.42%)"],
1653
+ ["Starbucks Corp", "SBUX", 0.926, 93.8, 0.12, "(0.12%)"],
1654
+ ["Intuitive Surgical Inc", "ISRG", 0.867, 288.5, 0.3, "(0.10%)"],
1655
+ ["Automatic Data Processing Inc", "ADP", 0.854, 239.45, 0.1, "(0.04%)"],
1656
+ ["Mondelez International Inc", "MDLZ", 0.835, 71.25, 0.82, "(1.16%)"],
1657
+ ["Gilead Sciences Inc", "GILD", 0.814, 75.47, 0.46, "(0.61%)"],
1658
+ ["Vertex Pharmaceuticals Inc", "VRTX", 0.794, 353.67, 4.14, "(1.18%)"],
1659
+ ["Regeneron Pharmaceuticals Inc", "REGN", 0.763, 828.09, 3.25, "(0.39%)"],
1660
+ ["Analog Devices Inc", "ADI", 0.752, 176.82, 1.34, "(0.76%)"],
1661
+ ["Lam Research Corp", "LRCX", 0.702, 620, 0.89, "(0.14%)"],
1662
+ ["Micron Technology Inc", "MU", 0.646, 68.9, 0.02, "(0.03%)"],
1663
+ ["Palo Alto Networks Inc", "PANW", 0.604, 228.7, 0.19, "(0.08%)"],
1664
+ ["Synopsys Inc", "SNPS", 0.587, 447.12, 0.27, "(0.06%)"],
1665
+ ["Charter Communications Inc", "CHTR", 0.581, 441.88, -3.33, "(-0.75%)"],
1666
+ ["MercadoLibre Inc", "MELI", 0.562, 1, 275.5, -1.47, "(-0.11%)"],
1667
+ ["PayPal Holdings Inc", "PYPL", 0.559, 57.9, 0.02, "(0.03%)"],
1668
+ ["CSX Corp", "CSX", 0.54, 31.23, 0.03, "(0.09%)"],
1669
+ ["Cadence Design Systems Inc", "CDNS", 0.539, 230.83, 0.17, "(0.07%)"],
1670
+ ["KLA Corp", "KLAC", 0.53, 456.11, 4.29, "(0.95%)"],
1671
+ ["PDD Holdings Inc ADR", "PDD", 0.521, 95.93, -0.01, "(-0.01%)"],
1672
+ ["Marriott International Inc/MD", "MAR", 0.505, 193.9, -0.46, "(-0.23%)"],
1673
+ ["Monster Beverage Corp", "MNST", 0.498, 54.48, -0.04, "(-0.08%)"],
1674
+ ["Airbnb Inc", "ABNB", 0.491, 132.09, -0.11, "(-0.08%)"],
1675
+ ["O'Reilly Automotive Inc", "ORLY", 0.485, 936.67, 0.65, "(0.07%)"],
1676
+ ["Cintas Corp", "CTAS", 0.446, 505.27, 0.52, "(0.10%)"],
1677
+ ["ASML Holding NV", "ASML", 0.438, 585, -2.1, "(-0.36%)"],
1678
+ ["NXP Semiconductors NV", "NXPI", 0.434, 196.76, -0.04, "(-0.02%)"],
1679
+ ["Workday Inc", "WDAY", 0.414, 235.55, 4.73, "(2.05%)"],
1680
+ ["Lululemon Athletica Inc", "LULU", 0.405, 386.36, -1.69, "(-0.44%)"],
1681
+ ["Keurig Dr Pepper Inc,KDP", 0.404, 33.25, 0.13, "(0.39%)"],
1682
+ ["Fortinet Inc", "FTNT", 0.401, 58.29, 0.05, "(0.09%)"],
1683
+ ["Marvell Technology Inc", "MRVL", 0.388, 52.38, 0.08, "(0.14%)"],
1684
+ ["PACCAR Inc", "PCAR", 0.38, 84.97, 0.04, "(0.04%)"],
1685
+ ["Old Dominion Freight Line Inc", "ODFL", 0.38, 401.01, 0.35, "(0.09%)"],
1686
+ ["Autodesk Inc", "ADSK", 0.379, 204.07, 0.03, "(0.01%)"],
1687
+ ["Kraft Heinz Co/The", "KHC", 0.368, 34.27, 0.11, "(0.31%)"],
1688
+ ["Microchip Technology Inc", "MCHP", 0.36, 77, -0.08, "(-0.10%)"],
1689
+ ["Copart Inc", "CPRT", 0.358, 43.26, 0.1, "(0.22%)"],
1690
+ ["American Electric Power Co Inc", "AEP", 0.357, 79.23, 0.06, "(0.08%)"],
1691
+ ["Paychex Inc", "PAYX", 0.355, 113.01, 0.06, "(0.06%)"],
1692
+ ["Exelon Corp", "EXC", 0.35, 40.28, 0.07, "(0.16%)"],
1693
+ ["ON Semiconductor Corp", "ON", 0.341, 93.87, 0.06, "(0.06%)"],
1694
+ ["AstraZeneca PLC ADR", "AZN", 0.339, 67.35, -0.49, "(-0.72%)"],
1695
+ ["Seagen Inc", "SGEN", 0.336, 212.18, -1.52, "(-0.71%)"],
1696
+ ["Ross Stores Inc", "ROST", 0.335, 111.71, 0.05, "(0.04%)"],
1697
+ ["Moderna Inc", "MRNA", 0.331, 100.32, 0.33, "(0.33%)"],
1698
+ ["Biogen Inc", "BIIB", 0.326, 257.93, 0.25, "(0.10%)"],
1699
+ ["Crowdstrike Holdings Inc", "CRWD", 0.319, 162.85, 0.28, "(0.17%)"],
1700
+ ["IDEXX Laboratories Inc", "IDXX", 0.316, 439.41, 3.72, "(0.85%)"],
1701
+ ["Baker Hughes Co", "BKR", 0.307, 35.44, 0.04, "(0.10%)"],
1702
+ ["Constellation Energy Corp", "CEG", 0.307, 110.41, 0.05, "(0.04%)"],
1703
+ ["Cognizant Technology Solutions Corp", "CTSH", 0.303, 70.19, 0.58, "(0.83%)"],
1704
+ ["Verisk Analytics Inc", "VRSK", 0.303, 242.05, 0.1, "(0.04%)"],
1705
+ ["Dexcom Inc", "DXCM", 0.3, 88.3, 0.8, "(0.92%)"],
1706
+ ["Trade Desk Inc/The", "TTD", 0.293, 76.38, 0.03, "(0.03%)"],
1707
+ ["Xcel Energy Inc", "XEL", 0.284, 59.76, 0.03, "(0.04%)"],
1708
+ ["Electronic Arts Inc", "EA", 0.279, 118.38, -0.63, "(-0.53%)"],
1709
+ ["CoStar Group Inc", "CSGP", 0.277, 78.18, 0.12, "(0.15%)"],
1710
+ ["GLOBALFOUNDRIES Inc", "GFS", 0.273, 57.21, 0.38, "(0.67%)"],
1711
+ ["Fastenal Co", "FAST", 0.268, 54.32, 0.11, "(0.20%)"],
1712
+ ["Atlassian Corp", "TEAM", 0.253, 196.01, 0.55, "(0.28%)"],
1713
+ ["GE HealthCare Technologies Inc", "GEHC", 0.252, 63.78, -0.56, "(-0.86%)"],
1714
+ ["Warner Bros Discovery Inc", "WBD", 0.244, 11.09, -0.02, "(-0.14%)"],
1715
+ ["Diamondback Energy Inc", "FANG", 0.235, 150.7, 0.13, "(0.09%)"],
1716
+ ["Datadog Inc", "DDOG", 0.23, 88.81, 0.05, "(0.06%)"],
1717
+ ["ANSYS Inc", "ANSS", 0.227, 300.6, -2.31, "(-0.76%)"],
1718
+ ["eBay Inc", "EBAY", 0.203, 43.22, 0.09, "(0.20%)"],
1719
+ ["Dollar Tree Inc", "DLTR", 0.201, 104.77, 0.27, "(0.25%)"],
1720
+ ["Align Technology Inc", "ALGN", 0.2, 297.25, -1.31, "(-0.44%)"],
1721
+ ["Zscaler Inc", "ZS", 0.188, 151.8, 0.09, "(0.06%)"],
1722
+ ["Illumina Inc", "ILMN", 0.183, 132.31, -0.13, "(-0.10%)"],
1723
+ ["Walgreens Boots Alliance Inc", "WBA", 0.161, 21.18, 0.06, "(0.28%)"],
1724
+ ["Zoom Video Communications Inc", "ZM", 0.151, 68.57, -0.29, "(-0.41%)"],
1725
+ ["Enphase Energy Inc", "ENPH", 0.148, 120.41, 0.49, "(0.41%)"],
1726
+ ["Sirius XM Holdings Inc", "SIRI", 0.137, 4.05, 0.02, "(0.50%)"],
1727
+ ["JD.com Inc ADR", "JD", 0.117, 30.43, 0.02, "(0.05%)"],
1728
+ ["Lucid Group Inc", "LCID", 0.102, 5.14, 0.03, "(0.49%)"]
1729
+ ];
1730
+
1731
+ // src/basket/reference-data/sp500.ts
1732
+ var sp500_default = [
1733
+ ["Apple Inc", "AAPL", 6.992488, 171.9, 1.47, "(0.86%)"],
1734
+ ["Microsoft Corp", "MSFT", 6.487978, 314.55, 1.76, "(0.56%)"],
1735
+ ["Amazon.com Inc", "AMZN", 3.193379, 126.25, 0.27, "(0.22%)"],
1736
+ ["Nvidia Corp", "NVDA", 2.928461, 433.11, 8.43, "(1.99%)"],
1737
+ ["Alphabet Inc Cl A", "GOOGL", 2.162218, 132.93, 2.39, "(1.83%)"],
1738
+ ["Tesla Inc", "TSLA", 1.854311, 246.56, 6.06, "(2.52%)"],
1739
+ ["Alphabet Inc Cl C", "GOOG", 1.85251, 133.81, 2.35, "(1.78%)"],
1740
+ ["Meta Platforms Inc Class A", "META", 1.847731, 305.93, 8.19, "(2.75%)"],
1741
+ ["Berkshire Hathaway Inc Cl B", "BRK.B", 1.82184, 358.67, 0.89, "(0.25%)"],
1742
+ ["Exxon Mobil Corp", "XOM", 1.343563, 118.97, -1.23, "(-1.03%)"],
1743
+ ["Unitedhealth Group Inc", "UNH", 1.302884, 510.04, 6.31, "(1.25%)"],
1744
+ ["Eli Lilly & Co", "LLY", 1.224046, 546.65, -3.11, "(-0.57%)"],
1745
+ ["Jpmorgan Chase & Co", "JPM", 1.182918, 148.23, 2.45, "(1.68%)"],
1746
+ ["Johnson & Johnson W/d", "JNJ", 1.056344, 156.83, -0.28, "(-0.18%)"],
1747
+ ["Visa Inc Class a Shares", "V", 1.029636, 231.97, 2.47, "(1.08%)"],
1748
+ ["Procter & Gamble Co", "PG", 0.969793, 145.75, -1.59, "(-1.08%)"],
1749
+ ["Broadcom Inc", "AVGO", 0.941177, 835.33, 18.52, "(2.27%)"],
1750
+ ["Mastercard Inc A", "MA", 0.918779, 400.65, 5.17, "(1.31%)"],
1751
+ ["Chevron Corp", "CVX", 0.847353, 170.55, -0.49, "(-0.28%)"],
1752
+ ["Home Depot Inc", "HD", 0.847289, 304.35, 2.53, "(0.84%)"],
1753
+ ["Abbvie Inc", "BBV", 0.754672, 152.14, -0.99, "(-0.65%)"],
1754
+ ["Merck & Co. Inc.", "MRK", 0.736434, 104.2, 0.26, "(0.25%)"],
1755
+ ["Costco Wholesale Corp", "COST", 0.697258, 569.05, 5.52, "(0.98%)"],
1756
+ ["Pepsico Inc", "PEP", 0.651768, 168.92, -0.65, "(-0.38%)"],
1757
+ ["Walmart Inc", "WMT", 0.644449, 161.87, 0.15, "(0.09%)"],
1758
+ ["Adobe Inc", "ADBE", 0.639652, 507.17, 4.57, "(0.91%)"],
1759
+ ["Coca Cola Co", "KO", 0.60801, 55.82, -0.13, "(-0.23%)"],
1760
+ ["Cisco Systems Inc", "CSCO", 0.605326, 53.97, 0.77, "(1.44%)"],
1761
+ ["Accenture Plc Cl A", "ACN", 0.55372, 298.5, -15.9, "(-5.05%)"],
1762
+ ["Salesforce Inc", "CRM", 0.551342, 204.46, 1.73, "(0.85%)"],
1763
+ ["Thermo Fisher Scientific Inc", "TMO", 0.536951, 503.47, 5.18, "(1.04%)"],
1764
+ ["Mcdonald S Corp", "MCD", 0.536457, 265.83, 2.19, "(0.83%)"],
1765
+ ["Bank of America Corp", "BAC", 0.526405, 27.51, 0.24, "(0.86%)"],
1766
+ ["Comcast Corp Class A", "CMCSA", 0.512537, 45.17, 0.57, "(1.27%)"],
1767
+ ["Linde Plc", "LIN", 0.506835, 375.48, 3.47, "(0.93%)"],
1768
+ ["Pfizer Inc", "PFE", 0.506043, 32.09, -0.02, "(-0.05%)"],
1769
+ ["Netflix Inc", "NFLX", 0.467192, 377.77, 0.18, "(0.05%)"],
1770
+ ["Abbott Laboratories", "ABT", 0.462893, 97.52, 1.99, "(2.08%)"],
1771
+ ["Oracle Corp", "ORCL", 0.459877, 106.29, 1.67, "(1.60%)"]
1772
+ ];
1773
+
1774
+ // src/basket/reference-data/hsi.ts
1775
+ var hsi_default = [
1776
+ ["CKH HOLDINGS", "00001.HK", 41.9, 1.15, "+2.822%", "5.15M", "215.13M", 4.38, 0.31, "6.98%", "160.48B"],
1777
+ ["CLP HOLDINGS", "00002.HK", 57.95, -0.1, "-0.172%", "3.32M", "193.19M", 156.62, 1.39, "5.35%", "146.41B"],
1778
+ ["HK & CHINA GAS", "00003.HK", 5.46, 0.13, "+2.439%", "16.16M", "88.00M", 19.43, 1.66, "6.41%", "101.88B"],
1779
+ ["HSBC HOLDINGS,00005.HK", 61.7, 1.1, "+1.815%", "22.19M", "1.37B", 10.54, 0.86, "4.05%", 1, "227.60B"],
1780
+ ["POWER ASSETS", "00006.HK", 37.9, -0.25, "-0.655%", "4.23M", "160.75M", 14.3, 0.93, "7.44%", "80.77B"],
1781
+ ["HANG SENG BANK", "00011.HK", 97.45, 2.95, "+3.122%", "2.54M", "247.44M", 19.69, 1.01, "4.21%", "186.31B"],
1782
+ ["HENDERSON LAND", "00012.HK", 20.65, 0.85, "+4.293%", "5.07M", "103.70M", 10.81, 0.31, "8.72%", "99.97B"],
1783
+ ["SHK PPT", "00016.HK", 83.8, 3.25, "+4.035%", "8.25M", "685.41M", 10.16, 0.4, "5.91%", "242.83B"],
1784
+ ["NEW WORLD DEV", "00017.HK", 15.24, 0.8, "+5.540%", "12.95M", "196.19M", 30.48, 0.18, "13.52%", "38.35B"],
1785
+ ["GALAXY ENT", "00027.HK", 47.15, 1.9, "+4.199%", "11.97M", "560.21M", "No Profit", 3.22, "0.00%", "206.21B"],
1786
+ ["MTR CORPORATION", "00066.HK", 31, 0.8, "+2.649%", "4.68M", "144.86M", 19.5, 1.07, "4.23%", "192.64B"],
1787
+ ["HANG LUNG PPT", "00101.HK", 10.72, 0.56, "+5.512%", "7.68M", "81.99M", 12.61, 0.36, "7.28%", "48.23B"],
1788
+ ["GEELY AUTO", "00175.HK", 9.24, 0.17, "+1.874%", "18.77M", "173.30M", 16.06, 1.15, "2.27%", "92.99B"],
1789
+ ["ALI HEALTH", "00241.HK", 4.88, 0.47, "+10.658%", "53.62M", "257.82M", 108.09, 3.81, "0.00%", "66.04B"],
1790
+ ["CITIC", "00267.HK", 7.2, 0.2, "+2.857%", "11.54M", "82.96M", 2.78, 0.28, "9.04%", "209.45B"],
1791
+ ["WH GROUP", "00288.HK", 4.11, 0.08, "+1.985%", "18.94M", "77.65M", 4.93, 0.7, "7.30%", "52.73B"],
1792
+ ["CHINA RES BEER", "00291.HK", 42.95, 1.2, "+2.874%", "4.83M", "207.98M", 28.41, 4.57, "1.41%", "139.34B"],
1793
+ ["OOIL", "00316.HK", 104.5, -0.4, "-0.381%", "296.54K", "30.98M", 0.89, 0.66, "78.90%", "69.01B"],
1794
+ ["TINGYI", "00322.HK", 10.94, 0.18, "+1.673%", "2.91M", "31.81M", 20.75, 4.09, "9.39%", "61.64B"],
1795
+ ["SINOPEC CORP", "00386.HK", 4.28, -0.01, "-0.233%", "92.43M", "396.61M", 6.94, 0.58, "9.36%", "105.92B"],
1796
+ ["HKEX", "00388.HK", 292.6, 9, "+3.173%", "4.61M", "1.34B", 36.76, 7.46, "2.44%", "370.97B"],
1797
+ ["TECHTRONIC IND", "00669.HK", 76, 1.35, "+1.808%", "5.47M", "414.78M", 16.54, 3.43, "2.43%", "139.45B"],
1798
+ ["CHINA OVERSEAS", "00688.HK", 16.24, 0.52, "+3.308%", "13.15M", "212.60M", 6.76, 0.44, "4.93%", "177.74B"],
1799
+ ["TENCENT", "00700.HK", 306.2, 8.8, "+2.959%", "11.25M", "3.43B", 13.74, 3.6, "0.78%", 2, "926.16B"],
1800
+ ["CHINA UNICOM", "00762.HK", 5.68, -0.05, "-0.873%", "9.23M", "52.77M", 9.16, 0.45, "5.44%", "173.80B"],
1801
+ ["LINK REIT", "00823.HK", 38.4, 1.45, "+3.924%", "12.04M", "460.96M", 5.42, 0.52, "7.03%", "98.38B"],
1802
+ ["CHINA RES POWER", "00836.HK", 14.94, 0.32, "+2.189%", "9.91M", "147.81M", 10.23, 0.87, "3.92%", "71.87B"],
1803
+ ["PETROCHINA", "00857.HK", 5.9, 0, "0.000%", "64.23M", "380.44M", 6.38, 0.7, "8.08%", "124.48B"],
1804
+ ["XINYI GLASS", "00868.HK", 10.14, 0.17, "+1.705%", "3.75M", "38.02M", 8.01, 1.3, "6.11%", "42.22B"],
1805
+ ["ZHONGSHENG HLDG", "00881.HK", 22.05, 1.45, "+7.039%", "6.76M", "147.71M", 7.08, 1.07, "4.94%", "52.72B"],
1806
+ ["CNOOC", "00883.HK", 13.78, -0.02, "-0.145%", "26.37M", "365.08M", 4.03, 0.97, "19.09%", "655.47B"],
1807
+ ["CCB", "00939.HK", 4.42, 0.06, "+1.376%", "233.61M", "1.03B", 3.06, 0.35, "9.93%", 1, "062.64B"],
1808
+ ["CHINA MOBILE", "00941.HK", 65.7, 0.25, "+0.382%", "7.82M", "516.10M", 9.91, 0.96, "6.71%", 1, "404.46B"],
1809
+ ["LONGFOR GROUP", "00960.HK", 14.08, 0.9, "+6.829%", "10.88M", "150.68M", 3.06, 0.55, "9.05%", "92.81B"],
1810
+ ["XINYI SOLAR", "00968.HK", 5.86, 0.28, "+5.018%", "15.99M", "92.88M", 13.64, 1.75, "3.41%", "52.17B"],
1811
+ ["SMIC", "00981.HK", 20.05, 0.25, "+1.263%", "13.10M", "264.32M", 11.17, 1.06, "0.00%", "159.31B"],
1812
+ ["LENOVO GROUP", "00992.HK", 8.07, 0.25, "+3.197%", "33.60M", "270.50M", 7.61, 2.23, "4.71%", "97.87B"],
1813
+ ["CKI HOLDINGS", "01038.HK", 37.05, -0.2, "-0.537%", "1.44M", "53.73M", 12.03, 0.78, "6.83%", "93.35B"],
1814
+ ["HENGAN INT'L", "01044.HK", 24.95, 0.2, "+0.808%", "2.62M", "64.97M", 13.35, 1.32, "6.33%", "28.99B"],
1815
+ ["CHINA SHENHUA", "01088.HK", 25.4, 0.35, "+1.397%", "7.98M", "203.11M", 6.14, 1.13, "11.33%", "85.79B"],
1816
+ ["CSPC PHARMA", "01093.HK", 5.74, 0.05, "+0.879%", "29.29M", "167.41M", 9.96, 2.01, "3.66%", "68.32B"],
1817
+ ["SINOPHARM", "01099.HK", 22.7, 0.2, "+0.889%", "2.07M", "46.80M", 7.37, 0.92, "4.08%", "30.46B"],
1818
+ ["CHINA RES LAND", "01109.HK", 31.2, 1, "+3.311%", "9.88M", "305.88M", 7.02, 0.81, "5.07%", "222.49B"],
1819
+ ["CK ASSET", "01113.HK", 41.25, 1.25, "+3.125%", "8.57M", "352.44M", 6.9, 0.39, "5.53%", "146.47B"],
1820
+ ["SINO BIOPHARM", "01177.HK", 2.83, 0.02, "+0.712%", "26.30M", "74.09M", 18.37, 1.59, "4.24%", "53.21B"],
1821
+ ["CHINA RES MIXC", "01209.HK", 31.6, 1.6, "+5.333%", "3.07M", "96.42M", 28.97, 4.48, "2.87%", "72.13B"],
1822
+ ["BYD COMPANY", "01211.HK", 242, 7, "+2.979%", "3.90M", "938.50M", 37.57, 5.63, "0.53%", "265.72B"],
1823
+ ["AIA", "01299.HK", 63.85, 0.95, "+1.510%", "38.75M", "2.48B", 408.88, 2.53, "2.41%", "735.40B"],
1824
+ ["CHINAHONGQIAO", "01378.HK", 7.67, 0.28, "+3.789%", "13.05M", "99.58M", 7.27, 0.76, "6.65%", "72.68B"],
1825
+ ["ICBC", "01398.HK", 3.77, 0.07, "+1.892%", "233.48M", "881.67M", 3.45, 0.36, "9.08%", "327.21B"],
1826
+ ["XIAOMI-W", "01810.HK", 12.34, 0.62, "+5.290%", "78.53M", "960.98M", 109.39, 1.9, "0.00%", "308.83B"],
1827
+ ["BUD APAC", "01876.HK", 15.46, 0.16, "+1.046%", "16.17M", "250.45M", 28.65, 2.44, "1.91%", "204.74B"],
1828
+ ["SANDS CHINA LTD", "01928.HK", 24, 0.95, "+4.121%", "19.98M", "475.93M", "No Profit", "N/A", "0.00%", "194.24B"],
1829
+ ["CHOW TAI FOOK", "01929.HK", 11.8, 0.28, "+2.431%", "4.88M", "57.68M", 21.93, 3.64, "10.34%", "118.00B"],
1830
+ ["WHARF REIC", "01997.HK", 30.25, 1.4, "+4.853%", "4.23M", "127.31M", "No Profit", 0.48, "4.33%", "91.85B"],
1831
+ ["ANTA SPORTS", "02020.HK", 88.15, 4.4, "+5.254%", "4.82M", "422.51M", 27.71, 6.16, "1.52%", "249.70B"],
1832
+ ["WUXI BIO", "02269.HK", 45.65, 1.55, "+3.515%", "17.91M", "811.49M", 38.18, 4.88, "0.00%", "194.01B"],
1833
+ ["SHENZHOU INTL", "02313.HK", 75, 4.6, "+6.534%", "5.52M", "410.68M", 21.87, 3.25, "2.55%", "112.74B"],
1834
+ ["PING AN", "02318.HK", 44.85, 0.85, "+1.932%", "23.05M", "1.03B", 8.28, 0.85, "6.09%", "334.02B"],
1835
+ ["MENGNIU DAIRY", "02319.HK", 26.25, 1.5, "+6.061%", "8.58M", "223.15M", 17.34, 2.3, "1.73%", "103.42B"],
1836
+ ["LI NING", "02331.HK", 32.95, 1.5, "+4.769%", "22.54M", "738.37M", 18.8, 3.16, "1.58%", "86.86B"],
1837
+ ["SUNNY OPTICAL", "02382.HK", 54.7, 1.05, "+1.957%", "5.62M", "308.60M", 22.01, 2.44, "0.91%", "60.00B"],
1838
+ ["BOC HONG KONG", "02388.HK", 21.45, 0.3, "+1.418%", "6.53M", "140.32M", 8.38, 0.75, "6.33%", "226.79B"],
1839
+ ["CHINA LIFE", "02628.HK", 12.2, 0.24, "+2.007%", "13.53M", "165.07M", 9.49, 0.7, "4.53%", "90.78B"],
1840
+ ["ENN ENERGY", "02688.HK", 65, 1.15, "+1.801%", "3.06M", "198.69M", 11.08, 1.67, "4.48%", "73.53B"],
1841
+ ["ZIJIN MINING", "02899.HK", 11.98, 0.16, "+1.354%", "16.20M", "194.50M", 13.97, 3.14, "1.88%", "68.73B"],
1842
+ ["MEITUAN-W", "03690.HK", 114.6, 3.8, "+3.430%", "19.17M", "2.19B", "No Profit", 4.89, "0.00%", "715.43B"],
1843
+ ["HANSOH PHARMA", "03692.HK", 10.66, 0.16, "+1.524%", "17.56M", "187.72M", 21.48, 2.47, "0.94%", "63.25B"],
1844
+ ["CM BANK", "03968.HK", 32.7, 0.1, "+0.307%", "11.13M", "363.99M", 5.51, 0.86, "6.00%", "150.12B"],
1845
+ ["BANK OF CHINA", "03988.HK", 2.74, 0.05, "+1.859%", "275.47M", "754.54M", 3.33, 0.33, "9.55%", "229.13B"],
1846
+ ["CG SERVICES", "06098.HK", 8.08, 0.25, "+3.193%", "16.08M", "128.87M", 12.42, 0.65, "5.20%", "27.01B"],
1847
+ ["JD HEALTH", "06618.HK", 40.6, 2.95, "+7.835%", "7.75M", "312.36M", 299.91, 2.56, "0.00%", "129.12B"],
1848
+ ["HAIER SMARTHOME", "06690.HK", 24.65, 1.15, "+4.894%", "7.24M", "178.37M", 13.83, 2.21, "2.59%", "70.46B"],
1849
+ ["HAIDILAO", "06862.HK", 21, 0.6, "+2.941%", "6.86M", "143.79M", 74.46, 13.94, "0.55%", "117.05B"],
1850
+ ["JD-SW", "09618.HK", 115.1, 4, "+3.600%", "7.43M", "852.28M", 30.73, 1.5, "6.38%", "360.24B"],
1851
+ ["NONGFU SPRING", "09633.HK", 45, 1.5, "+3.448%", "3.69M", "165.62M", 52.49, 18.63, "1.71%", "226.56B"],
1852
+ ["BIDU-SW", "09888.HK", 133.4, 4.6, "+3.571%", "5.82M", "772.73M", 47.3, 1.5, "0.00%", "377.37B"],
1853
+ ["TRIP.COM-S", "09961.HK", 279.2, 7, "+2.572%", "1.25M", "349.59M", 114.05, 1.4, "0.00%", "176.65B"],
1854
+ ["BABA-SW", "09988.HK", 85.6, 2.6, "+3.133%", "34.61M", "2.96B", 21.65, 1.62, "0.00%", 1, "837.13B"],
1855
+ ["NTES-S", "09999.HK", 159.5, 8.3, "+5.489%", "5.02M", "797.10M", 22.7, 4.63, "1.36%", "546.99B"]
1856
+ ];
1857
+
1858
+ // src/basket/reference-data/constituents.ts
1859
+ var basketConstituentData = [];
1860
+ for (const row of ftse100_default) {
1861
+ const [ric, name, lastTrade, change, volume] = row;
1862
+ const basketId = ".FTSE100";
1863
+ const side = "BUY";
1864
+ const weighting = 1;
1865
+ basketConstituentData.push([basketId, change, name, lastTrade, ric, `${ric}-${basketId}`, side, volume, weighting]);
1866
+ }
1867
+ for (const row of hsi_default) {
1868
+ const [name, ric, lastTrade, change, , volume] = row;
1869
+ const basketId = ".HSI";
1870
+ const side = "BUY";
1871
+ const weighting = 1;
1872
+ basketConstituentData.push([basketId, change, name, lastTrade, ric, `${ric}-${basketId}`, side, volume, weighting]);
1873
+ }
1874
+ for (const row of nasdaq100_default) {
1875
+ const [name, ric, weighting, lastTrade, change] = row;
1876
+ const basketId = ".NASDAQ100";
1877
+ const side = "BUY";
1878
+ const volume = 1e3;
1879
+ basketConstituentData.push([basketId, change, name, lastTrade, ric, `${ric}-${basketId}`, side, volume, weighting]);
1880
+ }
1881
+ for (const row of sp500_default) {
1882
+ const [name, ric, weighting, , change] = row;
1883
+ const basketId = ".SP500";
1884
+ const side = "BUY";
1885
+ const volume = 1e3;
1886
+ const lastTrade = 0;
1887
+ basketConstituentData.push([basketId, change, name, lastTrade, ric, `${ric}-${basketId}`, side, volume, weighting]);
1888
+ }
1889
+ var constituents_default = basketConstituentData;
1890
+
1891
+ // src/basket/reference-data/prices.ts
1892
+ var { bid, bidSize, ask, askSize, last } = buildDataColumnMap(schemas2.prices);
1893
+ var pricesUpdateGenerator = new BaseUpdateGenerator({
1894
+ bid,
1895
+ bidSize,
1896
+ ask,
1897
+ askSize,
1898
+ last
1899
+ });
1900
+ var prices = [];
1901
+ for (const [, , , lastTrade, ric] of constituents_default) {
1902
+ const priceSeed = parseFloat(String(lastTrade));
1903
+ if (!isNaN(priceSeed)) {
1904
+ const [bid3, ask3] = initBidAsk(5, nextRandomDouble);
1905
+ const askSize3 = random(1e3, 3e3);
1906
+ const bidSize3 = random(1e3, 3e3);
1907
+ const close = priceSeed + random(0, 1) / 10;
1908
+ const last2 = priceSeed + random(0, 1) / 10;
1909
+ const open = priceSeed + random(0, 1) / 10;
1910
+ const phase = "C";
1911
+ const scenario = "close";
1912
+ prices.push([
1913
+ ask3,
1914
+ askSize3,
1915
+ bid3,
1916
+ bidSize3,
1917
+ close,
1918
+ last2,
1919
+ open,
1920
+ phase,
1921
+ ric,
1922
+ scenario
1923
+ ]);
1924
+ }
1925
+ }
1926
+ var pricesTable = new Table(
1927
+ schemas2.prices,
1928
+ prices,
1929
+ buildDataColumnMap(schemas2.prices),
1930
+ pricesUpdateGenerator
1931
+ );
1932
+ var prices_default = pricesTable;
1933
+
1934
+ // src/basket/basket-module.ts
1935
+ var buildDataColumnMap2 = (tableName) => Object.values(schemas[tableName].columns).reduce(
1936
+ (map, col, index) => {
1937
+ map[col.name] = index;
1938
+ return map;
1939
+ },
1940
+ {}
1941
+ );
1942
+ var tableMaps = {
1943
+ algoType: buildDataColumnMap2("algoType"),
1944
+ basket: buildDataColumnMap2("basket"),
1945
+ basketTrading: buildDataColumnMap2("basketTrading"),
1946
+ basketTradingConstituent: buildDataColumnMap2("basketTradingConstituent"),
1947
+ basketConstituent: buildDataColumnMap2("basketConstituent"),
1948
+ basketTradingConstituentJoin: buildDataColumnMap2(
1949
+ "basketTradingConstituentJoin"
1950
+ ),
1951
+ priceStrategyType: buildDataColumnMap2("priceStrategyType")
1952
+ };
1953
+ var basketConstituent = new Table(
1954
+ schemas.basketConstituent,
1955
+ constituents_default,
1956
+ tableMaps.basketConstituent
1957
+ );
1958
+ var basketTrading = new Table(
1959
+ schemas.basketTrading,
1960
+ [],
1961
+ tableMaps.basketTrading
1962
+ );
1963
+ var basketIncrement = 1;
1964
+ var basketTradingConstituent = new Table(
1965
+ schemas.basketTradingConstituent,
1966
+ [],
1967
+ tableMaps.basketTradingConstituent
1968
+ );
1969
+ var createBasketTradingRow = (basketId, basketName, side = "BUY", status = "OFF MARKET") => [
1970
+ basketId,
1971
+ basketName,
1972
+ 0,
1973
+ 1.25,
1974
+ `steve-${basketIncrement++}`,
1975
+ side,
1976
+ status,
1977
+ 1e6,
1978
+ 125e4,
1979
+ 100
1980
+ ];
1981
+ function createTradingBasket(basketId, basketName) {
1982
+ const basketTradingRow = createBasketTradingRow(basketId, basketName);
1983
+ basketTrading.insert(basketTradingRow);
1984
+ const { basketId: key } = buildDataColumnMap2("basketConstituent");
1985
+ const constituents = basketConstituent.data.filter(
1986
+ (c) => c[key] === basketId
1987
+ );
1988
+ constituents.forEach(([, , description, , ric, , , quantity, weighting]) => {
1989
+ const algo = "";
1990
+ const algoParams = "";
1991
+ const limitPrice = 95;
1992
+ const notionalLocal = 0;
1993
+ const notionalUsd = 0;
1994
+ const pctFilled = 0;
1995
+ const priceSpread = 0;
1996
+ const priceStrategyId = "";
1997
+ const side = "BUY";
1998
+ const venue = "venue";
1999
+ const { instanceId } = tableMaps.basketTrading;
2000
+ const basketInstanceId = basketTradingRow[instanceId];
2001
+ const basketTradingConstituentRow = [
2002
+ algo,
2003
+ algoParams,
2004
+ basketId,
2005
+ description,
2006
+ basketInstanceId,
2007
+ `${basketInstanceId}-${ric}`,
2008
+ limitPrice,
2009
+ notionalLocal,
2010
+ notionalUsd,
2011
+ pctFilled,
2012
+ priceSpread,
2013
+ priceStrategyId,
2014
+ quantity,
2015
+ ric,
2016
+ side,
2017
+ venue,
2018
+ weighting
2019
+ ];
2020
+ basketTradingConstituent.insert(basketTradingConstituentRow);
2021
+ });
2022
+ }
2023
+ async function addConstituent(rpcRequest) {
2024
+ console.log(`RPC call erceived ${rpcRequest.rpcName}`);
2025
+ }
2026
+ async function sendToMarket(rpcRequest) {
2027
+ const [basketInstanceId] = rpcRequest.params;
2028
+ basketTrading.update(basketInstanceId, "status", "ON_MARKET");
2029
+ }
2030
+ async function takeOffMarket(rpcRequest) {
2031
+ const [basketInstanceId] = rpcRequest.params;
2032
+ basketTrading.update(basketInstanceId, "status", "OFF-MARKET");
2033
+ }
2034
+ async function createNewBasket(rpcRequest) {
2035
+ const {
2036
+ params: [basketId, basketName]
2037
+ } = rpcRequest;
2038
+ createTradingBasket(basketId, basketName);
2039
+ }
2040
+ var tables = {
2041
+ algoType: new Table(
2042
+ schemas.algoType,
2043
+ [
2044
+ ["Sniper", 0],
2045
+ ["Dark Liquidity", 1],
2046
+ ["VWAP", 2],
2047
+ ["POV", 3],
2048
+ ["Dynamic Close", 4]
2049
+ ],
2050
+ tableMaps.algoType
2051
+ ),
2052
+ basket: new Table(
2053
+ schemas.basket,
2054
+ [
2055
+ [".NASDAQ100", ".NASDAQ100", 0, 0],
2056
+ [".HSI", ".HSI", 0, 0],
2057
+ [".FTSE100", ".FTSE100", 0, 0],
2058
+ [".SP500", ".SP500", 0, 0]
2059
+ ],
2060
+ tableMaps.basket
2061
+ ),
2062
+ basketConstituent,
2063
+ basketTrading,
2064
+ basketTradingConstituent,
2065
+ basketTradingConstituentJoin: joinTables(
2066
+ { module: "BASKET", table: "basketTradingConstituentJoin" },
2067
+ basketTradingConstituent,
2068
+ prices_default,
2069
+ "ric"
2070
+ ),
2071
+ priceStrategyType: new Table(
2072
+ schemas.priceStrategyType,
2073
+ [
2074
+ ["Peg to Near Touch", 0],
2075
+ ["Far Touch", 1],
2076
+ ["Limit", 2],
2077
+ ["Algo", 3]
2078
+ ],
2079
+ tableMaps.priceStrategyType
2080
+ )
2081
+ };
2082
+ var menus = {
2083
+ algoType: void 0,
2084
+ basket: {
2085
+ name: "ROOT",
2086
+ menus: [
2087
+ {
2088
+ context: "selected-rows",
2089
+ filter: "",
2090
+ name: "Add Basket",
2091
+ rpcName: "CREATE_NEW_BASKET"
2092
+ }
2093
+ ]
2094
+ },
2095
+ basketConstituent: void 0,
2096
+ basketTrading: void 0,
2097
+ basketTradingConstituent: void 0,
2098
+ basketTradingConstituentJoin: void 0,
2099
+ priceStrategyType: void 0
2100
+ };
2101
+ var services = {
2102
+ algoType: void 0,
2103
+ basket: [
2104
+ {
2105
+ rpcName: "createBasket",
2106
+ service: createNewBasket
2107
+ }
2108
+ ],
2109
+ basketConstituent: void 0,
2110
+ basketTrading: [
2111
+ {
2112
+ rpcName: "sendToMarket",
2113
+ service: sendToMarket
2114
+ },
2115
+ {
2116
+ rpcName: "takeOffMarket",
2117
+ service: takeOffMarket
2118
+ }
2119
+ ],
2120
+ basketTradingConstituent: void 0,
2121
+ basketTradingConstituentJoin: [
2122
+ {
2123
+ rpcName: "addConstituent",
2124
+ service: addConstituent
2125
+ }
2126
+ ],
2127
+ priceStrategyType: void 0
2128
+ };
2129
+ var getColumnDescriptors = (tableName) => {
2130
+ const schema = schemas[tableName];
2131
+ return schema.columns;
2132
+ };
2133
+ var createDataSource = (tableName) => {
2134
+ const columnDescriptors = getColumnDescriptors(tableName);
2135
+ const { key } = schemas[tableName];
2136
+ return new TickingArrayDataSource({
2137
+ columnDescriptors,
2138
+ dataMap: tableMaps[tableName],
2139
+ keyColumn: key,
2140
+ menu: menus[tableName],
2141
+ rpcServices: services[tableName],
2142
+ table: tables[tableName]
2143
+ // updateGenerator: createUpdateGenerator?.(),
2144
+ });
2145
+ };
2146
+ var nullTypeaheadHook = async () => [];
2147
+ var basketModule = {
2148
+ createDataSource,
2149
+ typeaheadHook: () => nullTypeaheadHook
2150
+ };
2151
+ var basket_module_default = basketModule;
2152
+
2153
+ // src/simul/reference-data/instruments.ts
2154
+ var import_isin_generator = __toESM(require_isin_generator());
2155
+
2156
+ // src/simul/reference-data/currencies.ts
2157
+ var currencies = ["CAD", "GBX", "USD", "EUR", "GBP"];
2158
+
2159
+ // src/simul/reference-data/locations.ts
2160
+ var locations = {
2161
+ L: ["London PLC", "XLON/LSE-SETS"],
2162
+ N: ["Corporation", "XNGS/NAS-GSM"],
2163
+ AS: ["B.V.", "XAMS/ENA-MAIN"],
2164
+ OQ: ["Co.", "XNYS/NYS-MAIN"],
2165
+ PA: ["Paris", "PAR/EUR_FR"],
2166
+ MI: ["Milan", "MIL/EUR_IT"],
2167
+ FR: ["Frankfurt", "FR/EUR_DE"],
2168
+ AT: ["Athens", "AT/EUR_GR"]
2169
+ };
2170
+ var suffixes = ["L", "N", "OQ", "AS", "PA", "MI", "FR", "AT"];
2171
+
2172
+ // src/simul/reference-data/lotsizes.ts
2173
+ var lotsizes = [
2174
+ 1,
2175
+ 2,
2176
+ 5,
2177
+ 10,
2178
+ 50,
2179
+ 50,
2180
+ 70,
2181
+ 100,
2182
+ 100,
2183
+ 100,
2184
+ 120,
2185
+ 150,
2186
+ 150,
2187
+ 200,
2188
+ 500,
2189
+ 700,
2190
+ 1e3,
2191
+ 2e3,
2192
+ 2500,
2193
+ 5e3,
2194
+ 1e4
2195
+ ];
2196
+
2197
+ // src/simul/reference-data/instruments.ts
2198
+ var InstrumentColumnMap = {
2199
+ bbg: 0,
2200
+ currency: 1,
2201
+ description: 2,
2202
+ exchange: 3,
2203
+ string: 4,
2204
+ number: 5,
2205
+ ric: 6,
2206
+ price: 7
2207
+ };
2208
+ var instrumentsData = [];
2209
+ var chars = Array.from("ABCEFGHKMNOPQRTUVWYZ");
2210
+ var randomPrice = () => {
2211
+ const price = random(0, 1e4);
2212
+ const multiplier = random(1, 10);
2213
+ return price / multiplier;
2214
+ };
2215
+ for (const char of chars) {
2216
+ for (let i = 0; i < 1e3; i++) {
2217
+ const char2 = chars[random(0, chars.length - 1)];
2218
+ const char3 = chars[random(0, chars.length - 1)];
2219
+ const char4 = chars[random(0, chars.length - 1)];
2220
+ const suffix = suffixes[random(0, suffixes.length - 1)];
2221
+ const ric = char + char2 + char3 + char4 + "." + suffix;
2222
+ const bbg = char + char2 + char3 + char4 + " " + suffix;
2223
+ const description = `${ric} description`;
2224
+ const currency = currencies[random(0, 4)];
2225
+ const isin = (0, import_isin_generator.isinGenerator)();
2226
+ const lotSize = lotsizes[random(0, lotsizes.length - 1)];
2227
+ const exchange = locations[suffix][1];
2228
+ const price = randomPrice();
2229
+ instrumentsData.push([
2230
+ bbg,
2231
+ currency,
2232
+ description,
2233
+ exchange,
2234
+ String(isin),
2235
+ lotSize,
2236
+ ric,
2237
+ price
2238
+ ]);
2239
+ }
2240
+ }
2241
+ var instrumentsTable = new Table(
2242
+ schemas2.instruments,
2243
+ instrumentsData,
2244
+ buildDataColumnMap(schemas2.instruments)
2245
+ );
2246
+ var instruments_default = instrumentsTable;
2247
+
2248
+ // src/simul/reference-data/instruments-extended.ts
2249
+ var instrumentsExtendedData = instrumentsData.map(
2250
+ (row) => row.slice(0, -1).concat([random(0, 1) === 1, random(0, 1) === 1, (/* @__PURE__ */ new Date()).getTime()])
2251
+ );
2252
+ var instrumentsExtendedTable = new Table(
2253
+ schemas2.instrumentsExtended,
2254
+ instrumentsExtendedData,
2255
+ buildDataColumnMap(schemas2.instrumentsExtended)
2256
+ );
2257
+ var instruments_extended_default = instrumentsExtendedTable;
2258
+
2259
+ // src/simul/reference-data/prices.ts
2260
+ var { bid: bid2, bidSize: bidSize2, ask: ask2, askSize: askSize2 } = buildDataColumnMap(schemas2.prices);
2261
+ var pricesUpdateGenerator2 = new BaseUpdateGenerator({
2262
+ bid: bid2,
2263
+ bidSize: bidSize2,
2264
+ ask: ask2,
2265
+ askSize: askSize2
2266
+ });
2267
+ var requiredInstrumentFields = ["ric", "price"];
2268
+ var pricesData = instrumentsData.map((instrument) => {
2269
+ const { ric, price: priceSeed } = requiredInstrumentFields.reduce(
2270
+ (obj, f) => ({ ...obj, [f]: instrument[InstrumentColumnMap[f]] }),
2271
+ {}
2272
+ );
2273
+ const spread = random(0, 10);
2274
+ const ask3 = priceSeed + spread / 2;
2275
+ const askSize3 = random(1e3, 3e3);
2276
+ const bid3 = priceSeed - spread / 2;
2277
+ const bidSize3 = random(1e3, 3e3);
2278
+ const close = priceSeed + random(0, 1) / 10;
2279
+ const last2 = priceSeed + random(0, 1) / 10;
2280
+ const open = priceSeed + random(0, 1) / 10;
2281
+ const phase = "C";
2282
+ const scenario = "close";
2283
+ return [ask3, askSize3, bid3, bidSize3, close, last2, open, phase, ric, scenario];
2284
+ });
2285
+ for (const [, , , lastTrade, ric] of constituents_default) {
2286
+ const priceSeed = parseFloat(String(lastTrade));
2287
+ if (!isNaN(priceSeed)) {
2288
+ const spread = random(0, 10);
2289
+ const ask3 = priceSeed + spread / 2;
2290
+ const askSize3 = random(1e3, 3e3);
2291
+ const bid3 = priceSeed - spread / 2;
2292
+ const bidSize3 = random(1e3, 3e3);
2293
+ const close = priceSeed + random(0, 1) / 10;
2294
+ const last2 = priceSeed + random(0, 1) / 10;
2295
+ const open = priceSeed + random(0, 1) / 10;
2296
+ const phase = "C";
2297
+ const scenario = "close";
2298
+ pricesData.push([
2299
+ ask3,
2300
+ askSize3,
2301
+ bid3,
2302
+ bidSize3,
2303
+ close,
2304
+ last2,
2305
+ open,
2306
+ phase,
2307
+ ric,
2308
+ scenario
2309
+ ]);
2310
+ }
2311
+ }
2312
+ var pricesTable2 = new Table(
2313
+ schemas2.prices,
2314
+ pricesData,
2315
+ buildDataColumnMap(schemas2.prices),
2316
+ pricesUpdateGenerator2
2317
+ );
2318
+ var prices_default2 = pricesTable2;
2319
+
2320
+ // src/simul/simul-module.ts
2321
+ var tables2 = {
2322
+ childOrders: new Table(
2323
+ schemas2.childOrders,
2324
+ [],
2325
+ buildDataColumnMap(schemas2.childOrders)
2326
+ ),
2327
+ instruments: instruments_default,
2328
+ instrumentsExtended: instruments_extended_default,
2329
+ instrumentPrices: joinTables(
2330
+ { module: "SIMUL", table: "instrumentPrices" },
2331
+ instruments_default,
2332
+ prices_default2,
2333
+ "ric"
2334
+ ),
2335
+ orders: new Table(schemas2.orders, [], buildDataColumnMap(schemas2.orders)),
2336
+ parentOrders: new Table(
2337
+ schemas2.parentOrders,
2338
+ [],
2339
+ buildDataColumnMap(schemas2.parentOrders)
2340
+ ),
2341
+ prices: prices_default2
2342
+ };
2343
+ var getColumnDescriptors2 = (tableName) => {
2344
+ const schema = schemas2[tableName];
2345
+ if (schema) {
2346
+ return schema.columns;
2347
+ } else {
2348
+ throw Error(`simul-module no schema found for table SIMUL ${tableName}`);
2349
+ }
2350
+ };
2351
+ var createDataSource2 = (tableName) => {
2352
+ const columnDescriptors = getColumnDescriptors2(tableName);
2353
+ return new TickingArrayDataSource({
2354
+ columnDescriptors,
2355
+ keyColumn: schemas2[tableName].key,
2356
+ table: tables2[tableName]
2357
+ // menu: menus[tableName],
2358
+ // rpcServices: services[tableName],
2359
+ });
2360
+ };
2361
+ var suggestionFetcher = ([
2362
+ vuuTable,
2363
+ column,
2364
+ pattern
2365
+ ]) => {
2366
+ const table = tables2[vuuTable.table];
2367
+ if (table) {
2368
+ return makeSuggestions(table, column, pattern);
2369
+ } else {
2370
+ throw Error(
2371
+ `SIMUL suggestionFetcher, unknown table ${vuuTable.module} ${vuuTable.table}`
2372
+ );
2373
+ }
2374
+ };
2375
+ var simulModule = {
2376
+ createDataSource: createDataSource2,
2377
+ typeaheadHook: () => suggestionFetcher
2378
+ };
2379
+ var simul_module_default = simulModule;
2380
+
2381
+ // src/vuu-modules.ts
2382
+ var vuuModules = {
2383
+ BASKET: basket_module_default,
2384
+ SIMUL: simul_module_default
2385
+ };
2386
+ var vuuModule = (moduleName) => vuuModules[moduleName];
2387
+ export {
2388
+ DefaultColumnGenerator,
2389
+ DefaultRowGenerator,
2390
+ TickingArrayDataSource,
2391
+ VuuColumnGenerator,
2392
+ createBasketTradingRow,
2393
+ getAllSchemas,
2394
+ getColumnAndRowGenerator,
2395
+ getSchema,
2396
+ populateArray,
2397
+ schemas3 as schemas,
2398
+ vuuModule
2399
+ };
2
2400
  //# sourceMappingURL=index.js.map