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