overtime-utils 0.2.23 → 0.2.25
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/marketTypes/playerProps.ts +73 -0
- package/src/constants/marketTypes/soccer.ts +76 -0
- package/src/constants/marketTypes.ts +55 -1
- package/src/enums/marketTypes.ts +27 -0
- package/src/types/sgp.ts +1 -0
- package/src/utils/markets.ts +24 -18
package/package.json
CHANGED
|
@@ -805,4 +805,77 @@ export const PLAYER_PROPS_MARKET_TYPE_MAP: Partial<Record<MarketType, MarketType
|
|
|
805
805
|
name: 'Passing Attempts',
|
|
806
806
|
resultType: ResultType.OVER_UNDER,
|
|
807
807
|
},
|
|
808
|
+
// Soccer half player props
|
|
809
|
+
[MarketType.FIRST_PERIOD_PLAYER_PROPS_ANYTIME_GOAL_SCORER]: {
|
|
810
|
+
id: MarketType.FIRST_PERIOD_PLAYER_PROPS_ANYTIME_GOAL_SCORER,
|
|
811
|
+
key: 'firstPeriodAnytimeGoalScorer',
|
|
812
|
+
name: '1st Half Anytime Goal Scorer',
|
|
813
|
+
resultType: ResultType.OVER_UNDER,
|
|
814
|
+
},
|
|
815
|
+
[MarketType.SECOND_PERIOD_PLAYER_PROPS_ANYTIME_GOAL_SCORER]: {
|
|
816
|
+
id: MarketType.SECOND_PERIOD_PLAYER_PROPS_ANYTIME_GOAL_SCORER,
|
|
817
|
+
key: 'secondPeriodAnytimeGoalScorer',
|
|
818
|
+
name: '2nd Half Anytime Goal Scorer',
|
|
819
|
+
resultType: ResultType.OVER_UNDER,
|
|
820
|
+
},
|
|
821
|
+
[MarketType.FIRST_PERIOD_PLAYER_PROPS_GOALS]: {
|
|
822
|
+
id: MarketType.FIRST_PERIOD_PLAYER_PROPS_GOALS,
|
|
823
|
+
key: 'firstPeriodGoals',
|
|
824
|
+
name: '1st Half Goals',
|
|
825
|
+
resultType: ResultType.OVER_UNDER,
|
|
826
|
+
},
|
|
827
|
+
[MarketType.SECOND_PERIOD_PLAYER_PROPS_GOALS]: {
|
|
828
|
+
id: MarketType.SECOND_PERIOD_PLAYER_PROPS_GOALS,
|
|
829
|
+
key: 'secondPeriodGoals',
|
|
830
|
+
name: '2nd Half Goals',
|
|
831
|
+
resultType: ResultType.OVER_UNDER,
|
|
832
|
+
},
|
|
833
|
+
[MarketType.FIRST_PERIOD_PLAYER_PROPS_FOULS]: {
|
|
834
|
+
id: MarketType.FIRST_PERIOD_PLAYER_PROPS_FOULS,
|
|
835
|
+
key: 'firstPeriodFouls',
|
|
836
|
+
name: '1st Half Fouls',
|
|
837
|
+
resultType: ResultType.OVER_UNDER,
|
|
838
|
+
},
|
|
839
|
+
[MarketType.SECOND_PERIOD_PLAYER_PROPS_FOULS]: {
|
|
840
|
+
id: MarketType.SECOND_PERIOD_PLAYER_PROPS_FOULS,
|
|
841
|
+
key: 'secondPeriodFouls',
|
|
842
|
+
name: '2nd Half Fouls',
|
|
843
|
+
resultType: ResultType.OVER_UNDER,
|
|
844
|
+
},
|
|
845
|
+
[MarketType.FIRST_PERIOD_PLAYER_PROPS_OFFSIDES]: {
|
|
846
|
+
id: MarketType.FIRST_PERIOD_PLAYER_PROPS_OFFSIDES,
|
|
847
|
+
key: 'firstPeriodOffsides',
|
|
848
|
+
name: '1st Half Offsides',
|
|
849
|
+
resultType: ResultType.OVER_UNDER,
|
|
850
|
+
},
|
|
851
|
+
[MarketType.SECOND_PERIOD_PLAYER_PROPS_OFFSIDES]: {
|
|
852
|
+
id: MarketType.SECOND_PERIOD_PLAYER_PROPS_OFFSIDES,
|
|
853
|
+
key: 'secondPeriodOffsides',
|
|
854
|
+
name: '2nd Half Offsides',
|
|
855
|
+
resultType: ResultType.OVER_UNDER,
|
|
856
|
+
},
|
|
857
|
+
[MarketType.FIRST_PERIOD_PLAYER_PROPS_SHOTS]: {
|
|
858
|
+
id: MarketType.FIRST_PERIOD_PLAYER_PROPS_SHOTS,
|
|
859
|
+
key: 'firstPeriodShots',
|
|
860
|
+
name: '1st Half Shots',
|
|
861
|
+
resultType: ResultType.OVER_UNDER,
|
|
862
|
+
},
|
|
863
|
+
[MarketType.SECOND_PERIOD_PLAYER_PROPS_SHOTS]: {
|
|
864
|
+
id: MarketType.SECOND_PERIOD_PLAYER_PROPS_SHOTS,
|
|
865
|
+
key: 'secondPeriodShots',
|
|
866
|
+
name: '2nd Half Shots',
|
|
867
|
+
resultType: ResultType.OVER_UNDER,
|
|
868
|
+
},
|
|
869
|
+
[MarketType.FIRST_PERIOD_PLAYER_PROPS_SHOTS_ON_TARGET]: {
|
|
870
|
+
id: MarketType.FIRST_PERIOD_PLAYER_PROPS_SHOTS_ON_TARGET,
|
|
871
|
+
key: 'firstPeriodShotsOnTarget',
|
|
872
|
+
name: '1st Half Shots On Target',
|
|
873
|
+
resultType: ResultType.OVER_UNDER,
|
|
874
|
+
},
|
|
875
|
+
[MarketType.SECOND_PERIOD_PLAYER_PROPS_SHOTS_ON_TARGET]: {
|
|
876
|
+
id: MarketType.SECOND_PERIOD_PLAYER_PROPS_SHOTS_ON_TARGET,
|
|
877
|
+
key: 'secondPeriodShotsOnTarget',
|
|
878
|
+
name: '2nd Half Shots On Target',
|
|
879
|
+
resultType: ResultType.OVER_UNDER,
|
|
880
|
+
},
|
|
808
881
|
};
|
|
@@ -16,6 +16,31 @@ export const SOCCER_MARKET_TYPE_MAP: Partial<Record<MarketType, MarketTypeInfo>>
|
|
|
16
16
|
name: 'Last',
|
|
17
17
|
resultType: ResultType.EXACT_POSITION,
|
|
18
18
|
},
|
|
19
|
+
// Who will score first/last per period - half for soccer
|
|
20
|
+
[MarketType.FIRST_PERIOD_FIRST_SCORE]: {
|
|
21
|
+
id: MarketType.FIRST_PERIOD_FIRST_SCORE,
|
|
22
|
+
key: 'firstPeriodFirstScore',
|
|
23
|
+
name: 'First 1st',
|
|
24
|
+
resultType: ResultType.EXACT_POSITION,
|
|
25
|
+
},
|
|
26
|
+
[MarketType.FIRST_PERIOD_LAST_SCORE]: {
|
|
27
|
+
id: MarketType.FIRST_PERIOD_LAST_SCORE,
|
|
28
|
+
key: 'firstPeriodLastScore',
|
|
29
|
+
name: 'Last 1st',
|
|
30
|
+
resultType: ResultType.EXACT_POSITION,
|
|
31
|
+
},
|
|
32
|
+
[MarketType.SECOND_PERIOD_FIRST_SCORE]: {
|
|
33
|
+
id: MarketType.SECOND_PERIOD_FIRST_SCORE,
|
|
34
|
+
key: 'secondPeriodFirstScore',
|
|
35
|
+
name: 'First 2nd',
|
|
36
|
+
resultType: ResultType.EXACT_POSITION,
|
|
37
|
+
},
|
|
38
|
+
[MarketType.SECOND_PERIOD_LAST_SCORE]: {
|
|
39
|
+
id: MarketType.SECOND_PERIOD_LAST_SCORE,
|
|
40
|
+
key: 'secondPeriodLastScore',
|
|
41
|
+
name: 'Last 2nd',
|
|
42
|
+
resultType: ResultType.EXACT_POSITION,
|
|
43
|
+
},
|
|
19
44
|
|
|
20
45
|
// Spread (handicap) corners
|
|
21
46
|
[MarketType.SPREAD_CORNERS]: {
|
|
@@ -205,6 +230,19 @@ export const SOCCER_MARKET_TYPE_MAP: Partial<Record<MarketType, MarketTypeInfo>>
|
|
|
205
230
|
name: 'To score at least one goal',
|
|
206
231
|
resultType: ResultType.EXACT_POSITION,
|
|
207
232
|
},
|
|
233
|
+
// To score a penalty
|
|
234
|
+
[MarketType.HOME_TEAM_TO_SCORE_PENALTY]: {
|
|
235
|
+
id: MarketType.HOME_TEAM_TO_SCORE_PENALTY,
|
|
236
|
+
key: 'homeTeamToScorePenalty',
|
|
237
|
+
name: 'To score a penalty',
|
|
238
|
+
resultType: ResultType.EXACT_POSITION,
|
|
239
|
+
},
|
|
240
|
+
[MarketType.AWAY_TEAM_TO_SCORE_PENALTY]: {
|
|
241
|
+
id: MarketType.AWAY_TEAM_TO_SCORE_PENALTY,
|
|
242
|
+
key: 'awayTeamToScorePenalty',
|
|
243
|
+
name: 'To score a penalty',
|
|
244
|
+
resultType: ResultType.EXACT_POSITION,
|
|
245
|
+
},
|
|
208
246
|
|
|
209
247
|
// To win to nil
|
|
210
248
|
[MarketType.HOME_TEAM_TO_WIN_TO_NIL]: {
|
|
@@ -519,8 +557,46 @@ export const SOCCER_MARKET_TYPE_MAP: Partial<Record<MarketType, MarketTypeInfo>>
|
|
|
519
557
|
name: 'Will there be an own goal',
|
|
520
558
|
resultType: ResultType.EXACT_POSITION,
|
|
521
559
|
},
|
|
560
|
+
// Will there be a red card
|
|
561
|
+
[MarketType.WILL_THERE_BE_A_RED_CARD]: {
|
|
562
|
+
id: MarketType.WILL_THERE_BE_A_RED_CARD,
|
|
563
|
+
key: 'willThereBeARedCard',
|
|
564
|
+
name: 'Will there be a red card',
|
|
565
|
+
resultType: ResultType.EXACT_POSITION,
|
|
566
|
+
},
|
|
567
|
+
// Will there be a penalty/red card - period (half for soccer)
|
|
568
|
+
[MarketType.FIRST_PERIOD_WILL_THERE_BE_A_PENALTY]: {
|
|
569
|
+
id: MarketType.FIRST_PERIOD_WILL_THERE_BE_A_PENALTY,
|
|
570
|
+
key: 'firstPeriodWillThereBeAPenalty',
|
|
571
|
+
name: 'Will there be a penalty 1st',
|
|
572
|
+
resultType: ResultType.EXACT_POSITION,
|
|
573
|
+
},
|
|
574
|
+
[MarketType.SECOND_PERIOD_WILL_THERE_BE_A_PENALTY]: {
|
|
575
|
+
id: MarketType.SECOND_PERIOD_WILL_THERE_BE_A_PENALTY,
|
|
576
|
+
key: 'secondPeriodWillThereBeAPenalty',
|
|
577
|
+
name: 'Will there be a penalty 2nd',
|
|
578
|
+
resultType: ResultType.EXACT_POSITION,
|
|
579
|
+
},
|
|
580
|
+
[MarketType.FIRST_PERIOD_WILL_THERE_BE_A_RED_CARD]: {
|
|
581
|
+
id: MarketType.FIRST_PERIOD_WILL_THERE_BE_A_RED_CARD,
|
|
582
|
+
key: 'firstPeriodWillThereBeARedCard',
|
|
583
|
+
name: 'Will there be a red card 1st',
|
|
584
|
+
resultType: ResultType.EXACT_POSITION,
|
|
585
|
+
},
|
|
586
|
+
[MarketType.SECOND_PERIOD_WILL_THERE_BE_A_RED_CARD]: {
|
|
587
|
+
id: MarketType.SECOND_PERIOD_WILL_THERE_BE_A_RED_CARD,
|
|
588
|
+
key: 'secondPeriodWillThereBeARedCard',
|
|
589
|
+
name: 'Will there be a red card 2nd',
|
|
590
|
+
resultType: ResultType.EXACT_POSITION,
|
|
591
|
+
},
|
|
522
592
|
|
|
523
593
|
// First minutes moneyline / total
|
|
594
|
+
[MarketType.FIRST_5_MINUTES_MONEYLINE]: {
|
|
595
|
+
id: MarketType.FIRST_5_MINUTES_MONEYLINE,
|
|
596
|
+
key: 'first5MinutesMoneyline',
|
|
597
|
+
name: 'Winner first 5 min',
|
|
598
|
+
resultType: ResultType.EXACT_POSITION,
|
|
599
|
+
},
|
|
524
600
|
[MarketType.FIRST_10_MINUTES_MONEYLINE]: {
|
|
525
601
|
id: MarketType.FIRST_10_MINUTES_MONEYLINE,
|
|
526
602
|
key: 'first10MinutesMoneyline',
|
|
@@ -48,6 +48,7 @@ export const WINNER_MARKET_TYPES = [
|
|
|
48
48
|
MarketType.HIGHEST_MATCH_CHECKOUT,
|
|
49
49
|
|
|
50
50
|
// Soccer – first minutes / highest scoring half
|
|
51
|
+
MarketType.FIRST_5_MINUTES_MONEYLINE,
|
|
51
52
|
MarketType.FIRST_10_MINUTES_MONEYLINE,
|
|
52
53
|
MarketType.FIRST_15_MINUTES_MONEYLINE,
|
|
53
54
|
MarketType.FIRST_30_MINUTES_MONEYLINE,
|
|
@@ -819,6 +820,19 @@ export const PLAYER_PROPS_MARKET_TYPES = [
|
|
|
819
820
|
MarketType.PLAYER_PROPS_DRIBBLE_ATTEMPTS,
|
|
820
821
|
MarketType.PLAYER_PROPS_PASSES_COMPLETED,
|
|
821
822
|
MarketType.PLAYER_PROPS_SOCCER_PASSING_ATTEMPTS,
|
|
823
|
+
// Soccer half player props
|
|
824
|
+
MarketType.FIRST_PERIOD_PLAYER_PROPS_ANYTIME_GOAL_SCORER,
|
|
825
|
+
MarketType.SECOND_PERIOD_PLAYER_PROPS_ANYTIME_GOAL_SCORER,
|
|
826
|
+
MarketType.FIRST_PERIOD_PLAYER_PROPS_GOALS,
|
|
827
|
+
MarketType.SECOND_PERIOD_PLAYER_PROPS_GOALS,
|
|
828
|
+
MarketType.FIRST_PERIOD_PLAYER_PROPS_FOULS,
|
|
829
|
+
MarketType.SECOND_PERIOD_PLAYER_PROPS_FOULS,
|
|
830
|
+
MarketType.FIRST_PERIOD_PLAYER_PROPS_OFFSIDES,
|
|
831
|
+
MarketType.SECOND_PERIOD_PLAYER_PROPS_OFFSIDES,
|
|
832
|
+
MarketType.FIRST_PERIOD_PLAYER_PROPS_SHOTS,
|
|
833
|
+
MarketType.SECOND_PERIOD_PLAYER_PROPS_SHOTS,
|
|
834
|
+
MarketType.FIRST_PERIOD_PLAYER_PROPS_SHOTS_ON_TARGET,
|
|
835
|
+
MarketType.SECOND_PERIOD_PLAYER_PROPS_SHOTS_ON_TARGET,
|
|
822
836
|
];
|
|
823
837
|
|
|
824
838
|
export const FUTURES_MARKET_TYPES = [
|
|
@@ -864,6 +878,8 @@ export const ONE_SIDE_PLAYER_PROPS_MARKET_TYPES = [
|
|
|
864
878
|
MarketType.PLAYER_PROPS_LAST_SCORER,
|
|
865
879
|
MarketType.PLAYER_PROPS_TO_SCORE_AND_ASSIST,
|
|
866
880
|
MarketType.PLAYER_PROPS_TO_SCORE_OR_ASSIST,
|
|
881
|
+
MarketType.FIRST_PERIOD_PLAYER_PROPS_ANYTIME_GOAL_SCORER,
|
|
882
|
+
MarketType.SECOND_PERIOD_PLAYER_PROPS_ANYTIME_GOAL_SCORER,
|
|
867
883
|
];
|
|
868
884
|
|
|
869
885
|
export const ONE_SIDE_EXTENDED_PLAYER_PROPS_MARKET_TYPES = [
|
|
@@ -925,6 +941,8 @@ export const OTHER_YES_NO_MARKET_TYPES = [
|
|
|
925
941
|
MarketType.HOME_TEAM_TO_WIN_TO_NIL,
|
|
926
942
|
MarketType.AWAY_TEAM_TO_SCORE,
|
|
927
943
|
MarketType.AWAY_TEAM_TO_WIN_TO_NIL,
|
|
944
|
+
MarketType.HOME_TEAM_TO_SCORE_PENALTY,
|
|
945
|
+
MarketType.AWAY_TEAM_TO_SCORE_PENALTY,
|
|
928
946
|
|
|
929
947
|
// Soccer – yes/no winner-style outcomes
|
|
930
948
|
MarketType.HOME_TEAM_TO_WIN_BOTH_HALVES,
|
|
@@ -936,6 +954,11 @@ export const OTHER_YES_NO_MARKET_TYPES = [
|
|
|
936
954
|
MarketType.AWAY_TEAM_TO_SCORE_BOTH_HALVES,
|
|
937
955
|
MarketType.WILL_THERE_BE_A_PENALTY,
|
|
938
956
|
MarketType.WILL_THERE_BE_AN_OWN_GOAL,
|
|
957
|
+
MarketType.WILL_THERE_BE_A_RED_CARD,
|
|
958
|
+
MarketType.FIRST_PERIOD_WILL_THERE_BE_A_PENALTY,
|
|
959
|
+
MarketType.SECOND_PERIOD_WILL_THERE_BE_A_PENALTY,
|
|
960
|
+
MarketType.FIRST_PERIOD_WILL_THERE_BE_A_RED_CARD,
|
|
961
|
+
MarketType.SECOND_PERIOD_WILL_THERE_BE_A_RED_CARD,
|
|
939
962
|
];
|
|
940
963
|
|
|
941
964
|
export const CORRECT_SCORE_MARKET_TYPES = [
|
|
@@ -1047,6 +1070,17 @@ export const FIRST_PERIOD_MARKET_TYPES = [
|
|
|
1047
1070
|
MarketType.FIRST_MAP_TOTAL_BOMBS_DEFUSED,
|
|
1048
1071
|
|
|
1049
1072
|
MarketType.FIRST_PERIOD_TOTAL_EXACT,
|
|
1073
|
+
MarketType.FIRST_PERIOD_FIRST_SCORE,
|
|
1074
|
+
MarketType.FIRST_PERIOD_LAST_SCORE,
|
|
1075
|
+
MarketType.FIRST_PERIOD_WILL_THERE_BE_A_PENALTY,
|
|
1076
|
+
MarketType.FIRST_PERIOD_WILL_THERE_BE_A_RED_CARD,
|
|
1077
|
+
// Soccer – 1st half player props
|
|
1078
|
+
MarketType.FIRST_PERIOD_PLAYER_PROPS_ANYTIME_GOAL_SCORER,
|
|
1079
|
+
MarketType.FIRST_PERIOD_PLAYER_PROPS_GOALS,
|
|
1080
|
+
MarketType.FIRST_PERIOD_PLAYER_PROPS_FOULS,
|
|
1081
|
+
MarketType.FIRST_PERIOD_PLAYER_PROPS_OFFSIDES,
|
|
1082
|
+
MarketType.FIRST_PERIOD_PLAYER_PROPS_SHOTS,
|
|
1083
|
+
MarketType.FIRST_PERIOD_PLAYER_PROPS_SHOTS_ON_TARGET,
|
|
1050
1084
|
|
|
1051
1085
|
MarketType.FIRST_MAP_CORRECT_PISTOL_ROUND_SCORE,
|
|
1052
1086
|
MarketType.FIRST_MAP_PISTOL_ROUND_1_ML,
|
|
@@ -1139,6 +1173,17 @@ export const SECOND_PERIOD_MARKET_TYPES = [
|
|
|
1139
1173
|
MarketType.SECOND_MAP_TOTAL_BOMBS_DEFUSED,
|
|
1140
1174
|
|
|
1141
1175
|
MarketType.SECOND_PERIOD_TOTAL_EXACT,
|
|
1176
|
+
MarketType.SECOND_PERIOD_FIRST_SCORE,
|
|
1177
|
+
MarketType.SECOND_PERIOD_LAST_SCORE,
|
|
1178
|
+
MarketType.SECOND_PERIOD_WILL_THERE_BE_A_PENALTY,
|
|
1179
|
+
MarketType.SECOND_PERIOD_WILL_THERE_BE_A_RED_CARD,
|
|
1180
|
+
// Soccer – 2nd half player props
|
|
1181
|
+
MarketType.SECOND_PERIOD_PLAYER_PROPS_ANYTIME_GOAL_SCORER,
|
|
1182
|
+
MarketType.SECOND_PERIOD_PLAYER_PROPS_GOALS,
|
|
1183
|
+
MarketType.SECOND_PERIOD_PLAYER_PROPS_FOULS,
|
|
1184
|
+
MarketType.SECOND_PERIOD_PLAYER_PROPS_OFFSIDES,
|
|
1185
|
+
MarketType.SECOND_PERIOD_PLAYER_PROPS_SHOTS,
|
|
1186
|
+
MarketType.SECOND_PERIOD_PLAYER_PROPS_SHOTS_ON_TARGET,
|
|
1142
1187
|
|
|
1143
1188
|
MarketType.SECOND_MAP_CORRECT_PISTOL_ROUND_SCORE,
|
|
1144
1189
|
MarketType.SECOND_MAP_PISTOL_ROUND_1_ML,
|
|
@@ -1577,6 +1622,7 @@ export const HOME_TEAM_MARKET_TYPES = [
|
|
|
1577
1622
|
MarketType.TOTAL_HOME_TEAM_ODD_EVEN,
|
|
1578
1623
|
MarketType.HOME_TEAM_TO_SCORE,
|
|
1579
1624
|
MarketType.HOME_TEAM_TO_WIN_TO_NIL,
|
|
1625
|
+
MarketType.HOME_TEAM_TO_SCORE_PENALTY,
|
|
1580
1626
|
|
|
1581
1627
|
MarketType.HOME_TEAM_TO_WIN_BOTH_HALVES,
|
|
1582
1628
|
MarketType.HOME_TEAM_TO_WIN_EITHER_HALF,
|
|
@@ -1652,6 +1698,7 @@ export const AWAY_TEAM_MARKET_TYPES = [
|
|
|
1652
1698
|
MarketType.TOTAL_AWAY_TEAM_ODD_EVEN,
|
|
1653
1699
|
MarketType.AWAY_TEAM_TO_SCORE,
|
|
1654
1700
|
MarketType.AWAY_TEAM_TO_WIN_TO_NIL,
|
|
1701
|
+
MarketType.AWAY_TEAM_TO_SCORE_PENALTY,
|
|
1655
1702
|
|
|
1656
1703
|
MarketType.AWAY_TEAM_TO_WIN_BOTH_HALVES,
|
|
1657
1704
|
MarketType.AWAY_TEAM_TO_WIN_EITHER_HALF,
|
|
@@ -1670,7 +1717,14 @@ export const AWAY_TEAM_MARKET_TYPES = [
|
|
|
1670
1717
|
MarketType.AWAY_TEAM_TOTAL_OFFSIDES,
|
|
1671
1718
|
];
|
|
1672
1719
|
|
|
1673
|
-
export const SCORE_MARKET_TYPES = [
|
|
1720
|
+
export const SCORE_MARKET_TYPES = [
|
|
1721
|
+
MarketType.FIRST_SCORE,
|
|
1722
|
+
MarketType.LAST_SCORE,
|
|
1723
|
+
MarketType.FIRST_PERIOD_FIRST_SCORE,
|
|
1724
|
+
MarketType.FIRST_PERIOD_LAST_SCORE,
|
|
1725
|
+
MarketType.SECOND_PERIOD_FIRST_SCORE,
|
|
1726
|
+
MarketType.SECOND_PERIOD_LAST_SCORE,
|
|
1727
|
+
];
|
|
1674
1728
|
|
|
1675
1729
|
export const CORNERS_MARKET_TYPES = [
|
|
1676
1730
|
MarketType.SPREAD_CORNERS,
|
package/src/enums/marketTypes.ts
CHANGED
|
@@ -254,6 +254,19 @@ export enum MarketType {
|
|
|
254
254
|
PLAYER_PROPS_DRIBBLE_ATTEMPTS = 11311,
|
|
255
255
|
PLAYER_PROPS_PASSES_COMPLETED = 11312,
|
|
256
256
|
PLAYER_PROPS_SOCCER_PASSING_ATTEMPTS = 11313,
|
|
257
|
+
// Soccer half player props
|
|
258
|
+
FIRST_PERIOD_PLAYER_PROPS_ANYTIME_GOAL_SCORER = 11314,
|
|
259
|
+
SECOND_PERIOD_PLAYER_PROPS_ANYTIME_GOAL_SCORER = 11315,
|
|
260
|
+
FIRST_PERIOD_PLAYER_PROPS_GOALS = 11316,
|
|
261
|
+
SECOND_PERIOD_PLAYER_PROPS_GOALS = 11317,
|
|
262
|
+
FIRST_PERIOD_PLAYER_PROPS_FOULS = 11318,
|
|
263
|
+
SECOND_PERIOD_PLAYER_PROPS_FOULS = 11319,
|
|
264
|
+
FIRST_PERIOD_PLAYER_PROPS_OFFSIDES = 11320,
|
|
265
|
+
SECOND_PERIOD_PLAYER_PROPS_OFFSIDES = 11321,
|
|
266
|
+
FIRST_PERIOD_PLAYER_PROPS_SHOTS = 11322,
|
|
267
|
+
SECOND_PERIOD_PLAYER_PROPS_SHOTS = 11323,
|
|
268
|
+
FIRST_PERIOD_PLAYER_PROPS_SHOTS_ON_TARGET = 11324,
|
|
269
|
+
SECOND_PERIOD_PLAYER_PROPS_SHOTS_ON_TARGET = 11325,
|
|
257
270
|
|
|
258
271
|
PLAYER_PROPS_OUTS = 11213,
|
|
259
272
|
PLAYER_PROPS_RBIS = 11214,
|
|
@@ -919,4 +932,18 @@ export enum MarketType {
|
|
|
919
932
|
AWAY_TEAM_TOTAL_THROW_INS = 10661, // line over/under
|
|
920
933
|
HOME_TEAM_TOTAL_OFFSIDES = 10662, // line over/under
|
|
921
934
|
AWAY_TEAM_TOTAL_OFFSIDES = 10663, // line over/under
|
|
935
|
+
SECOND_PERIOD_WILL_THERE_BE_A_PENALTY = 10665, // yes/no moneyline
|
|
936
|
+
SECOND_PERIOD_WILL_THERE_BE_A_RED_CARD = 10666, // yes/no moneyline
|
|
937
|
+
HOME_TEAM_TO_SCORE_PENALTY = 10667, // yes/no moneyline
|
|
938
|
+
AWAY_TEAM_TO_SCORE_PENALTY = 10668, // yes/no moneyline
|
|
939
|
+
// Who will score first/last per period - half for soccer
|
|
940
|
+
FIRST_PERIOD_FIRST_SCORE = 10294, // who scores first in 1st half
|
|
941
|
+
SECOND_PERIOD_FIRST_SCORE = 10295, // who scores first in 2nd half
|
|
942
|
+
FIRST_PERIOD_LAST_SCORE = 10298, // who scores last in 1st half
|
|
943
|
+
SECOND_PERIOD_LAST_SCORE = 10299, // who scores last in 2nd half
|
|
944
|
+
// Red card / penalty per period
|
|
945
|
+
WILL_THERE_BE_A_RED_CARD = 10307, // yes/no moneyline
|
|
946
|
+
FIRST_PERIOD_WILL_THERE_BE_A_RED_CARD = 10308, // yes/no moneyline
|
|
947
|
+
FIRST_PERIOD_WILL_THERE_BE_A_PENALTY = 10309, // yes/no moneyline
|
|
948
|
+
FIRST_5_MINUTES_MONEYLINE = 10310, // moneyline 3-way
|
|
922
949
|
}
|
package/src/types/sgp.ts
CHANGED
package/src/utils/markets.ts
CHANGED
|
@@ -212,7 +212,7 @@ const validateMarketsWithSameDirection = (markets: SgpBlockerMarket[], sgpBlocke
|
|
|
212
212
|
const playerId = market.playerId;
|
|
213
213
|
const position = market.position;
|
|
214
214
|
|
|
215
|
-
const otherMarkets = markets.filter((_, i) => i !== index);
|
|
215
|
+
const otherMarkets = markets.filter((_, i) => i !== index && markets[i].gameId === market.gameId);
|
|
216
216
|
const isSameMarketDirection = otherMarkets.some(
|
|
217
217
|
(otherMarket) =>
|
|
218
218
|
(!blocker.sport || blocker.sport === sport) &&
|
|
@@ -247,22 +247,28 @@ const validateSomeBlockerWithSomeCombined = (markets: SgpBlockerMarket[], sgpBlo
|
|
|
247
247
|
const blocker = getBlocker(blockers, BLOCKER_GROUP, blockerIndex);
|
|
248
248
|
|
|
249
249
|
if (blocker && blocker.enabled) {
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
);
|
|
256
|
-
const hasSomeCombined = markets.some(
|
|
257
|
-
(market) =>
|
|
250
|
+
for (let index = 0; index < markets.length; index++) {
|
|
251
|
+
const market = markets[index];
|
|
252
|
+
const otherMarkets = markets.filter((_, i) => i !== index && markets[i].gameId === market.gameId);
|
|
253
|
+
|
|
254
|
+
const hasSomeBlocker =
|
|
258
255
|
(!blocker.sport || blocker.sport === getLeagueSport(market.leagueId)) &&
|
|
259
256
|
(!blocker.leagueId || blocker.leagueId === market.leagueId) &&
|
|
260
|
-
blocker.
|
|
261
|
-
);
|
|
257
|
+
blocker.blockerTypeIds.includes(market.typeId);
|
|
262
258
|
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
259
|
+
if (hasSomeBlocker) {
|
|
260
|
+
const hasSomeCombined = otherMarkets.some(
|
|
261
|
+
(otherMarket) =>
|
|
262
|
+
(!blocker.sport || blocker.sport === getLeagueSport(otherMarket.leagueId)) &&
|
|
263
|
+
(!blocker.leagueId || blocker.leagueId === otherMarket.leagueId) &&
|
|
264
|
+
blocker.combineWithTypeIds.includes(otherMarket.typeId)
|
|
265
|
+
);
|
|
266
|
+
|
|
267
|
+
if (hasSomeCombined) {
|
|
268
|
+
message = blocker?.message || getBlockerMessage(BLOCKER_GROUP, blockerIndex);
|
|
269
|
+
break;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
266
272
|
}
|
|
267
273
|
}
|
|
268
274
|
}
|
|
@@ -284,7 +290,7 @@ const validatePlayerPropsCombinations = (markets: SgpBlockerMarket[], sgpBlocker
|
|
|
284
290
|
if (blocker && blocker.enabled) {
|
|
285
291
|
for (let marketIndex = 0; marketIndex < markets.length; marketIndex++) {
|
|
286
292
|
const market = markets[marketIndex];
|
|
287
|
-
const otherMarkets = markets.filter((_, i) => i !== marketIndex);
|
|
293
|
+
const otherMarkets = markets.filter((_, i) => i !== marketIndex && markets[i].gameId === market.gameId);
|
|
288
294
|
|
|
289
295
|
const hasBlockerTypeId =
|
|
290
296
|
(!blocker.sport || blocker.sport === getLeagueSport(market.leagueId)) &&
|
|
@@ -325,7 +331,7 @@ const validateSomeBlockerWithSomeCombinedForSamePosition = (markets: SgpBlockerM
|
|
|
325
331
|
if (blocker && blocker.enabled) {
|
|
326
332
|
for (let marketIndex = 0; marketIndex < markets.length; marketIndex++) {
|
|
327
333
|
const market = markets[marketIndex];
|
|
328
|
-
const otherMarkets = markets.filter((_, i) => i !== marketIndex);
|
|
334
|
+
const otherMarkets = markets.filter((_, i) => i !== marketIndex && markets[i].gameId === market.gameId);
|
|
329
335
|
|
|
330
336
|
const hasBlockerTypeId =
|
|
331
337
|
(!blocker.sport || blocker.sport === getLeagueSport(market.leagueId)) &&
|
|
@@ -369,7 +375,7 @@ const validateSomeBlockerWithEveryCombinedForSamePosition = (
|
|
|
369
375
|
if (blocker && blocker.enabled) {
|
|
370
376
|
for (let marketIndex = 0; marketIndex < markets.length; marketIndex++) {
|
|
371
377
|
const market = markets[marketIndex];
|
|
372
|
-
const otherMarkets = markets.filter((_, i) => i !== marketIndex);
|
|
378
|
+
const otherMarkets = markets.filter((_, i) => i !== marketIndex && markets[i].gameId === market.gameId);
|
|
373
379
|
|
|
374
380
|
const hasBlockerTypeId =
|
|
375
381
|
(!blocker.sport || blocker.sport === getLeagueSport(market.leagueId)) &&
|
|
@@ -413,7 +419,7 @@ const validateSomeBlockerWithEveryCombined = (markets: SgpBlockerMarket[], sgpBl
|
|
|
413
419
|
if (blocker && blocker.enabled) {
|
|
414
420
|
for (let marketIndex = 0; marketIndex < markets.length; marketIndex++) {
|
|
415
421
|
const market = markets[marketIndex];
|
|
416
|
-
const otherMarkets = markets.filter((_, i) => i !== marketIndex);
|
|
422
|
+
const otherMarkets = markets.filter((_, i) => i !== marketIndex && markets[i].gameId === market.gameId);
|
|
417
423
|
|
|
418
424
|
const hasBlockerTypeId =
|
|
419
425
|
(!blocker.sport || blocker.sport === getLeagueSport(market.leagueId)) &&
|