@agg-build/ui 2.1.4 → 2.1.5
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/{chunk-FLESSOSU.mjs → chunk-XUBIJI4R.mjs} +32 -4
- package/dist/index.js +32 -4
- package/dist/index.mjs +1 -1
- package/dist/pages.js +32 -4
- package/dist/pages.mjs +1 -1
- package/dist/types/pages/event-market/sports-event-market.utils.d.mts +15 -1
- package/dist/types/pages/event-market/sports-event-market.utils.d.ts +15 -1
- package/package.json +1 -1
|
@@ -654,6 +654,7 @@ var SPORTS_PERIOD_KEYS = [
|
|
|
654
654
|
"first_5_innings",
|
|
655
655
|
"other"
|
|
656
656
|
];
|
|
657
|
+
var SPORTS_PERIOD_GRAMMAR_PATTERN = /^(?:(set|map|game|period|inning)_(\d{1,2})|first_(\d{1,2})_innings)$/;
|
|
657
658
|
var SPORTS_MARKET_CATEGORY_KEYS = [
|
|
658
659
|
"game_lines",
|
|
659
660
|
"exact_score",
|
|
@@ -782,9 +783,22 @@ var stripLineValueFromQuestion = (question) => {
|
|
|
782
783
|
const strippedQuestion = sanitizeFamilyValue(question);
|
|
783
784
|
return strippedQuestion ? question.replace(/\(\s*[+-]?\d+(?:\.\d+)?\s*\)\s*$/g, "").replace(/\s+[+-]?\d+(?:\.\d+)?\s*$/g, "").replace(/\s+/g, " ").trim() : question.trim();
|
|
784
785
|
};
|
|
786
|
+
var SPORTS_PERIOD_FAMILY_ORDER = ["period", "inning", "set", "map", "game"];
|
|
785
787
|
var getSportsPeriodOrderIndex = (period) => {
|
|
788
|
+
var _a, _b;
|
|
786
789
|
const periodIndex = SPORTS_PERIOD_ORDER.indexOf(period);
|
|
787
|
-
|
|
790
|
+
if (periodIndex >= 0) {
|
|
791
|
+
return period === "other" ? Number.MAX_SAFE_INTEGER : periodIndex;
|
|
792
|
+
}
|
|
793
|
+
const grammarMatch = SPORTS_PERIOD_GRAMMAR_PATTERN.exec(period);
|
|
794
|
+
if (grammarMatch) {
|
|
795
|
+
const familyIndex = grammarMatch[1] ? SPORTS_PERIOD_FAMILY_ORDER.indexOf(
|
|
796
|
+
grammarMatch[1]
|
|
797
|
+
) : SPORTS_PERIOD_FAMILY_ORDER.length;
|
|
798
|
+
const scopeNumber = Number((_b = (_a = grammarMatch[2]) != null ? _a : grammarMatch[3]) != null ? _b : 0);
|
|
799
|
+
return SPORTS_PERIOD_ORDER.length + familyIndex * 100 + scopeNumber;
|
|
800
|
+
}
|
|
801
|
+
return Number.MAX_SAFE_INTEGER - 1;
|
|
788
802
|
};
|
|
789
803
|
var getSportsMarketTypeOrderIndex = (sportsMarketType) => {
|
|
790
804
|
if (!sportsMarketType) return SPORTS_MARKET_TYPE_ORDER.length;
|
|
@@ -801,7 +815,10 @@ var resolveSportsSectionDefinition = (key) => {
|
|
|
801
815
|
var normalizeSportsPeriod = (value) => {
|
|
802
816
|
const resolvedValue = toTrimmedString(value).toLowerCase();
|
|
803
817
|
if (!resolvedValue) return "full";
|
|
804
|
-
|
|
818
|
+
if (resolvedValue === "match") return "full";
|
|
819
|
+
if (SPORTS_PERIOD_KEY_SET.has(resolvedValue)) return resolvedValue;
|
|
820
|
+
if (SPORTS_PERIOD_GRAMMAR_PATTERN.test(resolvedValue)) return resolvedValue;
|
|
821
|
+
return "other";
|
|
805
822
|
};
|
|
806
823
|
var normalizeSportsMarketType = (value) => {
|
|
807
824
|
const resolvedValue = toTrimmedString(value).toLowerCase();
|
|
@@ -884,8 +901,7 @@ var isBinarySportsMoneylineMarket = (market) => {
|
|
|
884
901
|
);
|
|
885
902
|
const marketSubtype = toTrimmedString(market.marketSubtype).toLowerCase();
|
|
886
903
|
const marketGroup = normalizeSportsMarketGroup(market.marketGroup);
|
|
887
|
-
|
|
888
|
-
return (marketSubtype === "moneyline" || hasMoneylineAggKey) && marketGroup === "game_lines" && normalizeSportsPeriod(market.period) === "full" && normalizedOutcomeLabels.length === 2 && normalizedOutcomeLabels.every((label) => YES_NO_LABELS.has(label));
|
|
904
|
+
return marketSubtype === "moneyline" && marketGroup === "game_lines" && normalizeSportsPeriod(market.period) === "full" && normalizedOutcomeLabels.length === 2 && normalizedOutcomeLabels.every((label) => YES_NO_LABELS.has(label));
|
|
889
905
|
};
|
|
890
906
|
var resolveDisplayGroupFamilyKey = (market) => {
|
|
891
907
|
var _a, _b, _c;
|
|
@@ -1110,6 +1126,15 @@ var buildSportsSlideFromGroup = (group) => {
|
|
|
1110
1126
|
defaultStopIndex
|
|
1111
1127
|
};
|
|
1112
1128
|
};
|
|
1129
|
+
var formatSportsPeriodGrammarLabel = (period) => {
|
|
1130
|
+
const grammarMatch = SPORTS_PERIOD_GRAMMAR_PATTERN.exec(period);
|
|
1131
|
+
if (!grammarMatch) return null;
|
|
1132
|
+
if (grammarMatch[1]) {
|
|
1133
|
+
const family = grammarMatch[1].charAt(0).toUpperCase() + grammarMatch[1].slice(1);
|
|
1134
|
+
return `${family} ${Number(grammarMatch[2])}`;
|
|
1135
|
+
}
|
|
1136
|
+
return `First ${Number(grammarMatch[3])} Innings`;
|
|
1137
|
+
};
|
|
1113
1138
|
var resolveSportsCategoryTokens = (event) => {
|
|
1114
1139
|
return new Set(
|
|
1115
1140
|
event.categories.flatMap((entry) => {
|
|
@@ -1347,6 +1372,7 @@ var resolveSportsSectionLabel = (labels, key) => {
|
|
|
1347
1372
|
}
|
|
1348
1373
|
};
|
|
1349
1374
|
var resolveSportsPeriodLabel = (labels, period) => {
|
|
1375
|
+
var _a;
|
|
1350
1376
|
switch (period) {
|
|
1351
1377
|
case "full":
|
|
1352
1378
|
return labels.eventMarketPage.sports.fullPeriod;
|
|
@@ -1374,6 +1400,8 @@ var resolveSportsPeriodLabel = (labels, period) => {
|
|
|
1374
1400
|
return "1st 5 Innings";
|
|
1375
1401
|
case "other":
|
|
1376
1402
|
return labels.eventMarketPage.sports.otherPeriod;
|
|
1403
|
+
default:
|
|
1404
|
+
return (_a = formatSportsPeriodGrammarLabel(period)) != null ? _a : labels.eventMarketPage.sports.otherPeriod;
|
|
1377
1405
|
}
|
|
1378
1406
|
};
|
|
1379
1407
|
var SportsTabButton = ({
|
package/dist/index.js
CHANGED
|
@@ -23027,6 +23027,7 @@ var SPORTS_PERIOD_KEYS = [
|
|
|
23027
23027
|
"first_5_innings",
|
|
23028
23028
|
"other"
|
|
23029
23029
|
];
|
|
23030
|
+
var SPORTS_PERIOD_GRAMMAR_PATTERN = /^(?:(set|map|game|period|inning)_(\d{1,2})|first_(\d{1,2})_innings)$/;
|
|
23030
23031
|
var SPORTS_MARKET_CATEGORY_KEYS = [
|
|
23031
23032
|
"game_lines",
|
|
23032
23033
|
"exact_score",
|
|
@@ -23155,9 +23156,22 @@ var stripLineValueFromQuestion = (question) => {
|
|
|
23155
23156
|
const strippedQuestion = sanitizeFamilyValue(question);
|
|
23156
23157
|
return strippedQuestion ? question.replace(/\(\s*[+-]?\d+(?:\.\d+)?\s*\)\s*$/g, "").replace(/\s+[+-]?\d+(?:\.\d+)?\s*$/g, "").replace(/\s+/g, " ").trim() : question.trim();
|
|
23157
23158
|
};
|
|
23159
|
+
var SPORTS_PERIOD_FAMILY_ORDER = ["period", "inning", "set", "map", "game"];
|
|
23158
23160
|
var getSportsPeriodOrderIndex = (period) => {
|
|
23161
|
+
var _a, _b;
|
|
23159
23162
|
const periodIndex = SPORTS_PERIOD_ORDER.indexOf(period);
|
|
23160
|
-
|
|
23163
|
+
if (periodIndex >= 0) {
|
|
23164
|
+
return period === "other" ? Number.MAX_SAFE_INTEGER : periodIndex;
|
|
23165
|
+
}
|
|
23166
|
+
const grammarMatch = SPORTS_PERIOD_GRAMMAR_PATTERN.exec(period);
|
|
23167
|
+
if (grammarMatch) {
|
|
23168
|
+
const familyIndex = grammarMatch[1] ? SPORTS_PERIOD_FAMILY_ORDER.indexOf(
|
|
23169
|
+
grammarMatch[1]
|
|
23170
|
+
) : SPORTS_PERIOD_FAMILY_ORDER.length;
|
|
23171
|
+
const scopeNumber = Number((_b = (_a = grammarMatch[2]) != null ? _a : grammarMatch[3]) != null ? _b : 0);
|
|
23172
|
+
return SPORTS_PERIOD_ORDER.length + familyIndex * 100 + scopeNumber;
|
|
23173
|
+
}
|
|
23174
|
+
return Number.MAX_SAFE_INTEGER - 1;
|
|
23161
23175
|
};
|
|
23162
23176
|
var getSportsMarketTypeOrderIndex = (sportsMarketType) => {
|
|
23163
23177
|
if (!sportsMarketType) return SPORTS_MARKET_TYPE_ORDER.length;
|
|
@@ -23174,7 +23188,10 @@ var resolveSportsSectionDefinition = (key) => {
|
|
|
23174
23188
|
var normalizeSportsPeriod = (value) => {
|
|
23175
23189
|
const resolvedValue = toTrimmedString(value).toLowerCase();
|
|
23176
23190
|
if (!resolvedValue) return "full";
|
|
23177
|
-
|
|
23191
|
+
if (resolvedValue === "match") return "full";
|
|
23192
|
+
if (SPORTS_PERIOD_KEY_SET.has(resolvedValue)) return resolvedValue;
|
|
23193
|
+
if (SPORTS_PERIOD_GRAMMAR_PATTERN.test(resolvedValue)) return resolvedValue;
|
|
23194
|
+
return "other";
|
|
23178
23195
|
};
|
|
23179
23196
|
var normalizeSportsMarketType = (value) => {
|
|
23180
23197
|
const resolvedValue = toTrimmedString(value).toLowerCase();
|
|
@@ -23257,8 +23274,7 @@ var isBinarySportsMoneylineMarket = (market) => {
|
|
|
23257
23274
|
);
|
|
23258
23275
|
const marketSubtype = toTrimmedString(market.marketSubtype).toLowerCase();
|
|
23259
23276
|
const marketGroup = normalizeSportsMarketGroup(market.marketGroup);
|
|
23260
|
-
|
|
23261
|
-
return (marketSubtype === "moneyline" || hasMoneylineAggKey) && marketGroup === "game_lines" && normalizeSportsPeriod(market.period) === "full" && normalizedOutcomeLabels.length === 2 && normalizedOutcomeLabels.every((label2) => YES_NO_LABELS.has(label2));
|
|
23277
|
+
return marketSubtype === "moneyline" && marketGroup === "game_lines" && normalizeSportsPeriod(market.period) === "full" && normalizedOutcomeLabels.length === 2 && normalizedOutcomeLabels.every((label2) => YES_NO_LABELS.has(label2));
|
|
23262
23278
|
};
|
|
23263
23279
|
var resolveDisplayGroupFamilyKey = (market) => {
|
|
23264
23280
|
var _a, _b, _c;
|
|
@@ -23483,6 +23499,15 @@ var buildSportsSlideFromGroup = (group) => {
|
|
|
23483
23499
|
defaultStopIndex
|
|
23484
23500
|
};
|
|
23485
23501
|
};
|
|
23502
|
+
var formatSportsPeriodGrammarLabel = (period) => {
|
|
23503
|
+
const grammarMatch = SPORTS_PERIOD_GRAMMAR_PATTERN.exec(period);
|
|
23504
|
+
if (!grammarMatch) return null;
|
|
23505
|
+
if (grammarMatch[1]) {
|
|
23506
|
+
const family = grammarMatch[1].charAt(0).toUpperCase() + grammarMatch[1].slice(1);
|
|
23507
|
+
return `${family} ${Number(grammarMatch[2])}`;
|
|
23508
|
+
}
|
|
23509
|
+
return `First ${Number(grammarMatch[3])} Innings`;
|
|
23510
|
+
};
|
|
23486
23511
|
var resolveSportsCategoryTokens = (event) => {
|
|
23487
23512
|
return new Set(
|
|
23488
23513
|
event.categories.flatMap((entry) => {
|
|
@@ -23720,6 +23745,7 @@ var resolveSportsSectionLabel = (labels, key) => {
|
|
|
23720
23745
|
}
|
|
23721
23746
|
};
|
|
23722
23747
|
var resolveSportsPeriodLabel = (labels, period) => {
|
|
23748
|
+
var _a;
|
|
23723
23749
|
switch (period) {
|
|
23724
23750
|
case "full":
|
|
23725
23751
|
return labels.eventMarketPage.sports.fullPeriod;
|
|
@@ -23747,6 +23773,8 @@ var resolveSportsPeriodLabel = (labels, period) => {
|
|
|
23747
23773
|
return "1st 5 Innings";
|
|
23748
23774
|
case "other":
|
|
23749
23775
|
return labels.eventMarketPage.sports.otherPeriod;
|
|
23776
|
+
default:
|
|
23777
|
+
return (_a = formatSportsPeriodGrammarLabel(period)) != null ? _a : labels.eventMarketPage.sports.otherPeriod;
|
|
23750
23778
|
}
|
|
23751
23779
|
};
|
|
23752
23780
|
var SportsTabButton = ({
|
package/dist/index.mjs
CHANGED
package/dist/pages.js
CHANGED
|
@@ -20839,6 +20839,7 @@ var SPORTS_PERIOD_KEYS = [
|
|
|
20839
20839
|
"first_5_innings",
|
|
20840
20840
|
"other"
|
|
20841
20841
|
];
|
|
20842
|
+
var SPORTS_PERIOD_GRAMMAR_PATTERN = /^(?:(set|map|game|period|inning)_(\d{1,2})|first_(\d{1,2})_innings)$/;
|
|
20842
20843
|
var SPORTS_MARKET_CATEGORY_KEYS = [
|
|
20843
20844
|
"game_lines",
|
|
20844
20845
|
"exact_score",
|
|
@@ -20967,9 +20968,22 @@ var stripLineValueFromQuestion = (question) => {
|
|
|
20967
20968
|
const strippedQuestion = sanitizeFamilyValue(question);
|
|
20968
20969
|
return strippedQuestion ? question.replace(/\(\s*[+-]?\d+(?:\.\d+)?\s*\)\s*$/g, "").replace(/\s+[+-]?\d+(?:\.\d+)?\s*$/g, "").replace(/\s+/g, " ").trim() : question.trim();
|
|
20969
20970
|
};
|
|
20971
|
+
var SPORTS_PERIOD_FAMILY_ORDER = ["period", "inning", "set", "map", "game"];
|
|
20970
20972
|
var getSportsPeriodOrderIndex = (period) => {
|
|
20973
|
+
var _a, _b;
|
|
20971
20974
|
const periodIndex = SPORTS_PERIOD_ORDER.indexOf(period);
|
|
20972
|
-
|
|
20975
|
+
if (periodIndex >= 0) {
|
|
20976
|
+
return period === "other" ? Number.MAX_SAFE_INTEGER : periodIndex;
|
|
20977
|
+
}
|
|
20978
|
+
const grammarMatch = SPORTS_PERIOD_GRAMMAR_PATTERN.exec(period);
|
|
20979
|
+
if (grammarMatch) {
|
|
20980
|
+
const familyIndex = grammarMatch[1] ? SPORTS_PERIOD_FAMILY_ORDER.indexOf(
|
|
20981
|
+
grammarMatch[1]
|
|
20982
|
+
) : SPORTS_PERIOD_FAMILY_ORDER.length;
|
|
20983
|
+
const scopeNumber = Number((_b = (_a = grammarMatch[2]) != null ? _a : grammarMatch[3]) != null ? _b : 0);
|
|
20984
|
+
return SPORTS_PERIOD_ORDER.length + familyIndex * 100 + scopeNumber;
|
|
20985
|
+
}
|
|
20986
|
+
return Number.MAX_SAFE_INTEGER - 1;
|
|
20973
20987
|
};
|
|
20974
20988
|
var getSportsMarketTypeOrderIndex = (sportsMarketType) => {
|
|
20975
20989
|
if (!sportsMarketType) return SPORTS_MARKET_TYPE_ORDER.length;
|
|
@@ -20986,7 +21000,10 @@ var resolveSportsSectionDefinition = (key) => {
|
|
|
20986
21000
|
var normalizeSportsPeriod = (value) => {
|
|
20987
21001
|
const resolvedValue = toTrimmedString(value).toLowerCase();
|
|
20988
21002
|
if (!resolvedValue) return "full";
|
|
20989
|
-
|
|
21003
|
+
if (resolvedValue === "match") return "full";
|
|
21004
|
+
if (SPORTS_PERIOD_KEY_SET.has(resolvedValue)) return resolvedValue;
|
|
21005
|
+
if (SPORTS_PERIOD_GRAMMAR_PATTERN.test(resolvedValue)) return resolvedValue;
|
|
21006
|
+
return "other";
|
|
20990
21007
|
};
|
|
20991
21008
|
var normalizeSportsMarketType = (value) => {
|
|
20992
21009
|
const resolvedValue = toTrimmedString(value).toLowerCase();
|
|
@@ -21069,8 +21086,7 @@ var isBinarySportsMoneylineMarket = (market) => {
|
|
|
21069
21086
|
);
|
|
21070
21087
|
const marketSubtype = toTrimmedString(market.marketSubtype).toLowerCase();
|
|
21071
21088
|
const marketGroup = normalizeSportsMarketGroup(market.marketGroup);
|
|
21072
|
-
|
|
21073
|
-
return (marketSubtype === "moneyline" || hasMoneylineAggKey) && marketGroup === "game_lines" && normalizeSportsPeriod(market.period) === "full" && normalizedOutcomeLabels.length === 2 && normalizedOutcomeLabels.every((label2) => YES_NO_LABELS.has(label2));
|
|
21089
|
+
return marketSubtype === "moneyline" && marketGroup === "game_lines" && normalizeSportsPeriod(market.period) === "full" && normalizedOutcomeLabels.length === 2 && normalizedOutcomeLabels.every((label2) => YES_NO_LABELS.has(label2));
|
|
21074
21090
|
};
|
|
21075
21091
|
var resolveDisplayGroupFamilyKey = (market) => {
|
|
21076
21092
|
var _a, _b, _c;
|
|
@@ -21295,6 +21311,15 @@ var buildSportsSlideFromGroup = (group) => {
|
|
|
21295
21311
|
defaultStopIndex
|
|
21296
21312
|
};
|
|
21297
21313
|
};
|
|
21314
|
+
var formatSportsPeriodGrammarLabel = (period) => {
|
|
21315
|
+
const grammarMatch = SPORTS_PERIOD_GRAMMAR_PATTERN.exec(period);
|
|
21316
|
+
if (!grammarMatch) return null;
|
|
21317
|
+
if (grammarMatch[1]) {
|
|
21318
|
+
const family = grammarMatch[1].charAt(0).toUpperCase() + grammarMatch[1].slice(1);
|
|
21319
|
+
return `${family} ${Number(grammarMatch[2])}`;
|
|
21320
|
+
}
|
|
21321
|
+
return `First ${Number(grammarMatch[3])} Innings`;
|
|
21322
|
+
};
|
|
21298
21323
|
var resolveSportsCategoryTokens = (event) => {
|
|
21299
21324
|
return new Set(
|
|
21300
21325
|
event.categories.flatMap((entry) => {
|
|
@@ -21532,6 +21557,7 @@ var resolveSportsSectionLabel = (labels, key) => {
|
|
|
21532
21557
|
}
|
|
21533
21558
|
};
|
|
21534
21559
|
var resolveSportsPeriodLabel = (labels, period) => {
|
|
21560
|
+
var _a;
|
|
21535
21561
|
switch (period) {
|
|
21536
21562
|
case "full":
|
|
21537
21563
|
return labels.eventMarketPage.sports.fullPeriod;
|
|
@@ -21559,6 +21585,8 @@ var resolveSportsPeriodLabel = (labels, period) => {
|
|
|
21559
21585
|
return "1st 5 Innings";
|
|
21560
21586
|
case "other":
|
|
21561
21587
|
return labels.eventMarketPage.sports.otherPeriod;
|
|
21588
|
+
default:
|
|
21589
|
+
return (_a = formatSportsPeriodGrammarLabel(period)) != null ? _a : labels.eventMarketPage.sports.otherPeriod;
|
|
21562
21590
|
}
|
|
21563
21591
|
};
|
|
21564
21592
|
var SportsTabButton = ({
|
package/dist/pages.mjs
CHANGED
|
@@ -4,7 +4,15 @@ export type SportsSectionTabKey = (typeof SPORTS_SECTION_TAB_KEYS)[number];
|
|
|
4
4
|
export declare const SPORTS_MARKET_TYPE_KEYS: readonly ["moneyline", "spread", "total", "prop", "completion", "other"];
|
|
5
5
|
export type SportsMarketTypeKey = (typeof SPORTS_MARKET_TYPE_KEYS)[number];
|
|
6
6
|
export declare const SPORTS_PERIOD_KEYS: readonly ["full", "1h", "2h", "q1", "q2", "q3", "q4", "ot", "first_inning", "second_inning", "third_inning", "first_5_innings", "other"];
|
|
7
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Known named periods plus the documented open grammar (`set_N`, `map_N`,
|
|
9
|
+
* `game_N`, `period_N`, `inning_N`, `first_N_innings` — see the sports
|
|
10
|
+
* recipe's period vocabulary). Grammar tokens pass through verbatim so
|
|
11
|
+
* tennis sets / esports maps / hockey periods group under their own named
|
|
12
|
+
* period instead of collapsing into "other" (prod 2026-07: set_1 ×1,741,
|
|
13
|
+
* inning_1 ×144 were all landing in the Other bucket).
|
|
14
|
+
*/
|
|
15
|
+
export type SportsPeriodKey = (typeof SPORTS_PERIOD_KEYS)[number] | (string & {});
|
|
8
16
|
export declare const SPORTS_MARKET_CATEGORY_KEYS: readonly ["game_lines", "exact_score", "corners", "goals", "assists", "shots", "other"];
|
|
9
17
|
export type SportsMarketCategoryKey = (typeof SPORTS_MARKET_CATEGORY_KEYS)[number];
|
|
10
18
|
export declare const SPORTS_MARKET_GROUP_KEYS: readonly ["game_lines", "spreads", "totals", "period_lines", "exact_score", "team_props", "player_props", "specials", "completion", "other"];
|
|
@@ -148,6 +156,12 @@ export type SportsTeams = {
|
|
|
148
156
|
};
|
|
149
157
|
export declare const resolveSportsTeams: (event: Pick<VenueEventWithMarkets, "title">, moneylineMarket?: VenueMarket | null) => SportsTeams | null;
|
|
150
158
|
export declare const resolveSportsLeagueLabel: (event: Pick<VenueEventWithMarkets, "categories" | "aggKey">) => string | null;
|
|
159
|
+
/**
|
|
160
|
+
* Human label for an open-grammar period token (`set_2` → "Set 2",
|
|
161
|
+
* `inning_4` → "Inning 4", `first_5_innings` → "First 5 Innings").
|
|
162
|
+
* Returns null for anything outside the documented grammar.
|
|
163
|
+
*/
|
|
164
|
+
export declare const formatSportsPeriodGrammarLabel: (period: string) => string | null;
|
|
151
165
|
export declare const isNonStandardSportsLikeEvent: (event: Pick<VenueEventWithMarkets, "categories" | "title" | "venueMarkets">) => boolean;
|
|
152
166
|
export declare const resolveVisibleSportsSectionTabDefinitions: (event: Pick<VenueEventWithMarkets, "categories" | "title" | "venueMarkets">) => SportsSectionTabDefinition[];
|
|
153
167
|
export declare const mergeSportsSectionMarketsIntoEvent: ({ event, sectionMarketsByKey, }: {
|
|
@@ -4,7 +4,15 @@ export type SportsSectionTabKey = (typeof SPORTS_SECTION_TAB_KEYS)[number];
|
|
|
4
4
|
export declare const SPORTS_MARKET_TYPE_KEYS: readonly ["moneyline", "spread", "total", "prop", "completion", "other"];
|
|
5
5
|
export type SportsMarketTypeKey = (typeof SPORTS_MARKET_TYPE_KEYS)[number];
|
|
6
6
|
export declare const SPORTS_PERIOD_KEYS: readonly ["full", "1h", "2h", "q1", "q2", "q3", "q4", "ot", "first_inning", "second_inning", "third_inning", "first_5_innings", "other"];
|
|
7
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Known named periods plus the documented open grammar (`set_N`, `map_N`,
|
|
9
|
+
* `game_N`, `period_N`, `inning_N`, `first_N_innings` — see the sports
|
|
10
|
+
* recipe's period vocabulary). Grammar tokens pass through verbatim so
|
|
11
|
+
* tennis sets / esports maps / hockey periods group under their own named
|
|
12
|
+
* period instead of collapsing into "other" (prod 2026-07: set_1 ×1,741,
|
|
13
|
+
* inning_1 ×144 were all landing in the Other bucket).
|
|
14
|
+
*/
|
|
15
|
+
export type SportsPeriodKey = (typeof SPORTS_PERIOD_KEYS)[number] | (string & {});
|
|
8
16
|
export declare const SPORTS_MARKET_CATEGORY_KEYS: readonly ["game_lines", "exact_score", "corners", "goals", "assists", "shots", "other"];
|
|
9
17
|
export type SportsMarketCategoryKey = (typeof SPORTS_MARKET_CATEGORY_KEYS)[number];
|
|
10
18
|
export declare const SPORTS_MARKET_GROUP_KEYS: readonly ["game_lines", "spreads", "totals", "period_lines", "exact_score", "team_props", "player_props", "specials", "completion", "other"];
|
|
@@ -148,6 +156,12 @@ export type SportsTeams = {
|
|
|
148
156
|
};
|
|
149
157
|
export declare const resolveSportsTeams: (event: Pick<VenueEventWithMarkets, "title">, moneylineMarket?: VenueMarket | null) => SportsTeams | null;
|
|
150
158
|
export declare const resolveSportsLeagueLabel: (event: Pick<VenueEventWithMarkets, "categories" | "aggKey">) => string | null;
|
|
159
|
+
/**
|
|
160
|
+
* Human label for an open-grammar period token (`set_2` → "Set 2",
|
|
161
|
+
* `inning_4` → "Inning 4", `first_5_innings` → "First 5 Innings").
|
|
162
|
+
* Returns null for anything outside the documented grammar.
|
|
163
|
+
*/
|
|
164
|
+
export declare const formatSportsPeriodGrammarLabel: (period: string) => string | null;
|
|
151
165
|
export declare const isNonStandardSportsLikeEvent: (event: Pick<VenueEventWithMarkets, "categories" | "title" | "venueMarkets">) => boolean;
|
|
152
166
|
export declare const resolveVisibleSportsSectionTabDefinitions: (event: Pick<VenueEventWithMarkets, "categories" | "title" | "venueMarkets">) => SportsSectionTabDefinition[];
|
|
153
167
|
export declare const mergeSportsSectionMarketsIntoEvent: ({ event, sectionMarketsByKey, }: {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agg-build/ui",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.5",
|
|
4
4
|
"description": "Pre-built React component library for the AGG prediction market aggregator. Tailwind-based, themeable, with primitives, event surfaces, trading flows, full pages, and modals.",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"license": "MIT",
|