@levrbet/shared 0.2.87 → 0.2.89
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/dist/core/contracts/abis/LevrManager.d.ts +1008 -988
- package/dist/core/contracts/abis/LevrManager.js +1538 -499
- package/dist/core/contracts/abis/LevrManager.js.map +1 -1
- package/dist/core/contracts/abis/index.d.ts +1008 -988
- package/dist/core/contracts/addresses.d.ts +21 -21
- package/dist/core/contracts/addresses.js +19 -19
- package/dist/react/hooks/contracts/useContracts.d.ts +19 -19
- package/dist/server/config/redis.d.ts +28 -49
- package/dist/server/config/redis.js +57 -127
- package/dist/server/config/redis.js.map +1 -1
- package/dist/server/liquidation-engine/redis.cache.manager/prices.set.manager.d.ts +9 -9
- package/dist/server/liquidation-engine/redis.cache.manager/prices.set.manager.js.map +1 -1
- package/dist/server/liquidation-engine/redis.cache.manager/prices.set.manager.test.js +1 -1
- package/dist/server/liquidation-engine/redis.cache.manager/prices.set.manager.test.js.map +1 -1
- package/dist/server/oracle/config/game-periods/providers/optic-odds.periods.d.ts +4 -0
- package/dist/server/oracle/config/game-periods/providers/optic-odds.periods.js +5 -1
- package/dist/server/oracle/config/game-periods/providers/optic-odds.periods.js.map +1 -1
- package/dist/server/oracle/config/game-periods/sports.config.d.ts +1 -1
- package/dist/server/oracle/config/game-periods/sports.config.js +53 -4
- package/dist/server/oracle/config/game-periods/sports.config.js.map +1 -1
- package/dist/server/oracle/config/game-periods/types.d.ts +9 -1
- package/dist/server/oracle/config/game-periods/types.js +5 -0
- package/dist/server/oracle/config/game-periods/types.js.map +1 -1
- package/dist/server/oracle/redis-cache-manager/channels.d.ts +2 -2
- package/dist/server/oracle/redis-cache-manager/channels.js.map +1 -1
- package/dist/server/oracle/redis-cache-manager/game.cache.service.d.ts +27 -26
- package/dist/server/oracle/redis-cache-manager/game.cache.service.js.map +1 -1
- package/dist/server/oracle/redis-cache-manager/game.progress.d.ts +4 -4
- package/dist/server/oracle/redis-cache-manager/game.progress.js.map +1 -1
- package/dist/server/oracle/redis-cache-manager/leagues.cache.service.d.ts +3 -3
- package/dist/server/oracle/redis-cache-manager/leagues.cache.service.js.map +1 -1
- package/dist/server/oracle/redis-cache-manager/market.cache.service.d.ts +10 -10
- package/dist/server/oracle/redis-cache-manager/market.cache.service.js.map +1 -1
- package/dist/server/oracle/redis-cache-manager/market.query.engine.d.ts +17 -17
- package/dist/server/oracle/redis-cache-manager/market.query.engine.js.map +1 -1
- package/dist/server/utils/game_progress/caclulate.game.progress.d.ts +132 -4
- package/dist/server/utils/game_progress/caclulate.game.progress.js +195 -24
- package/dist/server/utils/game_progress/caclulate.game.progress.js.map +1 -1
- package/dist/server/utils/game_progress/game.utils.d.ts +10 -1
- package/dist/server/utils/game_progress/game.utils.js +95 -38
- package/dist/server/utils/game_progress/game.utils.js.map +1 -1
- package/dist/server/utils/game_progress/parser.js +6 -0
- package/dist/server/utils/game_progress/parser.js.map +1 -1
- package/package.json +1 -1
- package/prisma/schema.prisma +39 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"caclulate.game.progress.js","sourceRoot":"","sources":["../../../../src/server/utils/game_progress/caclulate.game.progress.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"caclulate.game.progress.js","sourceRoot":"","sources":["../../../../src/server/utils/game_progress/caclulate.game.progress.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAEH,2CAA2C;AAC3C,wCAA4C;AAC5C,yCAA4E;AAC5E,4DAA8F;AAC9F,qCAAkD;AAUlD;;;;;;;GAOG;AACH,MAAM,cAAc,GAA2D;IAC3E,CAAC,mBAAY,CAAC,OAAO,CAAC,EAAE;QACpB,CAAC,mBAAU,CAAC,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE,EAAE;YACnC,IAAI,aAAa,KAAK,EAAE;gBAAE,OAAO,CAAC,CAAA;YAClC,IAAI,aAAa,KAAK,EAAE;gBAAE,OAAO,CAAC,CAAA;YAClC,OAAO,IAAI,CAAA;QACf,CAAC;QACD,CAAC,mBAAU,CAAC,UAAU,CAAC,EAAE,CAAC,aAAa,EAAE,YAAY,EAAE,EAAE;YACrD,IAAI,aAAa,IAAI,CAAC,IAAI,aAAa,IAAI,YAAY;gBAAE,OAAO,aAAa,CAAA;YAC7E,OAAO,IAAI,CAAA;QACf,CAAC;QACD,CAAC,mBAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,aAAa,EAAE,YAAY,EAAE,EAAE;YACnD,IAAI,aAAa,IAAI,CAAC,IAAI,aAAa,IAAI,YAAY;gBAAE,OAAO,aAAa,CAAA;YAC7E,OAAO,IAAI,CAAA;QACf,CAAC;QACD,CAAC,mBAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,aAAa,EAAE,YAAY,EAAE,EAAE;YACnD,IAAI,aAAa,IAAI,CAAC,IAAI,aAAa,IAAI,YAAY;gBAAE,OAAO,aAAa,CAAA;YAC7E,OAAO,IAAI,CAAA;QACf,CAAC;KACJ;IACD,CAAC,mBAAY,CAAC,UAAU,CAAC,EAAE;QACvB,CAAC,mBAAU,CAAC,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE,YAAY,EAAE,EAAE;YACjD,IAAI,aAAa,IAAI,CAAC,IAAI,aAAa,IAAI,YAAY;gBAAE,OAAO,aAAa,CAAA;YAC7E,OAAO,IAAI,CAAA;QACf,CAAC;QACD,CAAC,mBAAU,CAAC,UAAU,CAAC,EAAE,CAAC,aAAa,EAAE,YAAY,EAAE,EAAE;YACrD,IAAI,aAAa,IAAI,CAAC,IAAI,aAAa,IAAI,YAAY;gBAAE,OAAO,aAAa,CAAA;YAC7E,OAAO,IAAI,CAAA;QACf,CAAC;QACD,CAAC,mBAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,aAAa,EAAE,YAAY,EAAE,EAAE;YACnD,IAAI,aAAa,IAAI,CAAC,IAAI,aAAa,IAAI,YAAY;gBAAE,OAAO,aAAa,CAAA;YAC7E,OAAO,IAAI,CAAA;QACf,CAAC;QACD,CAAC,mBAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,aAAa,EAAE,YAAY,EAAE,EAAE;YACnD,IAAI,aAAa,IAAI,CAAC,IAAI,aAAa,IAAI,YAAY;gBAAE,OAAO,aAAa,CAAA;YAC7E,OAAO,IAAI,CAAA;QACf,CAAC;KACJ;CACJ,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,mBAAmB,GAAuC;IAC5D,CAAC,mBAAY,CAAC,OAAO,CAAC,EAAE,CAAC,aAAa,EAAE,EAAE;QACtC,IAAI,aAAa,KAAK,EAAE;YAAE,OAAO,CAAC,CAAA;QAClC,IAAI,aAAa,KAAK,EAAE;YAAE,OAAO,CAAC,CAAA;QAClC,OAAO,IAAI,CAAA;IACf,CAAC;IACD,CAAC,mBAAY,CAAC,UAAU,CAAC,EAAE,CAAC,aAAa,EAAE,YAAY,EAAE,EAAE;QACvD,IAAI,aAAa,IAAI,CAAC,IAAI,aAAa,IAAI,YAAY;YAAE,OAAO,aAAa,CAAA;QAC7E,OAAO,IAAI,CAAA;IACf,CAAC;CACJ,CAAA;AAED;;;;;;;;;;;;;;;;GAgBG;AACI,MAAM,qBAAqB,GAAG,CACjC,aAAqB,EACrB,SAAiB,EACjB,UAAsB,EACtB,QAAsB,EACtB,aAAuB,EACvB,cAAuB,EACzB,EAAE;IACA,MAAM,MAAM,GAAG,oCAA2B,CAAC,UAAU,CAAC,CAAA;IACtD,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IAExB,mDAAmD;IACnD,MAAM,YAAY,GAAG,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAC7F,MAAM,iBAAiB,GAAG,YAAY,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAA;IAEvE,kGAAkG;IAClG,MAAM,YAAY,GAAG,cAAc,IAAI,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAC,iBAAiB,CAAA;IAE7G,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;QAAE,OAAO,IAAI,CAAA;IAE9D,0DAA0D;IAC1D,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,UAAU,CAAC,CAAA;IAC1G,IAAI,CAAC,YAAY;QAAE,OAAO,IAAI,CAAA;IAE9B,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAA;IAEnF,MAAM,4BAA4B,GAAG,YAAY;QAC7C,CAAC,CAAC,YAAY,CAAC,4BAA4B;QAC3C,CAAC,CAAC,MAAM,CAAC,4BAA4B,CAAA;IAEzC,MAAM,MAAM,GAAG,YAAY,CAAC,aAAa,EAAE,YAAY,CAAC,CAAA;IACxD,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IAEhC,MAAM,kBAAkB,GAAG,IAAA,gCAAuB,EAAC,SAAS,CAAC,CAAA;IAC7D,IAAI,kBAAkB,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IAE5C,OAAO,IAAA,+BAAkB,EACrB,kBAAkB,EAClB,4BAA4B,EAC5B,MAAM,EACN,YAAY,EACZ,UAAU,EACV,YAAY,CAAC,YAAY,EACzB,aAAa,CAChB,CAAA;AACL,CAAC,CAAA;AA7CY,QAAA,qBAAqB,yBA6CjC;AAED;;;;;;;;;;;;;GAaG;AACI,MAAM,uBAAuB,GAAG,CAAC,aAAqB,EAAE,SAAiB,EAAE,QAAsB,EAAE,EAAE;IACxG,OAAO,IAAA,6BAAqB,EAAC,aAAa,EAAE,SAAS,EAAE,mBAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;AACvF,CAAC,CAAA;AAFY,QAAA,uBAAuB,2BAEnC;AAED;;;;;;;;;;;;;GAaG;AACI,MAAM,2BAA2B,GAAG,CAAC,aAAqB,EAAE,SAAiB,EAAE,QAAsB,EAAE,EAAE;IAC5G,OAAO,IAAA,6BAAqB,EAAC,aAAa,EAAE,SAAS,EAAE,mBAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;AAC3F,CAAC,CAAA;AAFY,QAAA,2BAA2B,+BAEvC;AAED;;;;;;;;;;;;;GAaG;AACI,MAAM,yBAAyB,GAAG,CAAC,aAAqB,EAAE,SAAiB,EAAE,QAAsB,EAAE,EAAE;IAC1G,OAAO,IAAA,6BAAqB,EAAC,aAAa,EAAE,SAAS,EAAE,mBAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;AACzF,CAAC,CAAA;AAFY,QAAA,yBAAyB,6BAErC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACI,MAAM,yBAAyB,GAAG,CAAC,aAAqB,EAAE,aAAsB,EAAE,EAAE;IACvF,MAAM,MAAM,GAAG,oCAA2B,CAAC,mBAAU,CAAC,QAAQ,CAAC,CAAA;IAC/D,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IACxB,OAAO,IAAA,yCAA4B,EAAC,aAAa,EAAE,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,CAAA;AAC1F,CAAC,CAAA;AAJY,QAAA,yBAAyB,6BAIrC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACI,MAAM,sBAAsB,GAAG,CAAC,aAAqB,EAAE,SAAiB,EAAE,QAAsB,EAAE,EAAE;IACvG,OAAO,IAAA,6BAAqB,EACxB,aAAa,EACb,SAAS,EACT,mBAAU,CAAC,UAAU,EACrB,QAAQ,EACR,SAAS,EACT,yBAAgB,CAAC,eAAe,CACnC,CAAA;AACL,CAAC,CAAA;AATY,QAAA,sBAAsB,0BASlC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACI,MAAM,sBAAsB,GAAG,CAAC,aAAqB,EAAE,SAAiB,EAAE,QAAsB,EAAE,EAAE;IACvG,OAAO,IAAA,6BAAqB,EACxB,aAAa,EACb,SAAS,EACT,mBAAU,CAAC,QAAQ,EACnB,QAAQ,EACR,SAAS,EACT,yBAAgB,CAAC,aAAa,CACjC,CAAA;AACL,CAAC,CAAA;AATY,QAAA,sBAAsB,0BASlC"}
|
|
@@ -1,2 +1,11 @@
|
|
|
1
1
|
import { SportGroup } from "@prisma/client";
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* For sports like Baseball where we only track period (inning) progress, not time.
|
|
4
|
+
* Baseball: 9 innings, each with top (0) and bottom (1) = 18 half-innings total.
|
|
5
|
+
* Progress is calculated as being IN that half-inning (not completed).
|
|
6
|
+
* @param period - Current inning (1-9)
|
|
7
|
+
* @param totalPeriods - Total innings (typically 9)
|
|
8
|
+
* @param isTopOfInning - true = top of inning (first half), false = bottom (second half)
|
|
9
|
+
*/
|
|
10
|
+
export declare const calculateBaseballProgressBPS: (period: number, totalPeriods: number, isTopOfInning: boolean) => number;
|
|
11
|
+
export declare const getGameProgressBPS: (gameClockInSeconds: number, totalPeriodDurationInSeconds: number, period: number, totalPeriods: number, sportGroup: SportGroup, clockCountUp: boolean, isTopOfInning?: boolean) => number | null;
|
|
@@ -1,63 +1,120 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getGameProgressBPS = void 0;
|
|
3
|
+
exports.getGameProgressBPS = exports.calculateBaseballProgressBPS = void 0;
|
|
4
4
|
const client_1 = require("@prisma/client");
|
|
5
|
-
const
|
|
5
|
+
const MAX_BASIS_POINTS = 1e4;
|
|
6
|
+
/**
|
|
7
|
+
* For sports like Baseball where we only track period (inning) progress, not time.
|
|
8
|
+
* Baseball: 9 innings, each with top (0) and bottom (1) = 18 half-innings total.
|
|
9
|
+
* Progress is calculated as being IN that half-inning (not completed).
|
|
10
|
+
* @param period - Current inning (1-9)
|
|
11
|
+
* @param totalPeriods - Total innings (typically 9)
|
|
12
|
+
* @param isTopOfInning - true = top of inning (first half), false = bottom (second half)
|
|
13
|
+
*/
|
|
14
|
+
const calculateBaseballProgressBPS = (period, totalPeriods, isTopOfInning) => {
|
|
6
15
|
if (period > totalPeriods)
|
|
7
|
-
return
|
|
8
|
-
|
|
9
|
-
|
|
16
|
+
return MAX_BASIS_POINTS;
|
|
17
|
+
if (period < 1)
|
|
18
|
+
return 0;
|
|
19
|
+
// Each inning has 2 half-innings (top and bottom)
|
|
20
|
+
const totalHalfInnings = totalPeriods * 2;
|
|
21
|
+
// Current half-inning number (1-indexed): (period - 1) * 2 + 1 for top, + 2 for bottom
|
|
22
|
+
const currentHalfInning = (period - 1) * 2 + (isTopOfInning ? 1 : 2);
|
|
23
|
+
// Progress represents being IN this half-inning (so 9th bottom = 18/18 = 100%)
|
|
24
|
+
const progress = currentHalfInning / totalHalfInnings;
|
|
25
|
+
const value = Math.round(progress * MAX_BASIS_POINTS);
|
|
26
|
+
if (value > MAX_BASIS_POINTS)
|
|
27
|
+
return MAX_BASIS_POINTS;
|
|
28
|
+
if (value < 0)
|
|
29
|
+
return 0;
|
|
30
|
+
return value;
|
|
10
31
|
};
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
32
|
+
exports.calculateBaseballProgressBPS = calculateBaseballProgressBPS;
|
|
33
|
+
/**
|
|
34
|
+
* Calculate game progress in BPS (basis points, max 10000).
|
|
35
|
+
* For most sports: elapsedSeconds is time elapsed in current period.
|
|
36
|
+
* For soccer: elapsedSeconds is cumulative time across all periods (clock doesn't reset).
|
|
37
|
+
*/
|
|
38
|
+
const calculateProgressBPSFromElapsedTime = (elapsedSeconds, totalPeriodDurationInSeconds, totalPeriods, period, sportGroup) => {
|
|
15
39
|
if (totalPeriodDurationInSeconds === 0)
|
|
16
40
|
return 0;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
41
|
+
const totalGameDurationInSeconds = totalPeriods * totalPeriodDurationInSeconds;
|
|
42
|
+
if (sportGroup === client_1.SportGroup.Soccer) {
|
|
43
|
+
// Soccer: elapsedSeconds is cumulative time across all periods (clock doesn't reset)
|
|
44
|
+
const cumulativeElapsed = Math.max(0, Math.min(elapsedSeconds, totalGameDurationInSeconds));
|
|
45
|
+
const overallProgress = cumulativeElapsed / totalGameDurationInSeconds;
|
|
46
|
+
const value = Math.round(overallProgress * MAX_BASIS_POINTS);
|
|
47
|
+
if (value > MAX_BASIS_POINTS)
|
|
48
|
+
return MAX_BASIS_POINTS;
|
|
49
|
+
if (value < 0)
|
|
50
|
+
return 0;
|
|
51
|
+
return value;
|
|
52
|
+
}
|
|
53
|
+
// Other sports: elapsedSeconds is time elapsed in current period (clock resets each period)
|
|
54
|
+
const clampedElapsedSeconds = Math.max(0, Math.min(elapsedSeconds, totalPeriodDurationInSeconds));
|
|
55
|
+
const periodProgress = clampedElapsedSeconds / totalPeriodDurationInSeconds;
|
|
20
56
|
const periodsPassed = period - 1;
|
|
21
|
-
|
|
22
|
-
const
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
if (value >
|
|
26
|
-
return
|
|
57
|
+
// Progress from completed periods + progress in current period
|
|
58
|
+
const pastProgressBPS = (periodsPassed / totalPeriods) * MAX_BASIS_POINTS;
|
|
59
|
+
const currentPeriodProgressBPS = (periodProgress * MAX_BASIS_POINTS) / totalPeriods;
|
|
60
|
+
const value = Math.round(pastProgressBPS + currentPeriodProgressBPS);
|
|
61
|
+
if (value > MAX_BASIS_POINTS)
|
|
62
|
+
return MAX_BASIS_POINTS;
|
|
27
63
|
if (value < 0)
|
|
28
64
|
return 0;
|
|
29
65
|
return value;
|
|
30
66
|
};
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
67
|
+
/**
|
|
68
|
+
* For count-up clocks (stopwatch style).
|
|
69
|
+
* Soccer: clock is cumulative across periods (0:00 → 90:00+), doesn't reset at halftime.
|
|
70
|
+
* Other sports: clock typically resets each period (0:00 → period end).
|
|
71
|
+
*
|
|
72
|
+
* Example (Soccer): { totalPeriods: 2, totalPeriodDurationInSeconds: 45 * 60 }, gameClock: '57:20'
|
|
73
|
+
* → 57:20 = 3440 seconds cumulative → 3440/5400 = ~63.7% game progress
|
|
74
|
+
*/
|
|
75
|
+
const calculateGameProgressBPSWithGameClockCountUp = (gameClockInSeconds, totalPeriodDurationInSeconds, totalPeriods, period, sportGroup) => {
|
|
76
|
+
if (gameClockInSeconds === null)
|
|
37
77
|
return null;
|
|
38
|
-
//
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
78
|
+
// For soccer the game clock is cumulative across all periods
|
|
79
|
+
if (sportGroup === client_1.SportGroup.Soccer) {
|
|
80
|
+
return calculateProgressBPSFromElapsedTime(gameClockInSeconds, totalPeriodDurationInSeconds, totalPeriods, period, sportGroup);
|
|
81
|
+
}
|
|
82
|
+
// For other sports with count-up clocks, the clock resets each period
|
|
83
|
+
// So gameClockInSeconds is already the elapsed time in the current period
|
|
84
|
+
return calculateProgressBPSFromElapsedTime(gameClockInSeconds, totalPeriodDurationInSeconds, totalPeriods, period, sportGroup);
|
|
43
85
|
};
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
86
|
+
/**
|
|
87
|
+
* For countdown clocks (showing remaining time).
|
|
88
|
+
* gameClockInSeconds = remaining time in current period.
|
|
89
|
+
* Soccer (rare): Need to compute cumulative elapsed from previous periods.
|
|
90
|
+
* Other sports: Clock shows remaining time in current period, compute elapsed.
|
|
91
|
+
*/
|
|
92
|
+
const calculateGameProgressBPSWithGameClockCountDown = (gameClockInSeconds, totalPeriodDurationInSeconds, totalPeriods, period, sportGroup) => {
|
|
93
|
+
if (gameClockInSeconds === null)
|
|
47
94
|
return null;
|
|
48
|
-
|
|
49
|
-
|
|
95
|
+
// Elapsed in current period = total period duration - remaining time
|
|
96
|
+
const elapsedSecondsInCurrentPeriod = totalPeriodDurationInSeconds - gameClockInSeconds;
|
|
97
|
+
if (sportGroup === client_1.SportGroup.Soccer) {
|
|
98
|
+
// Soccer needs cumulative elapsed seconds (clock doesn't reset)
|
|
99
|
+
const previousPeriodsSeconds = (period - 1) * totalPeriodDurationInSeconds;
|
|
100
|
+
const cumulativeElapsedSeconds = previousPeriodsSeconds + elapsedSecondsInCurrentPeriod;
|
|
101
|
+
return calculateProgressBPSFromElapsedTime(cumulativeElapsedSeconds, totalPeriodDurationInSeconds, totalPeriods, period, sportGroup);
|
|
102
|
+
}
|
|
103
|
+
// Other sports: pass elapsed time in current period
|
|
104
|
+
return calculateProgressBPSFromElapsedTime(elapsedSecondsInCurrentPeriod, totalPeriodDurationInSeconds, totalPeriods, period, sportGroup);
|
|
50
105
|
};
|
|
51
|
-
const getGameProgressBPS = (gameClockInSeconds, totalPeriodDurationInSeconds, period, totalPeriods, sportGroup, clockCountUp
|
|
106
|
+
const getGameProgressBPS = (gameClockInSeconds, totalPeriodDurationInSeconds, period, totalPeriods, sportGroup, clockCountUp, isTopOfInning // Only used for Baseball
|
|
107
|
+
) => {
|
|
52
108
|
switch (sportGroup) {
|
|
53
109
|
case client_1.SportGroup.Baseball:
|
|
54
|
-
|
|
110
|
+
// Default to top of inning if not specified
|
|
111
|
+
return (0, exports.calculateBaseballProgressBPS)(period, totalPeriods, isTopOfInning ?? true);
|
|
55
112
|
default:
|
|
56
113
|
if (clockCountUp) {
|
|
57
|
-
return calculateGameProgressBPSWithGameClockCountUp(gameClockInSeconds, totalPeriodDurationInSeconds, totalPeriods, period);
|
|
114
|
+
return calculateGameProgressBPSWithGameClockCountUp(gameClockInSeconds, totalPeriodDurationInSeconds, totalPeriods, period, sportGroup);
|
|
58
115
|
}
|
|
59
116
|
else {
|
|
60
|
-
return calculateGameProgressBPSWithGameClockCountDown(gameClockInSeconds, totalPeriodDurationInSeconds, totalPeriods, period);
|
|
117
|
+
return calculateGameProgressBPSWithGameClockCountDown(gameClockInSeconds, totalPeriodDurationInSeconds, totalPeriods, period, sportGroup);
|
|
61
118
|
}
|
|
62
119
|
}
|
|
63
120
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"game.utils.js","sourceRoot":"","sources":["../../../../src/server/utils/game_progress/game.utils.ts"],"names":[],"mappings":";;;AAAA,2CAA2C;AAE3C,MAAM,
|
|
1
|
+
{"version":3,"file":"game.utils.js","sourceRoot":"","sources":["../../../../src/server/utils/game_progress/game.utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -61,6 +61,8 @@ const parseGameClockToSeconds = (gameClock) => {
|
|
|
61
61
|
if (match?.[1] && match?.[2]) {
|
|
62
62
|
const minutes = parseInt(match[1], 10);
|
|
63
63
|
const seconds = parseInt(match[2], 10);
|
|
64
|
+
if (seconds >= 60)
|
|
65
|
+
return null; // Invalid seconds
|
|
64
66
|
return minutes * 60 + seconds;
|
|
65
67
|
}
|
|
66
68
|
break;
|
|
@@ -70,6 +72,8 @@ const parseGameClockToSeconds = (gameClock) => {
|
|
|
70
72
|
if (match?.[1] && match?.[2]) {
|
|
71
73
|
const minutes = parseInt(match[1], 10);
|
|
72
74
|
const seconds = parseInt(match[2], 10);
|
|
75
|
+
if (seconds >= 60)
|
|
76
|
+
return null; // Invalid seconds
|
|
73
77
|
return minutes * 60 + seconds;
|
|
74
78
|
}
|
|
75
79
|
break;
|
|
@@ -79,6 +83,8 @@ const parseGameClockToSeconds = (gameClock) => {
|
|
|
79
83
|
if (match?.[1] && match?.[2]) {
|
|
80
84
|
const minutes = parseInt(match[1], 10);
|
|
81
85
|
const seconds = parseInt(match[2], 10);
|
|
86
|
+
if (seconds >= 60)
|
|
87
|
+
return null; // Invalid seconds
|
|
82
88
|
return minutes * 60 + seconds;
|
|
83
89
|
}
|
|
84
90
|
break;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../../src/server/utils/game_progress/parser.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../../src/server/utils/game_progress/parser.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/prisma/schema.prisma
CHANGED
|
@@ -321,9 +321,10 @@ model User {
|
|
|
321
321
|
requireWithdrawalConfirmation Boolean @default(true)
|
|
322
322
|
|
|
323
323
|
// Inverse relations (these fix your P1012 errors)
|
|
324
|
-
referralsMade
|
|
325
|
-
referredBy
|
|
326
|
-
referralRewards
|
|
324
|
+
referralsMade Referral[] @relation("ReferrerRelations") // users they referred
|
|
325
|
+
referredBy Referral[] @relation("ReferredRelations") // who referred them
|
|
326
|
+
referralRewards ReferralReward[] @relation("UserRewards") // their reward entries
|
|
327
|
+
transactionHistory TransactionHistory[] @relation("TransactionHistory") // transaction history
|
|
327
328
|
|
|
328
329
|
createdAt DateTime @default(now())
|
|
329
330
|
updatedAt DateTime @updatedAt
|
|
@@ -466,3 +467,38 @@ model AuditLog {
|
|
|
466
467
|
@@index([timestamp])
|
|
467
468
|
@@index([userId])
|
|
468
469
|
}
|
|
470
|
+
|
|
471
|
+
enum TransactionHistoryType {
|
|
472
|
+
Deposit
|
|
473
|
+
Withdrawal
|
|
474
|
+
Wager
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
enum TransactionHistoryStatus {
|
|
478
|
+
Completed
|
|
479
|
+
Pending
|
|
480
|
+
Failed
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
enum TransactionHistoryDescription {
|
|
484
|
+
BetPlaced
|
|
485
|
+
Deposited
|
|
486
|
+
Withdrawn
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
model TransactionHistory {
|
|
490
|
+
objectId String @id @default(cuid()) @map("_id")
|
|
491
|
+
id String
|
|
492
|
+
type TransactionHistoryType
|
|
493
|
+
status TransactionHistoryStatus
|
|
494
|
+
timestamp DateTime @default(now())
|
|
495
|
+
balance Float
|
|
496
|
+
description TransactionHistoryDescription
|
|
497
|
+
amount Float
|
|
498
|
+
// Relations
|
|
499
|
+
walletAddress String
|
|
500
|
+
user User @relation("TransactionHistory", fields: [walletAddress], references: [walletAddress])
|
|
501
|
+
|
|
502
|
+
@@index([timestamp])
|
|
503
|
+
@@index([walletAddress])
|
|
504
|
+
}
|