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