overtime-live-trading-utils 0.1.0 → 0.1.2

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/main.js CHANGED
@@ -1 +1 @@
1
- !function(r,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.thalesUtils=e():r.thalesUtils=e()}(this,(()=>(()=>{"use strict";var r={d:(e,a)=>{for(var t in a)r.o(a,t)&&!r.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:a[t]})},o:(r,e)=>Object.prototype.hasOwnProperty.call(r,e),r:r=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(r,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(r,"__esModule",{value:!0})}},e={};r.r(e),r.d(e,{adjustSpreadOnOdds:()=>y,allowGameSportWithPeriodConstraint:()=>v,allowGameSportWithResultConstraint:()=>h,allowSoccerGame:()=>g,calculateImpliedOddsDifference:()=>I,checkGameContraints:()=>V,checkOddsFromBookmakers:()=>N,extractOddsForGamePerProvider:()=>G,gamesDatesMatching:()=>f,getBookmakersArray:()=>s,getLeagueSport:()=>b,getSpreadData:()=>B,teamNamesMatching:()=>R}),"function"!=typeof Object.assign&&(Object.assign=function(r,e){if(null==r)throw new TypeError("Cannot convert undefined or null to object");for(var a=Object(r),t=1;t<arguments.length;t++){var _=arguments[t];if(null!=_)for(var o in _)Object.prototype.hasOwnProperty.call(_,o)&&(a[o]=_[o])}return a});var a=function(r){return parseFloat(r.toPrecision(12))};function t(r,e,a){return void 0===a||0==+a?Math[r](e):(e=+e,a=+a,isNaN(e)||"number"!=typeof a||a%1!=0?NaN:e<0?-t(r,-e,a):(e=e.toString().split("e"),+((e=(e=Math[r](+(e[0]+"e"+(e[1]?+e[1]-a:-a)))).toString().split("e"))[0]+"e"+(e[1]?+e[1]+a:a))))}var _,o,i={decimal:{from:function(r){if((r=parseFloat(r))<=1)throw new Error("Outside valid range.");return r},to:function(){return this.decimalValue}},moneyline:{from:function(r){return(r=parseFloat(r))>=0?r/100+1:100/-r+1},to:function(){return this.decimalValue>=2?a(100*(this.decimalValue-1)):a(-100/(this.decimalValue-1))}},hongKong:{from:function(r){if((r=parseFloat(r))<0)throw new Error("Outside valid range.");return r+1},to:function(){return a(this.decimalValue-1)}},impliedProbability:{from:function(r){if((r="string"==typeof r&&"%"==r.slice(-1)?parseFloat(r)/100:parseFloat(r))<=0||r>=1)throw new Error("Outside valid range");return 1/r},to:function(r){if(r.percentage){var e=a(100/this.decimalValue);return null!==r.precision&&(e=t("round",e,-r.precision)),e.toString()+"%"}return a(1/this.decimalValue)}},fractional:{from:function(r){var e,a=r.toString().split("/");if(r=parseFloat(a[0]),2===a.length)e=parseFloat(a[1]);else{if(1!==a.length)throw new Error("Invalid fraction");e=1}if(0===r||0===e||r/e<=0)throw new Error("Outside valid range");return 1+r/e},to:function(r){return function(r,e){for(var a,t=[0,1],_=[1,0],o=function(r){var e=null,a=r.toString().indexOf("E");-1==a&&(a=r.toString().indexOf("e"));var t=null,_=(e=-1==a?r.toString():r.toString().substring(0,a)).toString().indexOf(".");-1==_?t=e:0===_?t=e.substring(1,e.length):_<e.length&&(t=e.substring(0,_)+e.substring(_+1,e.length));var o=t,i=o.toString().length,A=r,E=A.toString().length;0===A&&(E=0);var n,s=i-E;for(n=s;n>0&&o%2==0;n--)o/=2;for(n=s;n>0&&o%5==0;n--)o/=5;return o}(r),i=r,A=Math.pow(10,-e)/2,E=2;E<1e3;E++){var n=Math.floor(i);if(t[E]=n*t[E-1]+t[E-2],Math.abs(t[E])>o)return;if(_[E]=n*_[E-1]+_[E-2],a=t[E]/_[E],Math.abs(a-r)<A||NaN==a)return t[E].toString()+"/"+_[E].toString();i=1/(i-n)}}(this.decimalValue-1,r.precision||12)}},malay:{from:function(r){if((r=parseFloat(r))<=-1||r>1)throw new Error("Outside valid range.");return r<0&&(r=-1/r),r+1},to:function(){return this.decimalValue<=2?a(this.decimalValue-1):a(-1/(this.decimalValue-1))}},indonesian:{from:function(r){if(0===(r=parseFloat(r)))throw new Error("Outside valid range.");return r>=1?r+1:-1/r+1},to:function(){return this.decimalValue<2?a(-1/(this.decimalValue-1)):a(this.decimalValue-1)}}},A=((o=function(r){if("number"!=typeof r||isNaN(r))throw new Error("Invalid odds");this.decimalValue=a(r)}).prototype=(_=function(){throw new Error("This constructor is private, please use the from* functions")}).prototype,_.from=function(r,e){if(!i.hasOwnProperty(r))throw new Error("Unknown format "+r+".");var a=i[r].from(e);return new o(a)},_);A.prototype.to=function(r,e){if(!i.hasOwnProperty(r))throw new Error("Unknown format "+r+".");e=Object.assign({precision:null,percentage:!1},e);var a=i[r].to.call(this,e);return"number"==typeof a&&null!==e.precision&&(a=t("round",a,-e.precision)),a};var E,n=A.from,s=function(r,e,a){var t=r.find((function(r){return Number(r.sportId)===Number(e)}));if(t){if(""==t.primaryBookmaker)return a;var _=[];return t.primaryBookmaker&&_.push(t.primaryBookmaker),t.secondaryBookmaker&&_.push(t.secondaryBookmaker),t.tertiaryBookmaker&&_.push(t.tertiaryBookmaker),_}return a},N=function(r,e,a,t,_){var o=e.some((function(e){var t=r.get(e);return!!t&&(0===t.homeOdds||0===t.awayOdds||!a&&0===t.drawOdds||1===t.homeOdds||1===t.awayOdds||!a&&1===t.drawOdds)}));if(1==e.length){if(o)return[{homeOdds:0,awayOdds:0,drawOdds:0}];var i=e[0],A=r.get(i);return[{homeOdds:A.homeOdds,awayOdds:A.awayOdds,drawOdds:a?0:A.drawOdds}]}if(o)return[{homeOdds:0,awayOdds:0,drawOdds:0}];var E=r.get(e[0]),s=E.homeOdds,N=E.awayOdds,S=E.drawOdds;if(e.slice(1).some((function(e){var o=r[e];if(o){var i=o.homeOdds,A=o.awayOdds,E=o.drawOdds,l=n("decimal",s).to("impliedProbability"),L=n("decimal",N).to("impliedProbability"),d=a?0:n("decimal",S).to("impliedProbability"),M=n("decimal",i).to("impliedProbability"),u=n("decimal",A).to("impliedProbability"),O=a?0:n("decimal",E).to("impliedProbability"),P=I(l,M),c=I(L,u),w=a?0:I(d,O);if(P>t&&l>_&&M>_||c>t&&L>_&&u>_||!a&&w>t&&d>_&&O>_)return!0}return!1})))return console.log("Returning zero odds due to percentage difference"),[{homeOdds:0,awayOdds:0,drawOdds:0}];var l=[];return e.forEach((function(e){return l.push(r.get(e))})),null!=l[0]?l.map((function(r){return{homeOdds:r.homeOdds,awayOdds:r.awayOdds,drawOdds:a?0:r.drawOdds}})):(console.log("Returning zero odds cause no matching bookmakers have been found"),[{homeOdds:0,awayOdds:0,drawOdds:0}])},I=function(r,e){var a=Math.abs(r-e)/r*100;return console.log("% diff: "+a),a},S="Soccer",l="Football",L="Basketball",d="Baseball",M="Hockey",u="Fighting",O="Tennis",P="eSports",c="Volleyball",w="Cricket",T="Motosport",m="Golf",C={NCAAF:1,NFL:2,MLB:3,NBA:4,NCAAB:5,NHL:6,UFC:7,WNBA:8,MLS:10,EPL:11,LIGUE_ONE:12,BUNDESLIGA:13,LA_LIGA:14,SERIE_A:15,UEFA_CL:16,UEFA_EL:17,FIFA_WC:18,J1_LEAGUE:19,IPL:20,T20_BLAST:21,IIHF_WORLD_CHAMPIONSHIP:33,COPA_AMERICA:44,COPA_LIBERTADORES:45,UEFA_EURO:50,EREDIVISIE:57,PRIMEIRA_LIGA:61,SUMMER_OLYMPICS_SOCCER_WOMEN:65,SUMMER_OLYMPICS_SOCCER:66,FIFA_WC_WOMEN:76,ENGLAND_CUP:132,FRANCE_CUP:134,SPAIN_CUP:138,ITALY_CUP:141,TENNIS_GS:153,TENNIS_MASTERS:156,GERMANY_CUP:209,LIGA_MX:230,BRAZIL_1:268,UEFA_EURO_U21:288,FIFA_WORLD_CUP_U20:296,SUMMER_OLYMPICS_HANDBALL_WOMEN:380,SUMMER_OLYMPICS_HANDBALL:381,EUROLEAGUE:399,SUMMER_OLYMPICS_BASKETBALL:406,SUMMER_OLYMPICS_BASKETBALL_WOMEN:407,FIBA_WORLD_CUP:409,FORMULA1:445,MOTOGP:497,SAUDI_PROFESSIONAL_LEAGUE:536,SUMMER_OLYMPICS_WATERPOLO:8881,SUMMER_OLYMPICS_VOLEYBALL_WOMEN:8893,SUMMER_OLYMPICS_VOLEYBALL:8894,BOXING:9196,SUMMER_OLYMPICS_RUGBY:9578,SUMMER_OLYMPICS_RUGBY_WOMEN:9588,UEFA_NATIONS_LEAGUE:9806,CONCACAF_NATIONS_LEAGUE:9821,CSGO:9977,DOTA2:9983,SUMMER_OLYMPICS_BASKETBALL_3X3:10071,SUMMER_OLYMPICS_BASKETBALL_3X3_WOMEN:10072,SUMMER_OLYMPICS_QUALIFICATION:10502,LOL:10138,CONMEBOL_WC_QUALIFICATIONS:10199,UEFA_CONFERENCE_LEAGUE:10216,NON_TITLE_BOXING:10595,UEFA_CHAMPIONS_LEAGUE_QUALIFICATION:10611,UEFA_EUROPA_LEAGUE_QUALIFICATION:10613,UEFA_CONFERENCE_LEAGUE_QUALIFICATION:10615,GOLF_H2H:100021,GOLF_WINNER:100121,TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_1:15312,TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_2:15313,TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_3:15314,TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_4:15315,TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_5:15316,TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_6:15317,TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_7:15318,TENNIS_MASTERS_LIVE_MAPPING_V2_1:15622,TENNIS_MASTERS_LIVE_MAPPING_V2_2:15623,TENNIS_MASTERS_LIVE_MAPPING_V2_3:15624,TENNIS_MASTERS_LIVE_MAPPING_V2_4:15625,TENNIS_MASTERS_LIVE_MAPPING_V2_5:15626,TENNIS_MASTERS_LIVE_MAPPING_V2_6:15627,TENNIS_MASTERS_LIVE_MAPPING_V2_7:15628,TENNIS_MASTERS_LIVE_MAPPING_V2_8:15632,TENNIS_MASTERS_LIVE_MAPPING_V2_9:15633,TENNIS_MASTERS_LIVE_MAPPING_V2_10:15634,TENNIS_MASTERS_LIVE_MAPPING_V2_11:15635,TENNIS_MASTERS_LIVE_MAPPING_V2_12:15636,TENNIS_MASTERS_LIVE_MAPPING_V2_13:15637,TENNIS_MASTERS_LIVE_MAPPING_V2_14:15638,TENNIS_MASTERS_LIVE_MAPPING_V2_15:15641,TENNIS_MASTERS_LIVE_MAPPING_V2_16:15642,TENNIS_MASTERS_LIVE_MAPPING_V2_17:15643,TENNIS_MASTERS_LIVE_MAPPING_V2_18:15644,TENNIS_MASTERS_LIVE_MAPPING_V2_19:15645,TENNIS_MASTERS_LIVE_MAPPING_V2_20:15646,TENNIS_MASTERS_LIVE_MAPPING_V2_21:15647,TENNIS_MASTERS_LIVE_MAPPING_V2_22:15648},p=[C.CSGO,C.DOTA2,C.LOL,C.TENNIS_GS,C.TENNIS_MASTERS,C.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_1,C.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_2,C.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_3,C.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_4,C.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_5,C.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_6,C.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_7,C.TENNIS_MASTERS_LIVE_MAPPING_V2_1,C.TENNIS_MASTERS_LIVE_MAPPING_V2_2,C.TENNIS_MASTERS_LIVE_MAPPING_V2_3,C.TENNIS_MASTERS_LIVE_MAPPING_V2_4,C.TENNIS_MASTERS_LIVE_MAPPING_V2_5,C.TENNIS_MASTERS_LIVE_MAPPING_V2_6,C.TENNIS_MASTERS_LIVE_MAPPING_V2_7,C.TENNIS_MASTERS_LIVE_MAPPING_V2_8,C.TENNIS_MASTERS_LIVE_MAPPING_V2_9,C.TENNIS_MASTERS_LIVE_MAPPING_V2_10,C.TENNIS_MASTERS_LIVE_MAPPING_V2_11,C.TENNIS_MASTERS_LIVE_MAPPING_V2_12,C.TENNIS_MASTERS_LIVE_MAPPING_V2_13,C.TENNIS_MASTERS_LIVE_MAPPING_V2_14,C.TENNIS_MASTERS_LIVE_MAPPING_V2_15,C.TENNIS_MASTERS_LIVE_MAPPING_V2_16,C.TENNIS_MASTERS_LIVE_MAPPING_V2_17,C.TENNIS_MASTERS_LIVE_MAPPING_V2_18,C.TENNIS_MASTERS_LIVE_MAPPING_V2_19,C.TENNIS_MASTERS_LIVE_MAPPING_V2_20,C.TENNIS_MASTERS_LIVE_MAPPING_V2_21,C.TENNIS_MASTERS_LIVE_MAPPING_V2_22],R=function(r,e,a,t,_,o){var i,A;if(p.includes(r)?(i=t.toLowerCase()==e.toLowerCase()||t.toLowerCase()==a.toLowerCase(),A=_.toLowerCase()==e.toLowerCase()||_.toLowerCase()==a.toLowerCase()):(i=t.toLowerCase()==e.toLowerCase(),A=_.toLowerCase()==a.toLowerCase()),!0!==i){var E=o.get(t.toLowerCase()),n=o.get(e.toLowerCase()),s=o.get(a.toLowerCase());if([E,n].some((function(r){return null==r})))return!1;i=p.includes(r)?E==n||E==s:E==n}if(!0!==A){var N=o.get(_.toLowerCase());if(n=o.get(e.toLowerCase()),[N,s=o.get(a.toLowerCase())].some((function(r){return null==r})))return!1;A=p.includes(r)&&N==n||N==s}return i&&A},f=function(r,e,a,t){var _;if(a.toString().startsWith(C.TENNIS_GS.toString())||a.toString().startsWith(C.TENNIS_MASTERS.toString())){var o=e.getTime(),i=r.getTime();_=Math.abs(i-o)<=Number(60*t*1e3)}else _=e.toUTCString()==r.toUTCString();return _},G=function(r,e,a,t,_){var o=new Map;return r.forEach((function(r){var i,A,E=e.odds.filter((function(e){return e.sports_book_name.toLowerCase()==r.toLowerCase()})),n=t.get(a.homeTeam.toLowerCase()),s=t.get(a.awayTeam.toLowerCase()),N=0;null!=(i=null==n?E.find((function(r){var e=t.get(r.name.toLowerCase());return null==e?r.name.toLowerCase()==a.homeTeam.toLowerCase():e==a.homeTeam.toLowerCase()})):E.find((function(r){var e=t.get(r.name.toLowerCase());return null==e?r.name.toLowerCase()==n:e==n})))&&(N=i.price);var I=0;null!=(A=null==s?E.find((function(r){var e=t.get(r.name.toLowerCase());return null==e?r.name.toLowerCase()==a.awayTeam.toLowerCase():e==a.awayTeam.toLowerCase()})):E.find((function(r){var e=t.get(r.name.toLowerCase());return null==e?r.name.toLowerCase()==s:e==s})))&&(I=A.price);var S=0;if(_){var l=E.find((function(r){return"draw"==r.name.toLowerCase()}));null!=l&&(S=l.price)}o.set(r.toLowerCase(),{homeOdds:N,awayOdds:I,drawOdds:S})})),o},U=((E={})[C.NCAAF]={sport:l,id:C.NCAAF,isDrawAvailable:!1},E[C.NFL]={sport:l,id:C.NFL,isDrawAvailable:!1},E[C.MLB]={sport:d,id:C.MLB,isDrawAvailable:!1},E[C.NBA]={sport:L,id:C.NBA,isDrawAvailable:!1},E[C.NCAAB]={sport:L,id:C.NCAAB,isDrawAvailable:!1},E[C.NHL]={sport:M,id:C.NHL,isDrawAvailable:!1},E[C.UFC]={sport:u,id:C.UFC,isDrawAvailable:!1},E[C.WNBA]={sport:L,id:C.WNBA,isDrawAvailable:!1},E[C.MLS]={sport:S,id:C.MLS,isDrawAvailable:!0},E[C.EPL]={sport:S,id:C.EPL,isDrawAvailable:!0},E[C.LIGUE_ONE]={sport:S,id:C.LIGUE_ONE,isDrawAvailable:!0},E[C.BUNDESLIGA]={sport:S,id:C.BUNDESLIGA,isDrawAvailable:!0},E[C.LA_LIGA]={sport:S,id:C.LA_LIGA,isDrawAvailable:!0},E[C.SERIE_A]={sport:S,id:C.SERIE_A,isDrawAvailable:!0},E[C.UEFA_CL]={sport:S,id:C.UEFA_CL,isDrawAvailable:!0},E[C.UEFA_EL]={sport:S,id:C.UEFA_EL,isDrawAvailable:!0},E[C.FIFA_WC]={sport:S,id:C.FIFA_WC,isDrawAvailable:!0},E[C.J1_LEAGUE]={sport:S,id:C.J1_LEAGUE,isDrawAvailable:!0},E[C.IPL]={sport:w,id:C.IPL,isDrawAvailable:!1},E[C.T20_BLAST]={sport:w,id:C.T20_BLAST,isDrawAvailable:!1},E[C.IIHF_WORLD_CHAMPIONSHIP]={sport:M,id:C.IIHF_WORLD_CHAMPIONSHIP,isDrawAvailable:!0},E[C.COPA_AMERICA]={sport:S,id:C.COPA_AMERICA,isDrawAvailable:!0},E[C.COPA_LIBERTADORES]={sport:S,id:C.COPA_LIBERTADORES,isDrawAvailable:!0},E[C.UEFA_EURO]={sport:S,id:C.UEFA_EURO,isDrawAvailable:!0},E[C.EREDIVISIE]={sport:S,id:C.EREDIVISIE,isDrawAvailable:!0},E[C.PRIMEIRA_LIGA]={sport:S,id:C.PRIMEIRA_LIGA,isDrawAvailable:!0},E[C.FIFA_WC_WOMEN]={sport:S,id:C.FIFA_WC_WOMEN,isDrawAvailable:!0},E[C.ENGLAND_CUP]={sport:S,id:C.ENGLAND_CUP,isDrawAvailable:!0},E[C.FRANCE_CUP]={sport:S,isDrawAvailable:!0},E[C.SPAIN_CUP]={sport:S,id:C.SPAIN_CUP,isDrawAvailable:!0},E[C.ITALY_CUP]={sport:S,isDrawAvailable:!0},E[C.TENNIS_GS]={sport:O,id:C.TENNIS_GS,isDrawAvailable:!1},E[C.TENNIS_MASTERS]={sport:O,id:C.TENNIS_MASTERS,isDrawAvailable:!1},E[C.GERMANY_CUP]={sport:S,id:C.GERMANY_CUP,isDrawAvailable:!0},E[C.BRAZIL_1]={sport:S,id:C.BRAZIL_1,isDrawAvailable:!0},E[C.UEFA_EURO_U21]={sport:S,id:C.UEFA_EURO_U21,isDrawAvailable:!0},E[C.FIFA_WORLD_CUP_U20]={sport:S,id:C.FIFA_WORLD_CUP_U20,isDrawAvailable:!0},E[C.EUROLEAGUE]={sport:L,id:C.EUROLEAGUE,isDrawAvailable:!1},E[C.FIBA_WORLD_CUP]={sport:L,id:C.FIBA_WORLD_CUP,isDrawAvailable:!1},E[C.FORMULA1]={sport:T,id:C.FORMULA1,isDrawAvailable:!1},E[C.MOTOGP]={sport:T,id:C.MOTOGP,isDrawAvailable:!1},E[C.SAUDI_PROFESSIONAL_LEAGUE]={sport:S,id:C.SAUDI_PROFESSIONAL_LEAGUE,isDrawAvailable:!0},E[C.BOXING]={sport:u,id:C.BOXING,isDrawAvailable:!1},E[C.UEFA_NATIONS_LEAGUE]={sport:S,id:C.UEFA_NATIONS_LEAGUE,isDrawAvailable:!0},E[C.CONCACAF_NATIONS_LEAGUE]={sport:S,id:C.CONCACAF_NATIONS_LEAGUE,isDrawAvailable:!0},E[C.CSGO]={sport:P,id:C.CSGO,isDrawAvailable:!1},E[C.DOTA2]={sport:P,id:C.DOTA2,isDrawAvailable:!1},E[C.SUMMER_OLYMPICS_QUALIFICATION]={sport:L,id:C.SUMMER_OLYMPICS_QUALIFICATION,isDrawAvailable:!1},E[C.LOL]={sport:P,id:C.LOL,isDrawAvailable:!1},E[C.CONMEBOL_WC_QUALIFICATIONS]={sport:S,id:C.CONMEBOL_WC_QUALIFICATIONS,isDrawAvailable:!0},E[C.UEFA_CONFERENCE_LEAGUE]={sport:S,id:C.UEFA_CONFERENCE_LEAGUE,isDrawAvailable:!0},E[C.NON_TITLE_BOXING]={sport:u,isDrawAvailable:!1},E[C.UEFA_CHAMPIONS_LEAGUE_QUALIFICATION]={sport:S,id:C.UEFA_CHAMPIONS_LEAGUE_QUALIFICATION,isDrawAvailable:!0},E[C.UEFA_EUROPA_LEAGUE_QUALIFICATION]={sport:S,id:C.UEFA_EUROPA_LEAGUE_QUALIFICATION,isDrawAvailable:!0},E[C.UEFA_CONFERENCE_LEAGUE_QUALIFICATION]={sport:S,isDrawAvailable:!0},E[C.GOLF_H2H]={sport:m,id:C.GOLF_H2H,isDrawAvailable:!1},E[C.GOLF_WINNER]={sport:m,id:C.GOLF_WINNER,isDrawAvailable:!1},E[C.LIGA_MX]={sport:S,id:C.LIGA_MX,isDrawAvailable:!0},E[C.SUMMER_OLYMPICS_SOCCER_WOMEN]={sport:S,id:C.SUMMER_OLYMPICS_SOCCER_WOMEN,isDrawAvailable:!0},E[C.SUMMER_OLYMPICS_SOCCER]={sport:S,id:C.SUMMER_OLYMPICS_SOCCER,isDrawAvailable:!0},E[C.SUMMER_OLYMPICS_BASKETBALL]={sport:L,id:C.SUMMER_OLYMPICS_BASKETBALL,isDrawAvailable:!1},E[C.SUMMER_OLYMPICS_BASKETBALL_WOMEN]={sport:L,id:C.SUMMER_OLYMPICS_BASKETBALL_WOMEN,isDrawAvailable:!1},E[C.SUMMER_OLYMPICS_VOLEYBALL_WOMEN]={sport:c,id:C.SUMMER_OLYMPICS_VOLEYBALL_WOMEN,isDrawAvailable:!1},E[C.SUMMER_OLYMPICS_VOLEYBALL]={sport:c,isDrawAvailable:!1},E),b=function(r){var e=U[r];return e?e.sport:""},V=function(r,e,a){var t,_=r.score_home_total,o=r.score_away_total,i=r.clock,A=r.period,E=r.status,n=r.home_team,s=r.away_team,N=b(e);return"completed"==E.toLowerCase()?(console.log("Blocking game ".concat(n," - ").concat(s," because it is no longer live.")),null):(N===L&&(t=v(n,s,A,a.get(L))),N===M&&(t=v(n,s,A,a.get(M))),N===d&&(t=v(n,s,A,a.get(d))),N===S&&(t=g(n,s,i,A,a.get(S))),N===O&&(t=h(r,n,s,A,_,o,e,N)),N===c&&(t=h(r,n,s,A,_,o,e,N)),t)},v=function(r,e,a,t){return Number(a)>=t?{allow:!1,message:"Blocking game ".concat(r," - ").concat(e," due to period: ").concat(a,". period")}:{allow:!0,message:""}},g=function(r,e,a,t,_){var o=Number(a);return!Number.isNaN(o)&&o>=_||Number.isNaN(o)&&"HALF"!=t?{allow:!1,message:"Blocking game ".concat(r," - ").concat(e," due to clock: ").concat(a,"min")}:{allow:!0,message:""}},h=function(r,e,a,t,_,o,i,A){var E=Number(t),n=D(E,r),s="atp"==r.league.toLowerCase(),N={home:_,away:o};return A==c?F(e,a,n,N,2,5==E?10:20):i.toString().startsWith(C.TENNIS_GS)&&s?F(e,a,n,N,2,5):i.toString().startsWith(C.TENNIS_GS)&&!s||i.toString().startsWith(C.TENNIS_MASTERS)?F(e,a,n,N,1,5):{allow:!0,message:"The sport ".concat(i," does not have result constraint")}},D=function(r,e){var a=0,t=0;switch(r){case 2:a=Number(e.score_home_period_2),t=Number(e.score_away_period_2);break;case 3:a=Number(e.score_home_period_3),t=Number(e.score_away_period_3);break;case 4:a=Number(e.score_home_period_4),t=Number(e.score_away_period_4);break;case 5:a=Number(e.score_home_period_5),t=Number(e.score_away_period_5)}return{home:a,away:t}},F=function(r,e,a,t,_,o){return Number(t.home)!=_&&Number(t.away)!=_||!(Number(t.home)==_&&a.home>=o||Number(t.away)==_&&a.away>=o)?{allow:!0,message:"",currentHomeGameScore:a.home,currentAwayGameScore:a.away}:{allow:!1,message:"Blocking game ".concat(r," - ").concat(e," due to current result: ").concat(t.home," - ").concat(t.away," (").concat(a.home," - ").concat(a.away,")")}},y=function(r,e,a){if(r.some((function(r){return 0===r})))return r;var t=r.reduce((function(r,e){return r+e}),0);if(t<=1)return Array(r.length).fill(0);if(0===a){if(!(e>100*(t-1)))return r;a=e}var _=1+a/100,o=_/t,i=r.map((function(r){return r*o}));if(i.some((function(r){return r>=1})))return Array(r.length).fill(0);var A=i.reduce((function(r,e){return r+e}),0);if(A<1)return Array(r.length).fill(0);var E=_/A;return i.map((function(r){return r*E}))},B=function(r,e,a,t){var _=r.find((function(r){return Number(r.typeId)===Number(a)&&Number(r.sportId)===Number(e)}));return _?{minSpread:_.minSpread?Number(_.minSpread):t,targetSpread:_.targetSpread?Number(_.targetSpread):0}:{minSpread:t,targetSpread:0}};return e})()));
1
+ !function(r,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.thalesUtils=e():r.thalesUtils=e()}(this,(()=>(()=>{"use strict";var r={d:(e,a)=>{for(var t in a)r.o(a,t)&&!r.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:a[t]})},o:(r,e)=>Object.prototype.hasOwnProperty.call(r,e),r:r=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(r,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(r,"__esModule",{value:!0})}},e={};r.r(e),r.d(e,{adjustSpreadOnOdds:()=>q,allowGameSportWithPeriodConstraint:()=>G,allowGameSportWithResultConstraint:()=>I,allowSoccerGame:()=>W,calculateImpliedOddsDifference:()=>w,checkGameContraints:()=>x,checkOddsFromBookmakers:()=>c,extractOddsForGamePerProvider:()=>K,gamesDatesMatching:()=>z,getBookmakersArray:()=>u,getLeagueSport:()=>M,getSpreadData:()=>J,teamNamesMatching:()=>R}),"function"!=typeof Object.assign&&(Object.assign=function(r,e){if(null==r)throw new TypeError("Cannot convert undefined or null to object");for(var a=Object(r),t=1;t<arguments.length;t++){var i=arguments[t];if(null!=i)for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(a[o]=i[o])}return a});var a=function(r){return parseFloat(r.toPrecision(12))};function t(r,e,a){return void 0===a||0==+a?Math[r](e):(e=+e,a=+a,isNaN(e)||"number"!=typeof a||a%1!=0?NaN:e<0?-t(r,-e,a):(e=e.toString().split("e"),+((e=(e=Math[r](+(e[0]+"e"+(e[1]?+e[1]-a:-a)))).toString().split("e"))[0]+"e"+(e[1]?+e[1]+a:a))))}var i,o,s={decimal:{from:function(r){if((r=parseFloat(r))<=1)throw new Error("Outside valid range.");return r},to:function(){return this.decimalValue}},moneyline:{from:function(r){return(r=parseFloat(r))>=0?r/100+1:100/-r+1},to:function(){return this.decimalValue>=2?a(100*(this.decimalValue-1)):a(-100/(this.decimalValue-1))}},hongKong:{from:function(r){if((r=parseFloat(r))<0)throw new Error("Outside valid range.");return r+1},to:function(){return a(this.decimalValue-1)}},impliedProbability:{from:function(r){if((r="string"==typeof r&&"%"==r.slice(-1)?parseFloat(r)/100:parseFloat(r))<=0||r>=1)throw new Error("Outside valid range");return 1/r},to:function(r){if(r.percentage){var e=a(100/this.decimalValue);return null!==r.precision&&(e=t("round",e,-r.precision)),e.toString()+"%"}return a(1/this.decimalValue)}},fractional:{from:function(r){var e,a=r.toString().split("/");if(r=parseFloat(a[0]),2===a.length)e=parseFloat(a[1]);else{if(1!==a.length)throw new Error("Invalid fraction");e=1}if(0===r||0===e||r/e<=0)throw new Error("Outside valid range");return 1+r/e},to:function(r){return function(r,e){for(var a,t=[0,1],i=[1,0],o=function(r){var e=null,a=r.toString().indexOf("E");-1==a&&(a=r.toString().indexOf("e"));var t=null,i=(e=-1==a?r.toString():r.toString().substring(0,a)).toString().indexOf(".");-1==i?t=e:0===i?t=e.substring(1,e.length):i<e.length&&(t=e.substring(0,i)+e.substring(i+1,e.length));var o=t,s=o.toString().length,n=r,l=n.toString().length;0===n&&(l=0);var d,u=s-l;for(d=u;d>0&&o%2==0;d--)o/=2;for(d=u;d>0&&o%5==0;d--)o/=5;return o}(r),s=r,n=Math.pow(10,-e)/2,l=2;l<1e3;l++){var d=Math.floor(s);if(t[l]=d*t[l-1]+t[l-2],Math.abs(t[l])>o)return;if(i[l]=d*i[l-1]+i[l-2],a=t[l]/i[l],Math.abs(a-r)<n||NaN==a)return t[l].toString()+"/"+i[l].toString();s=1/(s-d)}}(this.decimalValue-1,r.precision||12)}},malay:{from:function(r){if((r=parseFloat(r))<=-1||r>1)throw new Error("Outside valid range.");return r<0&&(r=-1/r),r+1},to:function(){return this.decimalValue<=2?a(this.decimalValue-1):a(-1/(this.decimalValue-1))}},indonesian:{from:function(r){if(0===(r=parseFloat(r)))throw new Error("Outside valid range.");return r>=1?r+1:-1/r+1},to:function(){return this.decimalValue<2?a(-1/(this.decimalValue-1)):a(this.decimalValue-1)}}},n=((o=function(r){if("number"!=typeof r||isNaN(r))throw new Error("Invalid odds");this.decimalValue=a(r)}).prototype=(i=function(){throw new Error("This constructor is private, please use the from* functions")}).prototype,i.from=function(r,e){if(!s.hasOwnProperty(r))throw new Error("Unknown format "+r+".");var a=s[r].from(e);return new o(a)},i);n.prototype.to=function(r,e){if(!s.hasOwnProperty(r))throw new Error("Unknown format "+r+".");e=Object.assign({precision:null,percentage:!1},e);var a=s[r].to.call(this,e);return"number"==typeof a&&null!==e.precision&&(a=t("round",a,-e.precision)),a};var l,d=n.from,u=function(r,e,a){var t=r.find((function(r){return Number(r.sportId)===Number(e)}));if(t){if(""==t.primaryBookmaker)return a;var i=[];return t.primaryBookmaker&&i.push(t.primaryBookmaker),t.secondaryBookmaker&&i.push(t.secondaryBookmaker),t.tertiaryBookmaker&&i.push(t.tertiaryBookmaker),i}return a},c=function(r,e,a,t,i){var o=e.some((function(e){var t=r.get(e);return!!t&&(0===t.homeOdds||0===t.awayOdds||!a&&0===t.drawOdds||1===t.homeOdds||1===t.awayOdds||!a&&1===t.drawOdds)}));if(1==e.length){if(o)return[{homeOdds:0,awayOdds:0,drawOdds:0}];var s=e[0],n=r.get(s);return[{homeOdds:n.homeOdds,awayOdds:n.awayOdds,drawOdds:a?0:n.drawOdds}]}if(o)return[{homeOdds:0,awayOdds:0,drawOdds:0}];var l=r.get(e[0]),u=l.homeOdds,c=l.awayOdds,p=l.drawOdds;if(e.slice(1).some((function(e){var o=r[e];if(o){var s=o.homeOdds,n=o.awayOdds,l=o.drawOdds,m=d("decimal",u).to("impliedProbability"),f=d("decimal",c).to("impliedProbability"),b=a?0:d("decimal",p).to("impliedProbability"),v=d("decimal",s).to("impliedProbability"),g=d("decimal",n).to("impliedProbability"),h=a?0:d("decimal",l).to("impliedProbability"),A=w(m,v),y=w(f,g),D=a?0:w(b,h);if(A>t&&m>i&&v>i||y>t&&f>i&&g>i||!a&&D>t&&b>i&&h>i)return!0}return!1})))return console.log("Returning zero odds due to percentage difference"),[{homeOdds:0,awayOdds:0,drawOdds:0}];var m=[];return e.forEach((function(e){return m.push(r.get(e))})),null!=m[0]?m.map((function(r){return{homeOdds:r.homeOdds,awayOdds:r.awayOdds,drawOdds:a?0:r.drawOdds}})):(console.log("Returning zero odds cause no matching bookmakers have been found"),[{homeOdds:0,awayOdds:0,drawOdds:0}])},w=function(r,e){var a=Math.abs(r-e)/r*100;return console.log("% diff: "+a),a},p="Soccer",m="Football",f="Basketball",b="Baseball",v="Hockey",g="Fighting",h="Tennis",A="eSports",y="Rugby",D="Volleyball",O="Handball",C="Cricket",S="Motosport",L="Golf",N=153,k=156,_=158,P=9977,T=9983,V=10138,B=100021,E=100121,F=[P,T,V,N,k,_,15312,15313,15314,15315,15316,15317,15318,15622,15623,15624,15625,15626,15627,15628,15632,15633,15634,15635,15636,15637,15638,15641,15642,15643,15644,15645,15646,15647,15648],j=((l={})[1]={sport:m,id:1,isDrawAvailable:!1},l[2]={sport:m,id:2,isDrawAvailable:!1},l[3]={sport:b,id:3,isDrawAvailable:!1},l[4]={sport:f,id:4,isDrawAvailable:!1},l[5]={sport:f,id:5,isDrawAvailable:!1},l[6]={sport:v,id:6,isDrawAvailable:!1},l[7]={sport:g,id:7,isDrawAvailable:!1},l[8]={sport:f,id:8,isDrawAvailable:!1},l[10]={sport:p,id:10,isDrawAvailable:!0},l[11]={sport:p,id:11,isDrawAvailable:!0},l[12]={sport:p,id:12,isDrawAvailable:!0},l[13]={sport:p,id:13,isDrawAvailable:!0},l[14]={sport:p,id:14,isDrawAvailable:!0},l[15]={sport:p,id:15,isDrawAvailable:!0},l[16]={sport:p,id:16,isDrawAvailable:!0},l[17]={sport:p,id:17,isDrawAvailable:!0},l[18]={sport:p,id:18,isDrawAvailable:!0},l[19]={sport:p,id:19,isDrawAvailable:!0},l[20]={sport:C,id:20,isDrawAvailable:!1},l[21]={sport:C,id:21,isDrawAvailable:!1},l[33]={sport:v,id:33,isDrawAvailable:!0},l[44]={sport:p,id:44,isDrawAvailable:!0},l[45]={sport:p,id:45,isDrawAvailable:!0},l[50]={sport:p,id:50,isDrawAvailable:!0},l[57]={sport:p,id:57,isDrawAvailable:!0},l[61]={sport:p,id:61,isDrawAvailable:!0},l[65]={sport:p,id:65,isDrawAvailable:!0},l[66]={sport:p,id:66,isDrawAvailable:!0},l[76]={sport:p,id:76,isDrawAvailable:!0},l[132]={sport:p,id:132,isDrawAvailable:!0},l[134]={sport:p,id:134,isDrawAvailable:!0},l[138]={sport:p,id:138,isDrawAvailable:!0},l[141]={sport:p,id:141,isDrawAvailable:!0},l[153]={sport:h,id:N,isDrawAvailable:!1},l[156]={sport:h,id:k,isDrawAvailable:!1},l[158]={sport:h,id:_,isDrawAvailable:!1},l[209]={sport:p,id:209,isDrawAvailable:!0},l[268]={sport:p,id:268,isDrawAvailable:!0},l[288]={sport:p,id:288,isDrawAvailable:!0},l[296]={sport:p,id:296,isDrawAvailable:!0},l[380]={sport:O,id:380,isDrawAvailable:!0},l[381]={sport:O,id:381,isDrawAvailable:!0},l[399]={sport:f,id:399,isDrawAvailable:!1},l[406]={sport:f,id:406,isDrawAvailable:!1},l[407]={sport:f,id:407,isDrawAvailable:!1},l[409]={sport:f,id:409,isDrawAvailable:!1},l[445]={sport:S,id:445,isDrawAvailable:!1},l[453]={sport:D,id:453,isDrawAvailable:!1},l[454]={sport:D,id:454,isDrawAvailable:!1},l[8910]={sport:"TableTennis",id:8910,isDrawAvailable:!1},l[497]={sport:S,id:497,isDrawAvailable:!1},l[536]={sport:p,id:536,isDrawAvailable:!0},l[8881]={sport:"Waterpolo",id:8881,isDrawAvailable:!0},l[8893]={sport:D,id:8893,isDrawAvailable:!1},l[8894]={sport:D,id:8894,isDrawAvailable:!1},l[9196]={sport:g,id:9196,isDrawAvailable:!1},l[9578]={sport:y,id:9578,isDrawAvailable:!0},l[9588]={sport:y,id:9588,isDrawAvailable:!0},l[9698]={sport:v,id:9698,isDrawAvailable:!0},l[9699]={sport:v,id:9699,isDrawAvailable:!0},l[9806]={sport:p,id:9806,isDrawAvailable:!0},l[9821]={sport:p,id:9821,isDrawAvailable:!0},l[9977]={sport:A,id:P,isDrawAvailable:!1},l[9983]={sport:A,id:T,isDrawAvailable:!1},l[10071]={sport:f,id:10071,isDrawAvailable:!1},l[10072]={sport:f,id:10072,isDrawAvailable:!1},l[10502]={sport:f,id:10502,isDrawAvailable:!1},l[10138]={sport:A,id:V,isDrawAvailable:!1},l[10199]={sport:p,id:10199,isDrawAvailable:!0},l[10216]={sport:p,id:10216,isDrawAvailable:!0},l[10595]={sport:g,id:10595,isDrawAvailable:!1},l[10611]={sport:p,id:10611,isDrawAvailable:!0},l[10613]={sport:p,id:10613,isDrawAvailable:!0},l[10615]={sport:p,id:10615,isDrawAvailable:!0},l[100021]={sport:L,id:B,isDrawAvailable:!1},l[100121]={sport:L,id:E,isDrawAvailable:!1},l[230]={sport:p,id:230,isDrawAvailable:!0},l),M=function(r){var e=j[r];return e?e.sport:""},x=function(r,e,a){var t,i=r.score_home_total,o=r.score_away_total,s=r.clock,n=r.period,l=r.status,d=r.home_team,u=r.away_team,c=M(e);return"completed"==l.toLowerCase()?{allow:!1,message:"Blocking game ".concat(d," - ").concat(u," because it is no longer live.")}:(c===f&&(t=G(d,u,n,a.get(f))),c===v&&(t=G(d,u,n,a.get(v))),c===b&&(t=G(d,u,n,a.get(b))),c===p&&(t=W(d,u,s,n,a.get(p))),c===h&&(t=I(r,d,u,n,i,o,e,c)),c===D&&(t=I(r,d,u,n,i,o,e,c)),t)},G=function(r,e,a,t){return Number(a)>=t?{allow:!1,message:"Blocking game ".concat(r," - ").concat(e," due to period: ").concat(a,". period")}:{allow:!0,message:""}},W=function(r,e,a,t,i){var o=Number(a);return!Number.isNaN(o)&&o>=i||Number.isNaN(o)&&"HALF"!=t?{allow:!1,message:"Blocking game ".concat(r," - ").concat(e," due to clock: ").concat(a,"min")}:{allow:!0,message:""}},I=function(r,e,a,t,i,o,s,n){var l=Number(t),d=U(l,r),u="atp"==r.league.toLowerCase(),c={home:i,away:o};return n==D?H(e,a,d,c,2,5==l?10:20):s.toString().startsWith(N)&&u?H(e,a,d,c,2,5):s.toString().startsWith(N)&&!u||s.toString().startsWith(k)||s.toString().startsWith(_)?H(e,a,d,c,1,5):{allow:!0,message:"The sport ".concat(s," does not have result constraint")}},U=function(r,e){var a=0,t=0;switch(r){case 2:a=Number(e.score_home_period_2),t=Number(e.score_away_period_2);break;case 3:a=Number(e.score_home_period_3),t=Number(e.score_away_period_3);break;case 4:a=Number(e.score_home_period_4),t=Number(e.score_away_period_4);break;case 5:a=Number(e.score_home_period_5),t=Number(e.score_away_period_5)}return{home:a,away:t}},H=function(r,e,a,t,i,o){return Number(t.home)!=i&&Number(t.away)!=i||!(Number(t.home)==i&&a.home>=o||Number(t.away)==i&&a.away>=o)?{allow:!0,message:"",currentHomeGameScore:a.home,currentAwayGameScore:a.away}:{allow:!1,message:"Blocking game ".concat(r," - ").concat(e," due to current result: ").concat(t.home," - ").concat(t.away," (").concat(a.home," - ").concat(a.away,")")}},R=function(r,e,a,t,i,o){var s,n;if(F.includes(r)?(s=t.toLowerCase()==e.toLowerCase()||t.toLowerCase()==a.toLowerCase(),n=i.toLowerCase()==e.toLowerCase()||i.toLowerCase()==a.toLowerCase()):(s=t.toLowerCase()==e.toLowerCase(),n=i.toLowerCase()==a.toLowerCase()),!0!==s){var l=o.get(t.toLowerCase()),d=o.get(e.toLowerCase()),u=o.get(a.toLowerCase());if([l,d].some((function(r){return null==r})))return!1;s=F.includes(r)?l==d||l==u:l==d}if(!0!==n){var c=o.get(i.toLowerCase());if(d=o.get(e.toLowerCase()),[c,u=o.get(a.toLowerCase())].some((function(r){return null==r})))return!1;n=F.includes(r)&&c==d||c==u}return s&&n},z=function(r,e,a,t){var i;if(M(a)==h){var o=e.getTime(),s=r.getTime();i=Math.abs(s-o)<=Number(60*t*1e3)}else i=e.toUTCString()==r.toUTCString();return i},K=function(r,e,a,t,i){var o=new Map;return r.forEach((function(r){var s,n,l=e.odds.filter((function(e){return e.sports_book_name.toLowerCase()==r.toLowerCase()})),d=t.get(a.homeTeam.toLowerCase()),u=t.get(a.awayTeam.toLowerCase()),c=0;null!=(s=null==d?l.find((function(r){var e=t.get(r.name.toLowerCase());return null==e?r.name.toLowerCase()==a.homeTeam.toLowerCase():e==a.homeTeam.toLowerCase()})):l.find((function(r){var e=t.get(r.name.toLowerCase());return null==e?r.name.toLowerCase()==d:e==d})))&&(c=s.price);var w=0;null!=(n=null==u?l.find((function(r){var e=t.get(r.name.toLowerCase());return null==e?r.name.toLowerCase()==a.awayTeam.toLowerCase():e==a.awayTeam.toLowerCase()})):l.find((function(r){var e=t.get(r.name.toLowerCase());return null==e?r.name.toLowerCase()==u:e==u})))&&(w=n.price);var p=0;if(i){var m=l.find((function(r){return"draw"==r.name.toLowerCase()}));null!=m&&(p=m.price)}o.set(r.toLowerCase(),{homeOdds:c,awayOdds:w,drawOdds:p})})),o},q=function(r,e,a){if(r.some((function(r){return 0===r})))return r;var t=r.reduce((function(r,e){return r+e}),0);if(t<=1)return Array(r.length).fill(0);if(0===a){if(!(e>100*(t-1)))return r;a=e}var i=1+a/100,o=i/t,s=r.map((function(r){return r*o}));if(s.some((function(r){return r>=1})))return Array(r.length).fill(0);var n=s.reduce((function(r,e){return r+e}),0);if(n<1)return Array(r.length).fill(0);var l=i/n;return s.map((function(r){return r*l}))},J=function(r,e,a,t){var i=r.find((function(r){return Number(r.typeId)===Number(a)&&Number(r.sportId)===Number(e)}));return i?{minSpread:i.minSpread?Number(i.minSpread):t,targetSpread:i.targetSpread?Number(i.targetSpread):0}:{minSpread:t,targetSpread:0}};return e})()));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "overtime-live-trading-utils",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "",
5
5
  "main": "main.js",
6
6
  "scripts": {
@@ -132,6 +132,16 @@ export const LeagueMap: Record<number, any> = {
132
132
  id: League.PRIMEIRA_LIGA,
133
133
  isDrawAvailable: true,
134
134
  },
135
+ [League.SUMMER_OLYMPICS_SOCCER_WOMEN]: {
136
+ sport: Sport.SOCCER,
137
+ id: League.SUMMER_OLYMPICS_SOCCER_WOMEN,
138
+ isDrawAvailable: true,
139
+ },
140
+ [League.SUMMER_OLYMPICS_SOCCER]: {
141
+ sport: Sport.SOCCER,
142
+ id: League.SUMMER_OLYMPICS_SOCCER,
143
+ isDrawAvailable: true,
144
+ },
135
145
  [League.FIFA_WC_WOMEN]: {
136
146
  sport: Sport.SOCCER,
137
147
  id: League.FIFA_WC_WOMEN,
@@ -144,6 +154,7 @@ export const LeagueMap: Record<number, any> = {
144
154
  },
145
155
  [League.FRANCE_CUP]: {
146
156
  sport: Sport.SOCCER,
157
+ id: League.FRANCE_CUP,
147
158
  isDrawAvailable: true,
148
159
  },
149
160
  [League.SPAIN_CUP]: {
@@ -153,6 +164,7 @@ export const LeagueMap: Record<number, any> = {
153
164
  },
154
165
  [League.ITALY_CUP]: {
155
166
  sport: Sport.SOCCER,
167
+ id: League.ITALY_CUP,
156
168
  isDrawAvailable: true,
157
169
  },
158
170
  [League.TENNIS_GS]: {
@@ -165,6 +177,11 @@ export const LeagueMap: Record<number, any> = {
165
177
  id: League.TENNIS_MASTERS,
166
178
  isDrawAvailable: false,
167
179
  },
180
+ [League.SUMMER_OLYMPICS_TENNIS]: {
181
+ sport: Sport.TENNIS,
182
+ id: League.SUMMER_OLYMPICS_TENNIS,
183
+ isDrawAvailable: false,
184
+ },
168
185
  [League.GERMANY_CUP]: {
169
186
  sport: Sport.SOCCER,
170
187
  id: League.GERMANY_CUP,
@@ -185,11 +202,31 @@ export const LeagueMap: Record<number, any> = {
185
202
  id: League.FIFA_WORLD_CUP_U20,
186
203
  isDrawAvailable: true,
187
204
  },
205
+ [League.SUMMER_OLYMPICS_HANDBALL_WOMEN]: {
206
+ sport: Sport.HANDBALL,
207
+ id: League.SUMMER_OLYMPICS_HANDBALL_WOMEN,
208
+ isDrawAvailable: true,
209
+ },
210
+ [League.SUMMER_OLYMPICS_HANDBALL]: {
211
+ sport: Sport.HANDBALL,
212
+ id: League.SUMMER_OLYMPICS_HANDBALL,
213
+ isDrawAvailable: true,
214
+ },
188
215
  [League.EUROLEAGUE]: {
189
216
  sport: Sport.BASKETBALL,
190
217
  id: League.EUROLEAGUE,
191
218
  isDrawAvailable: false,
192
219
  },
220
+ [League.SUMMER_OLYMPICS_BASKETBALL]: {
221
+ sport: Sport.BASKETBALL,
222
+ id: League.SUMMER_OLYMPICS_BASKETBALL,
223
+ isDrawAvailable: false,
224
+ },
225
+ [League.SUMMER_OLYMPICS_BASKETBALL_WOMEN]: {
226
+ sport: Sport.BASKETBALL,
227
+ id: League.SUMMER_OLYMPICS_BASKETBALL_WOMEN,
228
+ isDrawAvailable: false,
229
+ },
193
230
  [League.FIBA_WORLD_CUP]: {
194
231
  sport: Sport.BASKETBALL,
195
232
  id: League.FIBA_WORLD_CUP,
@@ -200,6 +237,21 @@ export const LeagueMap: Record<number, any> = {
200
237
  id: League.FORMULA1,
201
238
  isDrawAvailable: false,
202
239
  },
240
+ [League.SUMMER_OLYMPICS_BEACH_VOLEYBALL_WOMEN]: {
241
+ sport: Sport.VOLLEYBALL,
242
+ id: League.SUMMER_OLYMPICS_BEACH_VOLEYBALL_WOMEN,
243
+ isDrawAvailable: false,
244
+ },
245
+ [League.SUMMER_OLYMPICS_BEACH_VOLEYBALL]: {
246
+ sport: Sport.VOLLEYBALL,
247
+ id: League.SUMMER_OLYMPICS_BEACH_VOLEYBALL,
248
+ isDrawAvailable: false,
249
+ },
250
+ [League.SUMMER_OLYMPICS_TABLE_TENNIS]: {
251
+ sport: Sport.TABLE_TENNIS,
252
+ id: League.SUMMER_OLYMPICS_TABLE_TENNIS,
253
+ isDrawAvailable: false,
254
+ },
203
255
  [League.MOTOGP]: {
204
256
  sport: Sport.MOTOSPORT,
205
257
  id: League.MOTOGP,
@@ -210,11 +262,48 @@ export const LeagueMap: Record<number, any> = {
210
262
  id: League.SAUDI_PROFESSIONAL_LEAGUE,
211
263
  isDrawAvailable: true,
212
264
  },
265
+ [League.SUMMER_OLYMPICS_WATERPOLO]: {
266
+ sport: Sport.WATERPOLO,
267
+ id: League.SUMMER_OLYMPICS_WATERPOLO,
268
+ isDrawAvailable: true,
269
+ },
270
+ [League.SUMMER_OLYMPICS_VOLEYBALL_WOMEN]: {
271
+ sport: Sport.VOLLEYBALL,
272
+ id: League.SUMMER_OLYMPICS_VOLEYBALL_WOMEN,
273
+ isDrawAvailable: false,
274
+ },
275
+ [League.SUMMER_OLYMPICS_VOLEYBALL]: {
276
+ sport: Sport.VOLLEYBALL,
277
+ id: League.SUMMER_OLYMPICS_VOLEYBALL,
278
+ isDrawAvailable: false,
279
+ },
213
280
  [League.BOXING]: {
214
281
  sport: Sport.FIGHTING,
215
282
  id: League.BOXING,
216
283
  isDrawAvailable: false,
217
284
  },
285
+ [League.SUMMER_OLYMPICS_RUGBY]: {
286
+ sport: Sport.RUGBY,
287
+ id: League.SUMMER_OLYMPICS_RUGBY,
288
+ isDrawAvailable: true,
289
+ },
290
+ [League.SUMMER_OLYMPICS_RUGBY_WOMEN]: {
291
+ sport: Sport.RUGBY,
292
+ id: League.SUMMER_OLYMPICS_RUGBY_WOMEN,
293
+
294
+ isDrawAvailable: true,
295
+ },
296
+ [League.SUMMER_OLYMPICS_HOCKEY_WOMEN]: {
297
+ sport: Sport.HOCKEY,
298
+ id: League.SUMMER_OLYMPICS_HOCKEY_WOMEN,
299
+
300
+ isDrawAvailable: true,
301
+ },
302
+ [League.SUMMER_OLYMPICS_HOCKEY]: {
303
+ sport: Sport.HOCKEY,
304
+ id: League.SUMMER_OLYMPICS_HOCKEY,
305
+ isDrawAvailable: true,
306
+ },
218
307
  [League.UEFA_NATIONS_LEAGUE]: {
219
308
  sport: Sport.SOCCER,
220
309
  id: League.UEFA_NATIONS_LEAGUE,
@@ -235,6 +324,16 @@ export const LeagueMap: Record<number, any> = {
235
324
  id: League.DOTA2,
236
325
  isDrawAvailable: false,
237
326
  },
327
+ [League.SUMMER_OLYMPICS_BASKETBALL_3X3]: {
328
+ sport: Sport.BASKETBALL,
329
+ id: League.SUMMER_OLYMPICS_BASKETBALL_3X3,
330
+ isDrawAvailable: false,
331
+ },
332
+ [League.SUMMER_OLYMPICS_BASKETBALL_3X3_WOMEN]: {
333
+ sport: Sport.BASKETBALL,
334
+ id: League.SUMMER_OLYMPICS_BASKETBALL_3X3_WOMEN,
335
+ isDrawAvailable: false,
336
+ },
238
337
  [League.SUMMER_OLYMPICS_QUALIFICATION]: {
239
338
  sport: Sport.BASKETBALL,
240
339
  id: League.SUMMER_OLYMPICS_QUALIFICATION,
@@ -257,6 +356,7 @@ export const LeagueMap: Record<number, any> = {
257
356
  },
258
357
  [League.NON_TITLE_BOXING]: {
259
358
  sport: Sport.FIGHTING,
359
+ id: League.NON_TITLE_BOXING,
260
360
  isDrawAvailable: false,
261
361
  },
262
362
  [League.UEFA_CHAMPIONS_LEAGUE_QUALIFICATION]: {
@@ -271,6 +371,7 @@ export const LeagueMap: Record<number, any> = {
271
371
  },
272
372
  [League.UEFA_CONFERENCE_LEAGUE_QUALIFICATION]: {
273
373
  sport: Sport.SOCCER,
374
+ id: League.UEFA_CONFERENCE_LEAGUE_QUALIFICATION,
274
375
  isDrawAvailable: true,
275
376
  },
276
377
  [League.GOLF_H2H]: {
@@ -288,35 +389,6 @@ export const LeagueMap: Record<number, any> = {
288
389
  id: League.LIGA_MX,
289
390
  isDrawAvailable: true,
290
391
  },
291
- [League.SUMMER_OLYMPICS_SOCCER_WOMEN]: {
292
- sport: Sport.SOCCER,
293
- id: League.SUMMER_OLYMPICS_SOCCER_WOMEN,
294
- isDrawAvailable: true,
295
- },
296
- [League.SUMMER_OLYMPICS_SOCCER]: {
297
- sport: Sport.SOCCER,
298
- id: League.SUMMER_OLYMPICS_SOCCER,
299
- isDrawAvailable: true,
300
- },
301
- [League.SUMMER_OLYMPICS_BASKETBALL]: {
302
- sport: Sport.BASKETBALL,
303
- id: League.SUMMER_OLYMPICS_BASKETBALL,
304
- isDrawAvailable: false,
305
- },
306
- [League.SUMMER_OLYMPICS_BASKETBALL_WOMEN]: {
307
- sport: Sport.BASKETBALL,
308
- id: League.SUMMER_OLYMPICS_BASKETBALL_WOMEN,
309
- isDrawAvailable: false,
310
- },
311
- [League.SUMMER_OLYMPICS_VOLEYBALL_WOMEN]: {
312
- sport: Sport.VOLLEYBALL,
313
- id: League.SUMMER_OLYMPICS_VOLEYBALL_WOMEN,
314
- isDrawAvailable: false,
315
- },
316
- [League.SUMMER_OLYMPICS_VOLEYBALL]: {
317
- sport: Sport.VOLLEYBALL,
318
- isDrawAvailable: false,
319
- },
320
392
  };
321
393
 
322
394
  export const VOLLEYBALL_SET_THRESHOLD = 2;
@@ -14,6 +14,7 @@ export const Sport = {
14
14
  CRICKET: 'Cricket',
15
15
  MOTOSPORT: 'Motosport',
16
16
  GOLF: 'Golf',
17
+ TABLE_TENNIS: 'TableTennis',
17
18
  EMPTY: '',
18
19
  };
19
20
 
@@ -53,6 +54,7 @@ export const League = {
53
54
  ITALY_CUP: 141,
54
55
  TENNIS_GS: 153,
55
56
  TENNIS_MASTERS: 156,
57
+ SUMMER_OLYMPICS_TENNIS: 158,
56
58
  GERMANY_CUP: 209,
57
59
  LIGA_MX: 230,
58
60
  BRAZIL_1: 268,
@@ -65,14 +67,19 @@ export const League = {
65
67
  SUMMER_OLYMPICS_BASKETBALL_WOMEN: 407,
66
68
  FIBA_WORLD_CUP: 409,
67
69
  FORMULA1: 445,
70
+ SUMMER_OLYMPICS_BEACH_VOLEYBALL_WOMEN: 453,
71
+ SUMMER_OLYMPICS_BEACH_VOLEYBALL: 454,
68
72
  MOTOGP: 497,
69
73
  SAUDI_PROFESSIONAL_LEAGUE: 536,
70
74
  SUMMER_OLYMPICS_WATERPOLO: 8881,
71
75
  SUMMER_OLYMPICS_VOLEYBALL_WOMEN: 8893,
72
76
  SUMMER_OLYMPICS_VOLEYBALL: 8894,
77
+ SUMMER_OLYMPICS_TABLE_TENNIS: 8910,
73
78
  BOXING: 9196,
74
79
  SUMMER_OLYMPICS_RUGBY: 9578,
75
80
  SUMMER_OLYMPICS_RUGBY_WOMEN: 9588,
81
+ SUMMER_OLYMPICS_HOCKEY_WOMEN: 9698,
82
+ SUMMER_OLYMPICS_HOCKEY: 9699,
76
83
  UEFA_NATIONS_LEAGUE: 9806,
77
84
  CONCACAF_NATIONS_LEAGUE: 9821,
78
85
  CSGO: 9977,
@@ -126,6 +133,7 @@ export const LEAGUES_NO_FORMAL_HOME_AWAY = [
126
133
  League.LOL,
127
134
  League.TENNIS_GS,
128
135
  League.TENNIS_MASTERS,
136
+ League.SUMMER_OLYMPICS_TENNIS,
129
137
  League.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_1,
130
138
  League.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_2,
131
139
  League.TENNIS_GRAND_SLAM_LIVE_MAPPING_V2_3,
@@ -1,4 +1,5 @@
1
- import { LEAGUES_NO_FORMAL_HOME_AWAY, League } from '../enums/sports';
1
+ import { LEAGUES_NO_FORMAL_HOME_AWAY, Sport } from '../enums/sports';
2
+ import { getLeagueSport } from './sports';
2
3
 
3
4
  export const teamNamesMatching = (
4
5
  leagueId: number,
@@ -68,10 +69,8 @@ export const gamesDatesMatching = (
68
69
  tennisDifferenceEnvVariable: number
69
70
  ) => {
70
71
  let datesMatch;
71
- if (
72
- sportId.toString().startsWith(League.TENNIS_GS.toString()) ||
73
- sportId.toString().startsWith(League.TENNIS_MASTERS.toString())
74
- ) {
72
+ const marketSport = getLeagueSport(sportId);
73
+ if (marketSport == Sport.TENNIS) {
75
74
  const opticOddsTimestamp = apiStartDate.getTime();
76
75
  const marketTimestamp = marketMaturityDate.getTime();
77
76
  const differenceBetweenDates = Math.abs(marketTimestamp - opticOddsTimestamp);
@@ -26,8 +26,10 @@ export const checkGameContraints = (opticOddsScoresApiResponse, marketLeague, co
26
26
  const marketSport = getLeagueSport(marketLeague);
27
27
 
28
28
  if (currentGameStatus.toLowerCase() == 'completed') {
29
- console.log(`Blocking game ${homeTeam} - ${awayTeam} because it is no longer live.`);
30
- return null;
29
+ return {
30
+ allow: false,
31
+ message: `Blocking game ${homeTeam} - ${awayTeam} because it is no longer live.`,
32
+ };
31
33
  }
32
34
 
33
35
  let allowedObject;
@@ -169,7 +171,8 @@ export const allowGameSportWithResultConstraint = (
169
171
 
170
172
  if (
171
173
  (marketLeague.toString().startsWith(League.TENNIS_GS) && !atpGrandSlamMatch) ||
172
- marketLeague.toString().startsWith(League.TENNIS_MASTERS)
174
+ marketLeague.toString().startsWith(League.TENNIS_MASTERS) ||
175
+ marketLeague.toString().startsWith(League.SUMMER_OLYMPICS_TENNIS)
173
176
  ) {
174
177
  return checkResultConstraint(
175
178
  homeTeam,