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 +1 -1
- package/package.json +1 -1
- package/src/constants/sports.ts +101 -29
- package/src/enums/sports.ts +8 -0
- package/src/utils/gameMatching.ts +4 -5
- package/src/utils/sports.ts +6 -3
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
package/src/constants/sports.ts
CHANGED
|
@@ -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;
|
package/src/enums/sports.ts
CHANGED
|
@@ -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,
|
|
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
|
-
|
|
72
|
-
|
|
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);
|
package/src/utils/sports.ts
CHANGED
|
@@ -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
|
-
|
|
30
|
-
|
|
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,
|