overtime-live-trading-utils 2.0.37 → 2.0.39

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "overtime-live-trading-utils",
3
- "version": "2.0.37",
3
+ "version": "2.0.39",
4
4
  "description": "",
5
5
  "main": "main.js",
6
6
  "scripts": {
@@ -15,7 +15,7 @@
15
15
  "@types/node": "^20.8.10",
16
16
  "bytes32": "^0.0.3",
17
17
  "oddslib": "^2.1.1",
18
- "overtime-utils": "^0.0.81",
18
+ "overtime-utils": "^0.0.82",
19
19
  "react": "^17.0.1"
20
20
  },
21
21
  "devDependencies": {
@@ -2,4 +2,4 @@ export const ZERO_ODDS_MESSAGE = 'Returning zero odds cause bookmakers have 0 or
2
2
  export const DIFF_BETWEEN_BOOKMAKERS_MESSAGE = 'Returning zero odds due to percentage difference between bookmakers';
3
3
  export const NO_MATCHING_BOOKMAKERS_MESSAGE = 'Returning zero odds cause no matching bookmakers have been found';
4
4
  export const ZERO_ODDS_AFTER_SPREAD_ADJUSTMENT = 'Bad odds after spread adjustment';
5
- export const NO_MARKETS_FOR_LEAGUE_ID = 'No child markets for leagueID: 9806';
5
+ export const NO_MARKETS_FOR_LEAGUE_ID = 'No child markets for leagueID';
@@ -331,6 +331,7 @@ export const LeagueIdMapOpticOdds: Record<number, string> = {
331
331
  20218: 'International - Champions League',
332
332
  20219: 'Turkey - BSL',
333
333
  20220: 'FIBA - Eurobasket Women',
334
+ 20221: 'Philippines - Phillipine Cup',
334
335
  20296: 'Overwatch',
335
336
  20297: 'Rocket League',
336
337
  20298: 'Call of Duty',
@@ -130,7 +130,7 @@ describe('Markets', () => {
130
130
  );
131
131
 
132
132
  expect(warnSpy).toHaveBeenCalled();
133
- expect(warnSpy).toHaveBeenCalledWith(NO_MARKETS_FOR_LEAGUE_ID);
133
+ expect(warnSpy).toHaveBeenCalledWith(`${NO_MARKETS_FOR_LEAGUE_ID}: ${Number(mockSoccer.leagueId)}`);
134
134
 
135
135
  // Restore the original implementation
136
136
  warnSpy.mockRestore();
@@ -1,4 +1,9 @@
1
1
  import * as oddslib from 'oddslib';
2
+ import {
3
+ DIFF_BETWEEN_BOOKMAKERS_MESSAGE,
4
+ NO_MATCHING_BOOKMAKERS_MESSAGE,
5
+ ZERO_ODDS_MESSAGE,
6
+ } from '../constants/errors';
2
7
 
3
8
  export const getBookmakersArray = (bookmakersData: any[], sportId: any, backupLiveOddsProviders: string[]) => {
4
9
  const sportBookmakersData = bookmakersData.find((data) => Number(data.sportId) === Number(sportId));
@@ -33,7 +38,7 @@ export const checkOddsFromBookmakers = (
33
38
  homeOdds: 0,
34
39
  awayOdds: 0,
35
40
  drawOdds: 0,
36
- errorMessage: 'Returning zero odds cause no matching bookmakers have been found',
41
+ errorMessage: NO_MATCHING_BOOKMAKERS_MESSAGE,
37
42
  };
38
43
  }
39
44
 
@@ -63,7 +68,7 @@ export const checkOddsFromBookmakers = (
63
68
  homeOdds: 0,
64
69
  awayOdds: 0,
65
70
  drawOdds: 0,
66
- errorMessage: `Returning zero odds cause bookmakers have 0 or 1 odds`,
71
+ errorMessage: ZERO_ODDS_MESSAGE,
67
72
  // TODO: Return sportsbook name with zero odds
68
73
  };
69
74
  }
@@ -128,7 +133,7 @@ export const checkOddsFromBookmakers = (
128
133
  return true;
129
134
  }
130
135
  }
131
- return false; // fix for es-lint
136
+ return false;
132
137
  });
133
138
 
134
139
  if (hasLargeImpliedPercentageDifference) {
@@ -136,7 +141,7 @@ export const checkOddsFromBookmakers = (
136
141
  homeOdds: 0,
137
142
  awayOdds: 0,
138
143
  drawOdds: 0,
139
- errorMessage: 'Returning zero odds due to percentage difference between bookmakers',
144
+ errorMessage: DIFF_BETWEEN_BOOKMAKERS_MESSAGE,
140
145
  };
141
146
  }
142
147
 
@@ -1,4 +1,5 @@
1
1
  import * as oddslib from 'oddslib';
2
+ import { DIFF_BETWEEN_BOOKMAKERS_MESSAGE, ZERO_ODDS_AFTER_SPREAD_ADJUSTMENT } from '../constants/errors';
2
3
  import { OddsObject } from '../types/odds';
3
4
  import { createChildMarkets, getParentOdds } from './odds';
4
5
  import { getLeagueInfo } from './sports';
@@ -63,7 +64,7 @@ export const processMarket = (
63
64
  normalizedImplied: probability,
64
65
  };
65
66
  } else {
66
- market.errorMessage = 'Bad odds after spread adjustment';
67
+ market.errorMessage = ZERO_ODDS_AFTER_SPREAD_ADJUSTMENT;
67
68
  return {
68
69
  american: 0,
69
70
  decimal: 0,
@@ -73,38 +74,40 @@ export const processMarket = (
73
74
  });
74
75
  }
75
76
 
76
- const childMarkets = createChildMarkets(
77
- apiResponseWithOdds,
78
- sportSpreadData,
79
- market.leagueId,
80
- liveOddsProviders,
81
- defaultSpreadForLiveMarkets,
82
- leagueMap
83
- );
77
+ if (moneylineOdds.errorMessage !== DIFF_BETWEEN_BOOKMAKERS_MESSAGE) {
78
+ const childMarkets = createChildMarkets(
79
+ apiResponseWithOdds,
80
+ sportSpreadData,
81
+ market.leagueId,
82
+ liveOddsProviders,
83
+ defaultSpreadForLiveMarkets,
84
+ leagueMap
85
+ );
86
+
87
+ const packedChildMarkets = childMarkets.map((childMarket: any) => {
88
+ const preparedMarket = { ...market, ...childMarket };
89
+ const oddsAfterSpread = adjustAddedSpread(preparedMarket.odds, leagueInfo, preparedMarket.typeId);
90
+ if (preparedMarket.odds.length > 0) {
91
+ preparedMarket.odds = oddsAfterSpread.map((probability) => {
92
+ if (probability == 0) {
93
+ return {
94
+ american: 0,
95
+ decimal: 0,
96
+ normalizedImplied: 0,
97
+ };
98
+ }
84
99
 
85
- const packedChildMarkets = childMarkets.map((childMarket: any) => {
86
- const preparedMarket = { ...market, ...childMarket };
87
- const oddsAfterSpread = adjustAddedSpread(preparedMarket.odds, leagueInfo, preparedMarket.typeId);
88
- if (preparedMarket.odds.length > 0) {
89
- preparedMarket.odds = oddsAfterSpread.map((probability) => {
90
- if (probability == 0) {
91
100
  return {
92
- american: 0,
93
- decimal: 0,
94
- normalizedImplied: 0,
101
+ american: oddslib.from('impliedProbability', probability).to('moneyline'),
102
+ decimal: Number(oddslib.from('impliedProbability', probability).to('decimal').toFixed(10)),
103
+ normalizedImplied: probability,
95
104
  };
96
- }
97
-
98
- return {
99
- american: oddslib.from('impliedProbability', probability).to('moneyline'),
100
- decimal: Number(oddslib.from('impliedProbability', probability).to('decimal').toFixed(10)),
101
- normalizedImplied: probability,
102
- };
103
- });
104
- }
105
- return preparedMarket;
106
- });
107
- market.childMarkets = packedChildMarkets;
105
+ });
106
+ }
107
+ return preparedMarket;
108
+ });
109
+ market.childMarkets = packedChildMarkets;
110
+ }
108
111
 
109
112
  return market;
110
113
  };
package/src/utils/odds.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import * as oddslib from 'oddslib';
2
2
  import { MarketType, MarketTypeMap } from 'overtime-utils';
3
3
  import { DRAW, MIN_ODDS_FOR_DIFF_CHECKING, MONEYLINE_TYPE_ID, ZERO } from '../constants/common';
4
+ import { NO_MARKETS_FOR_LEAGUE_ID } from '../constants/errors';
4
5
  import { MoneylineTypes } from '../enums/sports';
5
6
  import { HomeAwayTeams, Odds, OddsObject } from '../types/odds';
6
7
  import { ChildMarket, LeagueConfigInfo } from '../types/sports';
@@ -286,7 +287,7 @@ export const createChildMarkets: (
286
287
  childMarkets.push(childMarket);
287
288
  });
288
289
  } else {
289
- console.warn(`No child markets for leagueID: ${Number(leagueId)}`);
290
+ console.warn(`${NO_MARKETS_FOR_LEAGUE_ID}: ${Number(leagueId)}`);
290
291
  }
291
292
 
292
293
  return childMarkets;