UNPKG

lit-securities-utility

Version:

A utility package for securities applications

531 lines (530 loc) 24.4 kB
const ee = "Invalid or No Security master URL provided", te = "Security master isn't downloaded or initialized", H = "SECURITY_MASTER_INITIALIZED"; var o = /* @__PURE__ */ ((e) => (e.MASTER_DATA = "MASTER_DATA", e.SCRIPT_ID_INDEX = "SCRIPT_ID_INDEX", e.SEARCH_STRING_INDEX = "SEARCH_STRING_INDEX", e.DERIVATIVES_INDEX = "DERIVATIVES_INDEX", e.ISIN_CODE_INDEX = "ISIN_CODE_INDEX", e.IS_SECURITY_MASTER_INITIALIZED = "IS_SECURITY_MASTER_INITIALIZED", e))(o || {}); let l = {}; function ne(e) { if (e) { for (const t in e) if (Object.prototype.hasOwnProperty.call(e, t)) switch (t) { case o.MASTER_DATA: re(e[t]); break; case o.SCRIPT_ID_INDEX: se(e[t]); break; case o.DERIVATIVES_INDEX: ae(e[t]); break; case o.SEARCH_STRING_INDEX: ie( e[t] ); break; case o.ISIN_CODE_INDEX: oe(e[t]); break; } } } function re(e) { l[o.MASTER_DATA] = e; } function se(e) { l[o.SCRIPT_ID_INDEX] = e; } function ae(e) { l[o.DERIVATIVES_INDEX] = e; } function oe(e) { l[o.ISIN_CODE_INDEX] = e; } function ie(e) { l[o.SEARCH_STRING_INDEX] = e; } function j() { return l[o.MASTER_DATA] || {}; } function ce() { return l[o.SCRIPT_ID_INDEX] || {}; } function fe() { return l[o.DERIVATIVES_INDEX] || {}; } function le() { return l[o.SEARCH_STRING_INDEX] || {}; } function W() { return l[o.ISIN_CODE_INDEX] || {}; } function Ie() { l[o.IS_SECURITY_MASTER_INITIALIZED] = !0; } function F() { return l[o.IS_SECURITY_MASTER_INITIALIZED]; } const G = '(function(){"use strict";const C="ASL_SEC_MASTER",p="x-amz-meta-md5";async function x(e,n=259200){const s={headers:new Headers({"Cache-Control":`max-age=${n}`})},t=new URL("/lastContentHash",self.location.origin).toString(),a=await caches.open(C),I=new Response(e,s);await a.put(t,I)}async function U(){const e=new URL("/lastContentHash",self.location.origin).toString();return await(await(await caches.open(C)).match(e))?.text()}async function f(e){return await U()===e}function A(e){return e?e[p]:""}async function O(e){const s=await(await caches.open(C)).match(e);if(s)return await s.json()}async function H(e,n){const s=await caches.open(C),t={headers:new Headers({"Cache-Control":"max-age=259200"})},a=new Response(JSON.stringify(n),t);await s.put(e,a)}const w="INDEXES_CREATED",g=[{name:"NSE_EQ_EQUITY",type:"FLAT_EQUITY"},{name:"BSE_EQ_EQUITY",type:"FLAT_EQUITY"},{name:"NSE_FO_FUTSTK",type:"NESTED"},{name:"NSE_FO_FUTIDX",type:"NESTED"},{name:"NSE_FO_OPTIDX",type:"NESTED"},{name:"NSE_FO_OPTSTK",type:"NESTED"},{name:"NSE_CURR_FUTCUR",type:"NESTED"},{name:"NSE_CURR_OPTCUR",type:"NESTED"},{name:"MCX_COMM_OPTFUT",type:"NESTED"},{name:"MCX_COMM_FUTCOM",type:"NESTED"},{name:"NCDEX_COMM_OPTFUT",type:"NESTED"},{name:"NCDEX_COMM_FUTCOM",type:"NESTED"},{name:"NSE_CURR_UNDERLYING",type:"FLAT_UNDERLYING"},{name:"MCX_COMM_UNDERLYING",type:"FLAT_UNDERLYING"},{name:"NCDEX_COMM_UNDERLYING",type:"FLAT_UNDERLYING"},{name:"NSE_EQ_UNDERLYING",type:"FLAT_UNDERLYING"},{name:"BSE_EQ_UNDERLYING",type:"FLAT_UNDERLYING"}],y=()=>{const e={};return{addRow:(t,a,I,T,E)=>{const c=(E&&E||I)[0],r=[t,a];T&&r.push(3,T),e[c]=r},getIndex:()=>e}},F=()=>{const e={};return{addRow:(t,a,I,T,E)=>{if(E||t.includes("UNDERLYING"))return;let d=I;const c=d[0],r=d[3],i=d[6];r==="N"||!(i&&i!=="0")||(e[i]||(e[i]=[]),e[i].push(c))},getIndex:()=>e}},M=["FUTSTK","FUTIDX","FUTCUR","FUTCOM"],L=["OPTSTK","OPTCUR","OPTFUT","OPTIDX"],X=()=>{const e={};return{addRow:(t,a,I,T,E)=>{if(!E)return;const c=I[1],r=E[0];if(E[3]==="N"||!c)return;e[c]||(e[c]={FUTURES:[],OPTIONS:[]});const[R,_,N]=t.split("_"),o=M.includes(N)&&"FUTURES"||L.includes(N)&&"OPTIONS"||void 0;o&&e[c][o].push(r)},getIndex:()=>e}},S={min:1,max:25e3,chunkIndex:0},D={min:25001,max:125e3,chunkIndex:1},u={min:125001,max:15e4,chunkIndex:2},P={chunkIndex:3},G=100;function Y(e){const n=e||G;return n>=S.min&&n<=S.max?S.chunkIndex:n>=D.min&&n<=D.max?D.chunkIndex:n>=u.min&&n<=u.max?u.chunkIndex:P.chunkIndex}const k=()=>{const e={};return{addRow:(t,a,I,T,E)=>{let d,c,r,i,R;if(t.includes("EQUITY")){const o=I;d=o[4],R=o[3],c=o[13],r=o[14],i=[t,a]}else if(t.includes("UNDERLYING")){const o=I;d=o[4],R=o[3],c=o[11],r=o[12],i=[t,a]}else d=I[0],R=E[3],c=E[12],r=E[13],i=[t,a,3,T];if(R==="N")return;const _={exchangeSymbol:d,searchString:c,searchPriority:r,data:i},N=Y(r);e[N]||(e[N]=[]),e[N].push(_)},getIndex:()=>e}};var h=(e=>(e.MASTER_DATA="MASTER_DATA",e.SCRIPT_ID_INDEX="SCRIPT_ID_INDEX",e.SEARCH_STRING_INDEX="SEARCH_STRING_INDEX",e.DERIVATIVES_INDEX="DERIVATIVES_INDEX",e.ISIN_CODE_INDEX="ISIN_CODE_INDEX",e.IS_SECURITY_MASTER_INITIALIZED="IS_SECURITY_MASTER_INITIALIZED",e))(h||{});const v=async e=>{try{const n=await fetch(e,{method:"HEAD",mode:"no-cors",headers:{"Cache-Control":"no-cache",Pragma:"no-cache",Expires:"0"}});if(n)return n?.headers}catch(n){console.log(n,"header errors")}return null},Q=async(e,n)=>{const s=await v(e),t=A(s),a=await f(t),I=await O(e);if(a&&I){m(I,n);return}const T=await fetch(e,{method:"GET"}),{headers:E={}}=T,d=A(E),c=await T.json();H(e,c),x(d),m(c,n)};function m(e,n){const s=V(e,n),t={[h.MASTER_DATA]:e,[h.SCRIPT_ID_INDEX]:s.scriptIdIndex,[h.DERIVATIVES_INDEX]:s.derivativesIndex,[h.ISIN_CODE_INDEX]:s.isinCodeIndex,[h.SEARCH_STRING_INDEX]:s.searchStringIndex};self.postMessage({action:w,data:t})}const V=(e,n)=>{let s=[y(),F(),X()];n&&n.requireSearchModule&&s.push(k());for(const c of g){const r=c.name,i=e[r];if(i)if(c.type==="FLAT_EQUITY"||c.type==="FLAT_UNDERLYING"){const R=i.length;for(let _=0;_<R;_++){const N=i[_];s.map(o=>o?.addRow(r,_,N))}}else{const R=i.length;for(let _=0;_<R;_++){const N=i[_],o=N[3],K=o.length;for(let l=0;l<K;l++){const W=o[l];s.map(j=>j?.addRow(r,_,N,l,W))}}}}const t=s.map(c=>c?.getIndex()),a=t[0],I=t[1],T=t[2],E=t[3];return{scriptIdIndex:a,isinCodeIndex:I,derivativesIndex:T,searchStringIndex:E}};self.onmessage=e=>{const{action:n,data:s}=e.data;if(n==="INIT"){const{config:t,secMasterURL:a}=s;Q(a,t)}}})();\n', Y = typeof self < "u" && self.Blob && new Blob([G], { type: "text/javascript;charset=utf-8" }); function de(e) { let t; try { if (t = Y && (self.URL || self.webkitURL).createObjectURL(Y), !t) throw ""; const n = new Worker(t, { name: e?.name }); return n.addEventListener("error", () => { (self.URL || self.webkitURL).revokeObjectURL(t); }), n; } catch { return new Worker( "data:text/javascript;charset=utf-8," + encodeURIComponent(G), { name: e?.name } ); } finally { t && (self.URL || self.webkitURL).revokeObjectURL(t); } } class ue { /** * Web Worker instance responsible for downloading and processing security master data * * @private * @type {Worker} * Handles background tasks including data fetching and processing without blocking the main thread */ worker; onsuccess; onerror; /** * Creates an instance of DownloadManager. * * @param {string} secMasterURL - The URL to fetch the security master data from. Must be a valid URL. * @param {IConfig} config - Configuration object defining the worker's behavior. * @throws Will throw an error if the worker cannot be initialized due to invalid arguments or browser restrictions. */ constructor(t, n) { this.worker = new de(); const { onsuccess: r, onerror: s, ...a } = n; this.onsuccess = r, this.onerror = s, this.worker.postMessage({ action: "INIT", data: { secMasterURL: t, config: a } }), this.worker.onmessage = this.onMessage, this.worker.onerror = this.onError, this.onsuccess = n.onsuccess, this.onerror = n.onerror; } /** * Handles messages received from the worker. * * @param {MessageEvent<TMessageEvent>} event - The event object containing the message data from the worker. * Processes the 'INDEXES_CREATED' action to: * - Add the processed security master data with indexes to the application's store. * - Update the security master initialization status in the application's state. * - Dispatch the `SECURITY_MASTER_INITIALIZED` event to notify the system. * */ onMessage = (t) => { const { action: n } = t.data; if (n === "INDEXES_CREATED") { const r = t.data?.data; ne(r), Ie(), dispatchEvent(new Event(H)), this.onsuccess?.(); } }; /** * Handles errors from the worker. * * Logs the error and provides a grouped console output for easier debugging. * Developers should monitor for this in case of unexpected worker behavior. * */ onError = (t) => { this.onerror?.(t); }; } const Ee = { requireSearchModule: !1 }; function _e(e, t = Ee) { new ue(e, t); } function he(e, t = 100) { const n = /* @__PURE__ */ new Map(); return function(...r) { const s = JSON.stringify(r); if (n.has(s)) { const i = n.get(s); return n.delete(s), n.set(s, i), i; } const a = e(...r); if (n.set(s, a), n.size > t) { const i = n.keys().next().value; i && n.delete(i); } return a; }; } const Se = (e, t) => { const n = ce(); if (!n) { console.warn("ScriptIdIndex not found in store"); return; } const r = n[e]; if (r) return V(r, t); }, B = he(Se, 100), b = (e, t) => e ? e.map((r) => B(r, t)).filter((r) => r !== void 0) : [], me = (e, t) => { const n = W(); if (!e) return []; if (!n) { console.warn("isinCodeIndex not found in store"); return; } const r = n[e]; return b(r, t); }, we = (e, t = "BOTH", n) => { const r = B(e, n); if (!r) return {}; const { underlying: s, isinCode: a, exchange: i, instrumentType: u } = r; let c = s; if (!c) { if (i === "NSE" && u === "EQUITY" && (c = e), !a) return {}; const d = W(); if (!d) return console.warn("isinCodeIndex not found in store"), {}; i === "BSE" && (c = (d && d[a]).filter( (E) => E !== e )[0]); } const I = fe(); if (!I) return console.warn("derivativesIndex not found in store"), {}; const f = c && I[c] || null; if (f) return t === "BOTH" ? { FUTURES: b(f.FUTURES, n), OPTIONS: b(f.OPTIONS, n) } : t === "FUTURES" ? { FUTURES: b(f.FUTURES, n) } : { OPTIONS: b(f.OPTIONS, n) }; }, V = (e, t = []) => { const { instrumentType: n } = O(e[0]); let r; return n === "EQUITY" ? r = ge(e) : n === "UNDERLYING" ? r = Te(e) : r = ve(e), t.length && r ? Object.fromEntries( t.filter((a) => a in r).map((a) => [a, r[a]]) ) : r; }, O = (e) => { const [t, n, r] = e.split("_"); return { segment: n, exchange: t, instrumentType: r }; }, ge = (e) => { const t = j(); if (!t) { console.warn("masterData not found in store"); return; } const [n, r] = e, { segment: s, exchange: a, instrumentType: i } = O(n), c = t[n][r], [ I, f, d, S, _, E, h, g, T, v, p, R, N, D, x, m, w, y, C, A, U, L, k, M, X ] = c; return { segment: s, exchange: a, instrumentType: i, scriptId: I, odinTokenId: f, exchangeSecurityId: d, aslAllowed: S, exchangeSymbol: _, exchangeSeries: E, isinCode: h, coName: g, lotSize: T, tickSize: v, nriAllowed: p, closePrice: R, assetClass: N, searchable: D, searchPriority: x, yesterdayOpenInt: m, maxSingleOrderQty: w, underlying: y, asmFlag: C, odinLlfcSegmentId: A, cmotsCoCode: U, dprLow: L, dprHigh: k, fiftyTwoWeekLow: M, fiftyTwoWeekHigh: X }; }, Te = (e) => { const t = j(); if (!t) { console.warn("masterData not found in store"); return; } const [n, r] = e, { segment: s, exchange: a, instrumentType: i } = O(n), c = t[n][r], [ I, f, d, S, _, E, h, g, T, v, p, R, N, D, x, m, w, y, C, A, U, L ] = c; return { segment: s, exchange: a, instrumentType: i, scriptId: I, odinTokenId: f, exchangeSecurityId: d, aslAllowed: S, exchangeSymbol: _, coName: E, lotSize: h, tickSize: g, nriAllowed: T, closePrice: v, assetClass: p, searchable: R, searchPriority: N, yesterdayOpenInt: D, underlying: x, asmFlag: m, odinLlfcSegmentId: w, cmotsCoCode: y, dprLow: C, dprHigh: A, fiftyTwoWeekLow: U, fiftyTwoWeekHigh: L }; }, ve = (e) => { const t = j(); if (!t) { console.warn("masterData not found in store"); return; } const [ n, r, s, a ] = e, { segment: i, exchange: u, instrumentType: c } = O(n), f = t[n][r], [d, S, _, E] = f, h = E[a]; if (h) { const [ g, T, v, p, R, N, D, x, m, w, y, C, A, U, L, k, M, X, P, K, Z, q, $, J ] = h; return { segment: i, exchange: u, instrumentType: c, exchangeSymbol: d, assetClass: _, scriptId: g, odinTokenId: T, exchangeSecurityId: v, aslAllowed: p, coName: R, expiryDate: N, strikePrice: D, optionType: x, lotSize: m, tickSize: w, nriAllowed: y, closePrice: C, searchable: A, searchPriority: U, yesterdayOpenInt: L, maxSingleOrderQty: k, underlying: M, asmFlag: X, odinLlfcSegmentId: P, cmotsCoCode: K, dprLow: Z, dprHigh: q, fiftyTwoWeekLow: $, fiftyTwoWeekHigh: J }; } }, pe = { init: "INITIALIZE" }, Q = `(function(){"use strict";function ie(w){return w&&w.__esModule&&Object.prototype.hasOwnProperty.call(w,"default")?w.default:w}var U={exports:{}},te=U.exports,Y;function fe(){return Y||(Y=1,function(w){((S,_)=>{w.exports?w.exports=_():S.fuzzysort=_()})(te,S=>{var _=(n,e)=>{if(n=="farzher")return{target:"farzher was here (^-^*)/",score:0,_indexes:[0]};if(!n||!e)return c;var a=ne(n);T(e)||(e=R(e));var i=a.bitflags;return(i&e._bitflags)!==i?c:A(a,e)},E=(n,e,a)=>{if(n=="farzher")return[{target:"farzher was here (^-^*)/",score:0,_indexes:[0],obj:e?e[0]:c}];if(!n)return a&&a.all?le(n,e,a):V;var i=ne(n),t=i.bitflags;i.containsSpace;var f=a&&a.threshold||K,s=a&&a.limit||$,r=0,o=0,v=e.length;if(a&&a.key)for(var l=a.key,g=0;g<v;++g){var d=e[g],u=M(d,l);if(u&&(T(u)||(u=R(u)),(t&u._bitflags)===t)){var x=A(i,u);x!==c&&(x.score<f||(x={target:x.target,_targetLower:"",_targetLowerCodes:c,_nextBeginningIndexes:c,_bitflags:0,score:x.score,_indexes:x._indexes,obj:d},r<s?(m.add(x),++r):(++o,x.score>m.peek().score&&m.replaceTop(x))))}}else if(a&&a.keys)for(var N=a.scoreFn||_e,F=a.keys,X=F.length,g=0;g<v;++g){for(var d=e[g],b=new Array(X),y=0;y<X;++y){var l=F[y],u=M(d,l);if(!u){b[y]=c;continue}T(u)||(u=R(u)),(t&u._bitflags)!==t?b[y]=c:b[y]=A(i,u)}b.obj=d;var h=N(b);h!==c&&(h<f||(b.score=h,r<s?(m.add(b),++r):(++o,h>m.peek().score&&m.replaceTop(b))))}else for(var g=0;g<v;++g){var u=e[g];if(u&&(T(u)||(u=R(u)),(t&u._bitflags)===t)){var x=A(i,u);x!==c&&(x.score<f||(r<s?(m.add(x),++r):(++o,x.score>m.peek().score&&m.replaceTop(x))))}}if(r===0)return V;for(var W=new Array(r),g=r-1;g>=0;--g)W[g]=m.poll();return W.total=r+o,W},I=(n,e,a)=>{if(typeof e=="function")return O(n,e);if(n===c)return c;e===void 0&&(e="<b>"),a===void 0&&(a="</b>");var i="",t=0,f=!1,s=n.target,r=s.length,o=n._indexes;o=o.slice(0,o.len).sort((g,d)=>g-d);for(var v=0;v<r;++v){var l=s[v];if(o[t]===v){if(++t,f||(f=!0,i+=e),t===o.length){i+=l+a+s.substr(v+1);break}}else f&&(f=!1,i+=a);i+=l}return i},O=(v,e)=>{if(v===c)return c;var a=v.target,i=a.length,t=v._indexes;t=t.slice(0,t.len).sort((d,u)=>d-u);for(var f="",s=0,r=0,o=!1,v=[],l=0;l<i;++l){var g=a[l];if(t[r]===l){if(++r,o||(o=!0,v.push(f),f=""),r===t.length){f+=g,v.push(e(f,s++)),f="",v.push(a.substr(l+1));break}}else o&&(o=!1,v.push(e(f,s++)),f="");f+=g}return v},p=n=>n._indexes.slice(0,n._indexes.len).sort((e,a)=>e-a),k=n=>{typeof n!="string"&&(n="");var e=D(n);return{target:n,_targetLower:e._lower,_targetLowerCodes:e.lowerCodes,_nextBeginningIndexes:c,_bitflags:e.bitflags,score:c,_indexes:[0],obj:c}},re=n=>{typeof n!="string"&&(n=""),n=n.trim();var e=D(n),a=[];if(e.containsSpace){var i=n.split(/\\s+/);i=[...new Set(i)];for(var t=0;t<i.length;t++)if(i[t]!==""){var f=D(i[t]);a.push({lowerCodes:f.lowerCodes,_lower:i[t].toLowerCase(),containsSpace:!1})}}return{lowerCodes:e.lowerCodes,bitflags:e.bitflags,containsSpace:e.containsSpace,_lower:e._lower,spaceSearches:a}},R=n=>{if(n.length>999)return k(n);var e=q.get(n);return e!==void 0||(e=k(n),q.set(n,e)),e},ne=n=>{if(n.length>999)return re(n);var e=Z.get(n);return e!==void 0||(e=re(n),Z.set(n,e)),e},le=(n,e,a)=>{var i=[];i.total=e.length;var t=a&&a.limit||$;if(a&&a.key)for(var f=0;f<e.length;f++){var s=e[f],r=M(s,a.key);if(r){T(r)||(r=R(r)),r.score=K,r._indexes.len=0;var o=r;if(o={target:o.target,_targetLower:"",_targetLowerCodes:c,_nextBeginningIndexes:c,_bitflags:0,score:r.score,_indexes:c,obj:s},i.push(o),i.length>=t)return i}}else if(a&&a.keys)for(var f=0;f<e.length;f++){for(var s=e[f],v=new Array(a.keys.length),l=a.keys.length-1;l>=0;--l){var r=M(s,a.keys[l]);if(!r){v[l]=c;continue}T(r)||(r=R(r)),r.score=K,r._indexes.len=0,v[l]=r}if(v.obj=s,v.score=K,i.push(v),i.length>=t)return i}else for(var f=0;f<e.length;f++){var r=e[f];if(r&&(T(r)||(r=R(r)),r.score=K,r._indexes.len=0,i.push(r),i.length>=t))return i}return i},A=(n,e,a=!1)=>{if(a===!1&&n.containsSpace)return ce(n,e);for(var i=n._lower,t=n.lowerCodes,f=t[0],s=e._targetLowerCodes,r=t.length,o=s.length,d=0,v=0,l=0;;){var g=f===s[v];if(g){if(z[l++]=v,++d,d===r)break;f=t[d]}if(++v,v>=o)return c}var d=0,u=!1,x=0,N=e._nextBeginningIndexes;N===c&&(N=e._nextBeginningIndexes=ge(e.target)),v=z[0]===0?0:N[z[0]-1];var F=0;if(v!==o)for(;;)if(v>=o){if(d<=0||(++F,F>200))break;--d;var X=P[--x];v=N[X]}else{var g=t[d]===s[v];if(g){if(P[x++]=v,++d,d===r){u=!0;break}++v}else v=N[v]}var b=e._targetLower.indexOf(i,z[0]),y=~b;if(y&&!u)for(var h=0;h<l;++h)z[h]=b+h;var W=!1;y&&(W=e._nextBeginningIndexes[b-1]===b);{if(u)var L=P,J=x;else var L=z,J=l;for(var C=0,ae=0,h=1;h<r;++h)L[h]-L[h-1]!==1&&(C-=L[h],++ae);var xe=L[r-1]-L[0]-(r-1);if(C-=(12+xe)*ae,L[0]!==0&&(C-=L[0]*L[0]*.2),!u)C*=1e3;else{for(var Q=1,h=N[0];h<o;h=N[h])++Q;Q>24&&(C*=(Q-24)*10)}y&&(C/=1+r*r*1),W&&(C/=1+r*r*1),C-=o-r,e.score=C;for(var h=0;h<J;++h)e._indexes[h]=L[h];return e._indexes.len=J,e}},ce=(n,e)=>{for(var a=new Set,i=0,t=c,f=0,s=n.spaceSearches,l=0;l<s.length;++l){var r=s[l];if(t=A(r,e),t===c)return c;i+=t.score,t._indexes[0]<f&&(i-=f-t._indexes[0]),f=t._indexes[0];for(var o=0;o<t._indexes.len;++o)a.add(t._indexes[o])}var v=A(n,e,!0);if(v!==c&&v.score>i)return v;t.score=i;var l=0;for(let g of a)t._indexes[l++]=g;return t._indexes.len=l,t},D=n=>{for(var e=n.length,a=n.toLowerCase(),i=[],t=0,f=!1,s=0;s<e;++s){var r=i[s]=a.charCodeAt(s);if(r===32){f=!0;continue}var o=r>=97&&r<=122?r-97:r>=48&&r<=57?26:r<=127?30:31;t|=1<<o}return{lowerCodes:i,bitflags:t,containsSpace:f,_lower:a}},ue=n=>{for(var e=n.length,a=[],i=0,t=!1,f=!1,s=0;s<e;++s){var r=n.charCodeAt(s),o=r>=65&&r<=90,v=o||r>=97&&r<=122||r>=48&&r<=57,l=o&&!t||!f||!v;t=o,f=v,l&&(a[i++]=s)}return a},ge=n=>{for(var e=n.length,a=ue(n),i=[],t=a[0],f=0,s=0;s<e;++s)t>s?i[s]=t:(t=a[++f],i[s]=t===void 0?e:t);return i},he=()=>{q.clear(),Z.clear(),z=[],P=[]},q=new Map,Z=new Map,z=[],P=[],_e=n=>{for(var e=K,a=n.length,i=0;i<a;++i){var t=n[i];if(t!==c){var f=t.score;f>e&&(e=f)}}return e===K?c:e},M=(n,e)=>{var a=n[e];if(a!==void 0)return a;var i=e;Array.isArray(e)||(i=e.split("."));for(var t=i.length,f=-1;n&&++f<t;)n=n[i[f]];return n},T=n=>typeof n=="object",$=1/0,K=-$,V=[];V.total=0;var c=null,de=n=>{var e=[],a=0,i={},t=f=>{for(var s=0,r=e[s],o=1;o<a;){var v=o+1;s=o,v<a&&e[v].score<e[o].score&&(s=v),e[s-1>>1]=e[s],o=1+(s<<1)}for(var l=s-1>>1;s>0&&r.score<e[l].score;l=(s=l)-1>>1)e[s]=e[l];e[s]=r};return i.add=f=>{var s=a;e[a++]=f;for(var r=s-1>>1;s>0&&f.score<e[r].score;r=(s=r)-1>>1)e[s]=e[r];e[s]=f},i.poll=f=>{if(a!==0){var s=e[0];return e[0]=e[--a],t(),s}},i.peek=f=>{if(a!==0)return e[0]},i.replaceTop=f=>{e[0]=f,t()},i},m=de();return{single:_,go:E,highlight:I,prepare:k,indexes:p,cleanup:he}})}(U)),U.exports}var se=fe(),G=ie(se);const H=[{min:1,max:25e3,chunkIndex:0},{min:25001,max:125e3,chunkIndex:1},{min:125001,max:15e4,chunkIndex:2},{min:150001,max:199999,chunkIndex:3}],ve=2e4,j={keys:["searchString","exchangeSymbol"],limit:40,threshold:-9999,scoreFn:w=>{const S=(w[0]?w[0].score:-1e4)*.1,_=(w[1]?w[1].score:-1e4)*.9;return S+_}},ee={init:"INITIALIZE",search:"SEARCH"};class oe{FUSES=[];INDEX=0;constructor(S,_){this.INDEX=_,this._getChunks(S).forEach((I,O)=>{this.FUSES[O]=I,G.go("",I,j)})}search=S=>{let _=[];return this.FUSES.forEach(E=>{let I=G.go(S,E,j);_=[..._,...I]}),_.sort((E,I)=>E.obj.searchPriority-I.obj.searchPriority).sort((E,I)=>I.score-E.score),_};_getChunks=S=>{let _=[];if(S.length<=ve)return _=[S],_;const E=[[],[]],I=Math.ceil((H[this.INDEX].max-H[this.INDEX].min)/E.length);return E.forEach((O,p)=>{E[p]={min:H[this.INDEX].min+I*p,max:H[this.INDEX].min+I*(p+1),index:p}}),S.forEach(O=>{const{searchPriority:p}=O;E.forEach(k=>{p>=k.min&&p<=k.max&&(_[k.index]||(_[k.index]=[]),_[k.index].push(O))})}),_}}let B;self.onmessage=w=>{const{data:S}=w,{actionType:_=""}=S;switch(_){case ee.init:{B=new oe(S.payload,S.index);break}case ee.search:{const E=B.search(S.searchString);self.postMessage({searchResult:E,workerIndex:B.INDEX});break}}}})(); `, z = typeof self < "u" && self.Blob && new Blob([Q], { type: "text/javascript;charset=utf-8" }); function Re(e) { let t; try { if (t = z && (self.URL || self.webkitURL).createObjectURL(z), !t) throw ""; const n = new Worker(t, { name: e?.name }); return n.addEventListener("error", () => { (self.URL || self.webkitURL).revokeObjectURL(t); }), n; } catch { return new Worker( "data:text/javascript;charset=utf-8," + encodeURIComponent(Q), { name: e?.name } ); } finally { t && (self.URL || self.webkitURL).revokeObjectURL(t); } } class Ne { STATE = "INIT"; WORKER = []; constructor() { F() ? this.initialize() : addEventListener(H, this.initialize); } /** * Initializes the search manager: * - Changes state to READY * - Fetches chunked index data * - Spawns a Web Worker per chunk * - Sends the chunk data to each worker */ initialize = () => { this.STATE = "READY"; const t = le(); t && Object.values(t).forEach((n, r) => { const s = new Re(); this.WORKER.push(s), s.postMessage({ payload: n, index: r, actionType: pe.init }); }); }; /** * Initiates a search by sending the search string to all workers. * Waits for all responses, then flattens and resolves the final search result. * * @param searchString - The term to search for * @returns Promise resolving to an array of matched search results */ search = async (t) => new Promise((n) => { F() || (console.warn(te), n([])); const r = []; let s = 0; this.WORKER.forEach((a) => { a.postMessage({ actionType: "SEARCH", searchString: t }), a.onmessage = (i) => { const { data: u } = i; ++s; const { workerIndex: c, searchResult: I } = u; if (r[c] = I, s === this.WORKER.length) { const f = this._flattenResult(r); n(f); } }; }); }); /** * Combines and enriches raw results from all workers into a single result array. * * @param workerResults - Raw result arrays from workers * @returns Flattened and enriched result array */ _flattenResult = (t) => { const n = []; return t.forEach((r) => { r.forEach((s) => { const a = V(s.obj.data); n.push({ ...a }); }); }), n; }; } const ye = new Ne(), De = { requireSearchModule: !1, requireSocketModule: !1 }; function Ce(e, t = De) { if (e) { _e(e, t); return; } console.warn(ee); } function Ae() { return F(); } export { we as getDerivativeScripsByScripId, B as getScripByScripId, me as getScripsByIsinCode, b as getScripsByScripIds, Ce as initialize, Ae as isSecurityMasterLoaded, ye as searchManager };