fansunited-data-layer 0.8.7 → 0.9.0

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/index.d.ts CHANGED
@@ -24,15 +24,15 @@
24
24
  * ```
25
25
  */
26
26
  export { setConfig, getConfig, isConfigured, type DataLayerConfig, type Sportal365SportsConfig, type PayloadConfig, } from "./config";
27
- export { getFootballMatch, getFootballMatchEvents, getFootballMatchLineups, getFootballMatchOdds, getFootballMatchStatistics, getFootballMatchCommentary, getFootballMatches, getFootballLivescore, getBasketballLivescore, getTennisLivescore, getFootballTeam, getFootballTeamSquad, getFootballCompetition, getFootballSeasonDetails, getFootballStandings, getFootballPlayerSeasonStatistics, getTeamSeasonStatistics, searchFootball, } from "./api/sportal365-sports";
27
+ export { getFootballMatch, getFootballMatchEvents, getFootballMatchLineups, getFootballMatchOdds, getFootballMatchStatistics, getFootballMatchCommentary, getFootballMatches, getFootballLivescore, getBasketballLivescore, getTennisLivescore, getFootballTeam, getFootballTeamSquad, getFootballCompetition, getFootballSeasonDetails, getFootballStandings, getFootballPlayerSeasonStatistics, getTeamSeasonStatistics, getSportal365Standings, searchFootball, } from "./api/sportal365-sports";
28
28
  export { search } from "./api/sportal365-sports";
29
29
  export { getFansUnitedFootballCompetitions, getFansUnitedFootballCompetition, getFansUnitedFootballTeam, getFansUnitedFootballTeams, getFansUnitedFootballPlayer, getFansUnitedFootballPlayers, getFansUnitedFootballMatch, getFansUnitedFootballMatches, getFansUnitedFootballSearch, } from "./api/fansunited";
30
30
  export { getLeaderboardMatches, getLeaderboardTeamMatches, getLeaderboardTemplate, getBatchMatchOdds, } from "./api/fansunited-sdk";
31
31
  export type { GetBatchMatchOddsOptions } from "./api/fansunited-sdk";
32
32
  export type { GetFootballCompetitionsOptions, GetFootballCompetitionOptions as GetFansUnitedFootballCompetitionOptions, GetFootballTeamOptions as GetFansUnitedFootballTeamOptions, GetFootballTeamsOptions as GetFansUnitedFootballTeamsOptions, GetFootballPlayerOptions as GetFansUnitedFootballPlayerOptions, GetFootballPlayersOptions as GetFansUnitedFootballPlayersOptions, GetFootballMatchOptions as GetFansUnitedFootballMatchOptions, GetFootballMatchesOptions as GetFansUnitedFootballMatchesOptions, GetFootballSearchOptions as GetFansUnitedFootballSearchOptions, SearchEntityType as FansUnitedSearchEntityType, FansUnitedFootballSearchResult, } from "./api/fansunited";
33
33
  export { getProviderRefId, addProviderRef, toProviderRefArray } from "./api/sportal365-sports/shared";
34
- export type { GetFootballMatchOptions, GetFootballMatchEventsOptions, GetFootballMatchLineupsOptions, GetFootballMatchOddsOptions, GetFootballMatchStatisticsOptions, GetFootballMatchCommentaryOptions, GetFootballMatchesOptions, GetFootballLivescoreOptions, GetBasketballLivescoreOptions, BasketballMatchStatusType, GetTennisLivescoreOptions, TennisMatchStatusType, TennisMatchType, TennisGender, GetFootballTeamOptions, GetFootballTeamSquadOptions, GetFootballCompetitionOptions, GetFootballSeasonDetailsOptions, GetFootballStandingsOptions, GetFootballPlayerSeasonStatisticsOptions, GetTeamSeasonStatisticsOptions, GetFootballSearchOptions, SearchEntityType, GetSportsSearchOptions, SportType, SportsSearchEntityType, FootballStandingsExpandOption, OddType, ScopeType, OddFormat, MarketType, OptionalMatchData, MatchStatusType, SortDirection, SelectionFilter, NextCacheOptions, } from "./api/sportal365-sports";
35
- export type { FUSportsCountry, FUSportsCity, FUSportsCompetitor, FUSportsCompetitorBase, FUSportsTeamCompetitor, FUSportsPlayerCompetitor, FUSportsPairCompetitor, FUSportsShirtColor, FUSportsSeason, FUSportsRound, FUSportsStage, FUSportsSeasonDetails, FUSportsCompetition, FUSportsVenue, FUSportsOfficial, FUSportsMember, FUSportsMatchMember, FUSportsCoach, FUSportsSocials, FUBranding, FUSportsMatchScore, FUSportsMatchStatus, FUSportsMatchTiming, FUSportsMatchWinner, FUSportsMatch, FUSportsMatchSimple, FUSportsFootballEventType, FUSportsOtherEventType, FUSportsMatchEvent, FUSportsLineupMember, FUSportsCompetitorLineup, FUSportsMatchLineups, FUSportsStatisticEntry, FUSportsCompetitorStatistics, FUSportsMatchStatistics, FUSportsPlayerStatistic, FUSportsPlayerSeasonStatistics, FUSportsTeamSeasonStatistics, FUSportsBettingOperatorBranding, FUSportsBettingOperator, FUSportsOddSelection, FUSportsMarketPeriod, FUSportsMarketType, FUSportsOddMarket, FUSportsBettingOperatorOdds, FUSportsMatchOdds, FUSportsCommentaryDetail, FUSportsCommentaryMeta, FUSportsCommentaryItem, FUSportsStandingEntry, FUSportsCompetitorForm, FUSportsStandingLegendItem, FUSportsStandingsMetadata, FUSportsStandings, FUSportsSquadMember, FUSportsSquad, FUSportsSearchResultBase, FUSportsTournamentSearchResult, FUSportsPlayerSearchResult, FUSportsTeamSearchResult, FUSportsPresidentSearchResult, FUSportsVenueSearchResult, FUSportsCoachSearchResult, FUSportsSearchResult, FUSportsSearchResults, FUSportsTranslation, FUSportsDisplayAsset, FUSportsSportsSearchResultBase, FUSportsSportsSearchCountry, FUSportsTeamSportsSearchResult, FUSportsCitySportsSearchResult, FUSportsHorseSportsSearchResult, FUSportsPlayerSportsSearchResult, FUSportsCoachSportsSearchResult, FUSportsRefereeSportsSearchResult, FUSportsVenueSportsSearchResult, FUSportsTournamentSportsSearchResult, FUSportsMatchSportsSearchResult, FUSportsCountrySportsSearchResult, FUSportsSportsSearchResult, FUSportsSportsSearchResults, } from "./types/canonical";
34
+ export type { GetFootballMatchOptions, GetFootballMatchEventsOptions, GetFootballMatchLineupsOptions, GetFootballMatchOddsOptions, GetFootballMatchStatisticsOptions, GetFootballMatchCommentaryOptions, GetFootballMatchesOptions, GetFootballLivescoreOptions, GetBasketballLivescoreOptions, BasketballMatchStatusType, GetTennisLivescoreOptions, TennisMatchStatusType, TennisMatchType, TennisGender, GetFootballTeamOptions, GetFootballTeamSquadOptions, GetFootballCompetitionOptions, GetFootballSeasonDetailsOptions, GetFootballStandingsOptions, GetFootballPlayerSeasonStatisticsOptions, GetTeamSeasonStatisticsOptions, GetSportal365StandingsOptions, StandingsSport, StandingsCoverageType, GetFootballSearchOptions, SearchEntityType, GetSportsSearchOptions, SportType, SportsSearchEntityType, FootballStandingsExpandOption, OddType, ScopeType, OddFormat, MarketType, OptionalMatchData, MatchStatusType, SortDirection, SelectionFilter, NextCacheOptions, } from "./api/sportal365-sports";
35
+ export type { FUSportsCountry, FUSportsCity, FUSportsCompetitor, FUSportsCompetitorBase, FUSportsTeamCompetitor, FUSportsPlayerCompetitor, FUSportsPairCompetitor, FUSportsShirtColor, FUSportsSeason, FUSportsRound, FUSportsStage, FUSportsSeasonDetails, FUSportsCompetition, FUSportsVenue, FUSportsOfficial, FUSportsMember, FUSportsMatchMember, FUSportsCoach, FUSportsSocials, FUBranding, FUSportsMatchScore, FUSportsMatchStatus, FUSportsMatchTiming, FUSportsMatchWinner, FUSportsMatch, FUSportsMatchSimple, FUSportsFootballEventType, FUSportsOtherEventType, FUSportsMatchEvent, FUSportsLineupMember, FUSportsCompetitorLineup, FUSportsMatchLineups, FUSportsStatisticEntry, FUSportsCompetitorStatistics, FUSportsMatchStatistics, FUSportsPlayerStatistic, FUSportsPlayerSeasonStatistics, FUSportsTeamSeasonStatistics, FUSportsBettingOperatorBranding, FUSportsBettingOperator, FUSportsOddSelection, FUSportsMarketPeriod, FUSportsMarketType, FUSportsOddMarket, FUSportsBettingOperatorOdds, FUSportsMatchOdds, FUSportsCommentaryDetail, FUSportsCommentaryMeta, FUSportsCommentaryItem, FUSportsStandingEntry, FUSportsCompetitorForm, FUSportsStandingLegendItem, FUSportsStandingsMetadata, FUSportsStandings, FUSportsStandingsTable, FUSportsSquadMember, FUSportsSquad, FUSportsSearchResultBase, FUSportsTournamentSearchResult, FUSportsPlayerSearchResult, FUSportsTeamSearchResult, FUSportsPresidentSearchResult, FUSportsVenueSearchResult, FUSportsCoachSearchResult, FUSportsSearchResult, FUSportsSearchResults, FUSportsTranslation, FUSportsDisplayAsset, FUSportsSportsSearchResultBase, FUSportsSportsSearchCountry, FUSportsTeamSportsSearchResult, FUSportsCitySportsSearchResult, FUSportsHorseSportsSearchResult, FUSportsPlayerSportsSearchResult, FUSportsCoachSportsSearchResult, FUSportsRefereeSportsSearchResult, FUSportsVenueSportsSearchResult, FUSportsTournamentSportsSearchResult, FUSportsMatchSportsSearchResult, FUSportsCountrySportsSearchResult, FUSportsSportsSearchResult, FUSportsSportsSearchResults, } from "./types/canonical";
36
36
  export { getActiveSeason, getTeamNextMatch, getTeamPreviousMatch, getTeamUpcomingMatches, getTeamFinishedMatches, getTeamResultsTable, getTeamTopScorers, getTeamTopAssisters, getTeamTopAppearances, getTeamTopMinutesPlayed, getTeamTopCleanSheets, getTeamMostDecorated, aggregatePlayerStatisticsFromMatches, getTopScorersFromMatches, getTopAssistersFromMatches, getMostCardedPlayersFromMatches, getTopGoalContributorsFromMatches, getAllPlayerStatisticsFromMatches, useTopScorersFromMatches, useTopAssistersFromMatches, useMostCardedPlayersFromMatches, useTopGoalContributorsFromMatches, useAllPlayerStatisticsFromMatches, usePlayerStatisticsMap, usePlayerStatistics, } from "./helpers";
37
37
  export type { TeamResultTableResult, TeamResultTableRow, TeamResultTable } from "./helpers";
38
38
  export { calcPercentage, calcAverage, formatStatValue, formatWithAverage, formatAsAverage, formatPossessionPercentage, analyzeMatch, isTeamHome, isTeamAway, isTeamInMatch, isMatchFinished, getTeamScore, getOpponentScore, calculateH2HStats, getRecentH2HMeetings, getTeamHomeAwayStats, getTeamOverUnderStats, getMatchResult, getTeamGoalStats, calculateStreak, getTeamStreaks, getTeamStreaksComparison, streakFilters, getTeamsCommonOpponents, } from "./utilities/stats";
package/index.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/lib/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAGH,OAAO,EACH,SAAS,EACT,SAAS,EACT,YAAY,EACZ,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,aAAa,GACrB,MAAM,UAAU,CAAC;AAGlB,OAAO,EACH,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACpB,0BAA0B,EAC1B,0BAA0B,EAC1B,kBAAkB,EAClB,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACpB,sBAAsB,EACtB,wBAAwB,EACxB,oBAAoB,EACpB,iCAAiC,EACjC,uBAAuB,EACvB,cAAc,GACjB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAGjD,OAAO,EACH,iCAAiC,EACjC,gCAAgC,EAChC,yBAAyB,EACzB,0BAA0B,EAC1B,2BAA2B,EAC3B,4BAA4B,EAC5B,0BAA0B,EAC1B,4BAA4B,EAC5B,2BAA2B,GAC9B,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACH,qBAAqB,EACrB,yBAAyB,EACzB,sBAAsB,EACtB,iBAAiB,GACpB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AACrE,YAAY,EACR,8BAA8B,EAC9B,6BAA6B,IAAI,uCAAuC,EACxE,sBAAsB,IAAI,gCAAgC,EAC1D,uBAAuB,IAAI,iCAAiC,EAC5D,wBAAwB,IAAI,kCAAkC,EAC9D,yBAAyB,IAAI,mCAAmC,EAChE,uBAAuB,IAAI,iCAAiC,EAC5D,yBAAyB,IAAI,mCAAmC,EAChE,wBAAwB,IAAI,kCAAkC,EAC9D,gBAAgB,IAAI,0BAA0B,EAC9C,8BAA8B,GACjC,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEtG,YAAY,EACR,uBAAuB,EACvB,6BAA6B,EAC7B,8BAA8B,EAC9B,2BAA2B,EAC3B,iCAAiC,EACjC,iCAAiC,EACjC,yBAAyB,EACzB,2BAA2B,EAC3B,6BAA6B,EAC7B,yBAAyB,EACzB,yBAAyB,EACzB,qBAAqB,EACrB,eAAe,EACf,YAAY,EACZ,sBAAsB,EACtB,2BAA2B,EAC3B,6BAA6B,EAC7B,+BAA+B,EAC/B,2BAA2B,EAC3B,wCAAwC,EACxC,8BAA8B,EAC9B,wBAAwB,EACxB,gBAAgB,EAChB,sBAAsB,EACtB,SAAS,EACT,sBAAsB,EACtB,6BAA6B,EAC7B,OAAO,EACP,SAAS,EACT,SAAS,EACT,UAAU,EACV,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,eAAe,EACf,gBAAgB,GACnB,MAAM,yBAAyB,CAAC;AAGjC,YAAY,EAER,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,EACtB,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,UAAU,EAEV,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,mBAAmB,EAEnB,yBAAyB,EACzB,sBAAsB,EACtB,kBAAkB,EAElB,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,EAEpB,sBAAsB,EACtB,4BAA4B,EAC5B,uBAAuB,EACvB,uBAAuB,EACvB,8BAA8B,EAC9B,4BAA4B,EAE5B,+BAA+B,EAC/B,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,2BAA2B,EAC3B,iBAAiB,EAEjB,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EAEtB,qBAAqB,EACrB,sBAAsB,EACtB,0BAA0B,EAC1B,yBAAyB,EACzB,iBAAiB,EAEjB,mBAAmB,EACnB,aAAa,EAEb,wBAAwB,EACxB,8BAA8B,EAC9B,0BAA0B,EAC1B,wBAAwB,EACxB,6BAA6B,EAC7B,yBAAyB,EACzB,yBAAyB,EACzB,oBAAoB,EACpB,qBAAqB,EAErB,mBAAmB,EACnB,oBAAoB,EACpB,8BAA8B,EAC9B,2BAA2B,EAC3B,8BAA8B,EAC9B,8BAA8B,EAC9B,+BAA+B,EAC/B,gCAAgC,EAChC,+BAA+B,EAC/B,iCAAiC,EACjC,+BAA+B,EAC/B,oCAAoC,EACpC,+BAA+B,EAC/B,iCAAiC,EACjC,0BAA0B,EAC1B,2BAA2B,GAC9B,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACH,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EAEpB,oCAAoC,EACpC,wBAAwB,EACxB,0BAA0B,EAC1B,+BAA+B,EAC/B,iCAAiC,EACjC,iCAAiC,EAEjC,wBAAwB,EACxB,0BAA0B,EAC1B,+BAA+B,EAC/B,iCAAiC,EACjC,iCAAiC,EACjC,sBAAsB,EACtB,mBAAmB,GACtB,MAAM,WAAW,CAAC;AAGnB,YAAY,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAG5F,OAAO,EAEH,cAAc,EACd,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,0BAA0B,EAC1B,YAAY,EACZ,UAAU,EACV,UAAU,EACV,aAAa,EACb,eAAe,EACf,YAAY,EACZ,gBAAgB,EAEhB,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,cAAc,EAEd,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,wBAAwB,EACxB,aAAa,EACb,uBAAuB,GAC1B,MAAM,mBAAmB,CAAC;AAG3B,YAAY,EAER,aAAa,EACb,WAAW,EACX,WAAW,EACX,WAAW,EAEX,QAAQ,EACR,QAAQ,EACR,eAAe,EACf,kBAAkB,EAElB,aAAa,EACb,WAAW,EACX,UAAU,EACV,SAAS,EACT,mBAAmB,EACnB,eAAe,GAClB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/lib/index.ts"],"names":[],"mappings":"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"}
@@ -51,7 +51,7 @@ function M(e) {
51
51
  }
52
52
  };
53
53
  }
54
- const U = "https://football.api.sportal365.com", Re = "https://basketball.api.sportal365.com", Le = "https://tennis.api.sportal365.com", ke = "https://sports-statistics.api.sportal365.com", De = "https://sports-search.api.sportal365.com", g = M(U);
54
+ const U = "https://football.api.sportal365.com", Re = "https://basketball.api.sportal365.com", Le = "https://tennis.api.sportal365.com", ke = "https://sports-statistics.api.sportal365.com", De = "https://sports-search.api.sportal365.com", Ne = "https://standing.api.sportal365.com", g = M(U);
55
55
  function O(e) {
56
56
  if (e)
57
57
  return {
@@ -113,10 +113,10 @@ function i(e, t = "sportal365") {
113
113
  }
114
114
  ];
115
115
  }
116
- function Ne(e, t) {
116
+ function Fe(e, t) {
117
117
  return e ? e.find((o) => o.provider === t)?.id : void 0;
118
118
  }
119
- function Fe(e, t, n) {
119
+ function Pe(e, t, n) {
120
120
  const o = e ?? [], a = o.findIndex((s) => s.provider === t);
121
121
  if (a >= 0) {
122
122
  const s = [...o];
@@ -503,7 +503,7 @@ async function xe(e, t, n) {
503
503
  });
504
504
  return A(s);
505
505
  }
506
- async function Pe(e, t, n) {
506
+ async function Me(e, t, n) {
507
507
  const o = n || m(), { sportal365Sports: a } = o;
508
508
  return (await g.get({
509
509
  path: `/v2/matches/${e}/events`,
@@ -517,7 +517,7 @@ async function Pe(e, t, n) {
517
517
  config: o
518
518
  })).events.map(T).filter((u) => u !== null);
519
519
  }
520
- async function Me(e, t, n) {
520
+ async function Ue(e, t, n) {
521
521
  const o = n || m(), { sportal365Sports: a } = o, s = await g.get({
522
522
  path: `/v2/matches/${e}/lineups`,
523
523
  params: {
@@ -531,7 +531,7 @@ async function Me(e, t, n) {
531
531
  });
532
532
  return Z(s);
533
533
  }
534
- async function Ue(e, t, n) {
534
+ async function He(e, t, n) {
535
535
  const o = n || m(), { sportal365Sports: a } = o, s = await g.get({
536
536
  path: `/v2/matches/${e}`,
537
537
  params: {
@@ -551,7 +551,7 @@ async function Ue(e, t, n) {
551
551
  });
552
552
  return ee(e, s.odds ?? []);
553
553
  }
554
- async function He(e, t, n) {
554
+ async function $e(e, t, n) {
555
555
  const o = n || m(), { sportal365Sports: a } = o, s = await g.get({
556
556
  path: `/events/${e}/teamstats`,
557
557
  params: {
@@ -565,7 +565,7 @@ async function He(e, t, n) {
565
565
  });
566
566
  return w(s);
567
567
  }
568
- async function $e(e, t, n) {
568
+ async function Ye(e, t, n) {
569
569
  const o = n || m(), { sportal365Sports: a } = o;
570
570
  return (await g.get({
571
571
  path: `/matches/${e}/commentary`,
@@ -579,7 +579,7 @@ async function $e(e, t, n) {
579
579
  config: o
580
580
  })).map(te);
581
581
  }
582
- async function Ye(e, t) {
582
+ async function Be(e, t) {
583
583
  const n = t || m(), { sportal365Sports: o } = n;
584
584
  return (await g.get({
585
585
  path: "/v2/matches",
@@ -624,7 +624,7 @@ async function Ye(e, t) {
624
624
  config: n
625
625
  })).matches.map(A);
626
626
  }
627
- async function Be(e, t) {
627
+ async function Ge(e, t) {
628
628
  const n = t || m(), { sportal365Sports: o } = n;
629
629
  return (await g.get({
630
630
  path: "/v2/matches/livescore",
@@ -925,7 +925,7 @@ async function de(e, t) {
925
925
  }
926
926
  return h;
927
927
  }
928
- async function Ge(e, t, n) {
928
+ async function Ve(e, t, n) {
929
929
  const o = n || m(), { sportal365Sports: a } = o, s = await g.get({
930
930
  path: `/v2/teams/${e}`,
931
931
  params: {
@@ -940,7 +940,7 @@ async function Ge(e, t, n) {
940
940
  });
941
941
  return oe(s);
942
942
  }
943
- async function Ve(e, t, n) {
943
+ async function We(e, t, n) {
944
944
  const o = n || m(), { sportal365Sports: a } = o, s = t?.seasonIds && t.seasonIds.length > 0 ? { revalidate: 0 } : t?.next, u = await g.get({
945
945
  path: `/v2/teams/${e}/squad`,
946
946
  params: {
@@ -1064,7 +1064,7 @@ function le(e) {
1064
1064
  providerRef: i(t.uuid)
1065
1065
  };
1066
1066
  }
1067
- async function We(e, t, n) {
1067
+ async function Ke(e, t, n) {
1068
1068
  const o = n || m(), { sportal365Sports: a } = o, s = await g.get({
1069
1069
  path: `/tournaments/${e}`,
1070
1070
  params: {
@@ -1078,7 +1078,7 @@ async function We(e, t, n) {
1078
1078
  });
1079
1079
  return ce(s);
1080
1080
  }
1081
- async function Ke(e, t) {
1081
+ async function je(e, t) {
1082
1082
  const n = t || m(), { sportal365Sports: o } = n;
1083
1083
  if (!e?.seasonId && !e?.competitionId)
1084
1084
  throw new Error("Either seasonId or competitionId must be provided");
@@ -1183,7 +1183,7 @@ function _e(e) {
1183
1183
  }
1184
1184
  };
1185
1185
  }
1186
- async function je(e, t) {
1186
+ async function qe(e, t) {
1187
1187
  const n = t || m(), { sportal365Sports: o } = n, a = e.expand?.join(","), s = await g.get({
1188
1188
  path: `/tournaments/seasons/stages/${e.stageId}/standing`,
1189
1189
  params: {
@@ -1319,10 +1319,10 @@ function b(e) {
1319
1319
  ]
1320
1320
  };
1321
1321
  }
1322
- function qe(e) {
1322
+ function Xe(e) {
1323
1323
  return b(e.data);
1324
1324
  }
1325
- function Xe(e) {
1325
+ function ze(e) {
1326
1326
  return e.data.map(b);
1327
1327
  }
1328
1328
  function Ce(e) {
@@ -1336,10 +1336,10 @@ async function Se(e, t, n) {
1336
1336
  );
1337
1337
  return Ce(o);
1338
1338
  }
1339
- async function ze(e, t, n, o) {
1339
+ async function Je(e, t, n, o) {
1340
1340
  return (await Se(e, t, o)).filter((s) => s.competitorOne.id === n || s.competitorTwo.id === n);
1341
1341
  }
1342
- async function Je(e, t, n) {
1342
+ async function Qe(e, t, n) {
1343
1343
  const o = await e.loyalty.getTemplateById(t, n?.disableCache);
1344
1344
  return {
1345
1345
  id: o.id,
@@ -1436,7 +1436,7 @@ function Ae(e, t) {
1436
1436
  },
1437
1437
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
1438
1438
  selections: _.selections.map((y) => {
1439
- const x = y.urls?.find((P) => P.appType === "desktop")?.url;
1439
+ const P = y.urls?.find((x) => x.appType === "desktop")?.url;
1440
1440
  let S = "NONE";
1441
1441
  return y.movement === "UP" ? S = "UP" : y.movement === "DOWN" && (S = "DOWN"), {
1442
1442
  id: y.id,
@@ -1446,7 +1446,7 @@ function Ae(e, t) {
1446
1446
  odds: y.odds,
1447
1447
  oddsOld: y.oddsOld,
1448
1448
  movement: S,
1449
- url: x
1449
+ url: P
1450
1450
  };
1451
1451
  })
1452
1452
  }))
@@ -1460,7 +1460,7 @@ function Ie(e) {
1460
1460
  const t = e.replace("#", ""), n = parseInt(t.substring(0, 2), 16), o = parseInt(t.substring(2, 4), 16), a = parseInt(t.substring(4, 6), 16);
1461
1461
  return (0.2126 * n + 0.7152 * o + 0.0722 * a) / 255 < 0.5;
1462
1462
  }
1463
- async function Qe(e, t, n) {
1463
+ async function Ze(e, t, n) {
1464
1464
  if (!t || t.length === 0)
1465
1465
  return /* @__PURE__ */ new Map();
1466
1466
  const o = {
@@ -1473,37 +1473,38 @@ async function Qe(e, t, n) {
1473
1473
  return Ae(a, n?.bookmakerIds);
1474
1474
  }
1475
1475
  export {
1476
- Se as A,
1477
- ze as B,
1476
+ We as A,
1477
+ Se as B,
1478
1478
  Je as C,
1479
- Ne as D,
1480
- Oe as E,
1481
- be as F,
1479
+ Qe as D,
1480
+ Fe as E,
1481
+ Oe as F,
1482
+ be as G,
1482
1483
  Re as S,
1483
1484
  V as a,
1484
1485
  Le as b,
1485
1486
  M as c,
1486
1487
  De as d,
1487
- ke as e,
1488
+ Ne as e,
1488
1489
  g as f,
1489
1490
  m as g,
1490
- qe as h,
1491
+ ke as h,
1491
1492
  Xe as i,
1492
- Fe as j,
1493
- Qe as k,
1494
- We as l,
1495
- Be as m,
1496
- xe as n,
1497
- $e as o,
1498
- Pe as p,
1493
+ ze as j,
1494
+ Pe as k,
1495
+ Ze as l,
1496
+ Ke as m,
1497
+ Ge as n,
1498
+ xe as o,
1499
+ Ye as p,
1499
1500
  Me as q,
1500
1501
  Ue as r,
1501
1502
  He as s,
1502
1503
  i as t,
1503
- Ye as u,
1504
- de as v,
1505
- Ke as w,
1504
+ $e as u,
1505
+ Be as v,
1506
+ de as w,
1506
1507
  je as x,
1507
- Ge as y,
1508
+ qe as y,
1508
1509
  Ve as z
1509
1510
  };
@@ -0,0 +1 @@
1
+ "use strict";const A="__FANSUNITED_DATA_LAYER_CONFIG__";function Y(e){globalThis[A]=e}function g(){const e=globalThis[A];if(!e)throw new Error("Data layer config not initialized. Call setConfig() in your root layout.");return e}function B(){return globalThis[A]!==void 0}function F(e){const t=e.replace(/\/$/,"");function n(a){const{sportal365Sports:s}=a;if(!s)throw new Error("Sportal365 Sports API configuration is missing");const u=`${s.username}:${s.password}`;return`Basic ${btoa(u)}`}function o(a){return`${t}${a}`}return{async get(a){const s=a.config||g(),{sportal365Sports:u}=s;if(!u)throw new Error("Sportal365 Sports API configuration is missing");const r=new URL(o(a.path));if(a.params)for(const[f,l]of Object.entries(a.params))l!==void 0&&(Array.isArray(l)?l.length>0&&r.searchParams.set(f,l.join(",")):r.searchParams.set(f,l));const d=await fetch(r.toString(),{method:"GET",headers:{Authorization:n(s),"Content-Type":"application/json","X-Project":u.projectId,...a.headers},signal:u.timeout?AbortSignal.timeout(u.timeout):void 0,...a.next&&{next:a.next}});if(!d.ok)throw new Error(`Sportal365 API error: ${d.status} ${d.statusText}`);return d.json()}}}const G="https://football.api.sportal365.com",V="https://basketball.api.sportal365.com",W="https://tennis.api.sportal365.com",K="https://sports-statistics.api.sportal365.com",j="https://sports-search.api.sportal365.com",q="https://standing.api.sportal365.com",m=F(G);function O(e){if(e)return{id:e.id,name:e.name,slug:e.slug,position:e.position,gender:e.gender,assets:e.assets?{photo:e.assets.thumb?.url,photoTransparent:e.assets.thumb_transparent_background?.url}:void 0}}const X={GOAL:"GOAL",PENALTY_GOAL:"PENALTY_GOAL",OWN_GOAL:"OWN_GOAL",DISALLOWED_GOAL:"DISALLOWED_GOAL",PENALTY_SHOOTOUT_SCORED:"PENALTY_SHOOTOUT_SCORED",PENALTY_SHOOTOUT_MISSED:"PENALTY_SHOOTOUT_MISSED",YELLOW_CARD:"YELLOW_CARD",RED_CARD:"RED_CARD",YELLOW_RED_CARD:"YELLOW_RED_CARD",SUBSTITUTION:"SUBSTITUTION",KICKOFF:"KICKOFF",HALFTIME:"HALFTIME",START_SECOND_HALF:"START_SECOND_HALF",FINISHED:"FINISHED",INJURY_TIME:"INJURY_TIME",PENALTY_AWARDED:"PENALTY_AWARDED",PENALTY_MISSED:"PENALTY_MISSED",PENALTY_SAVED:"PENALTY_SAVED"};function T(e){const t=X[e.type_code];return t?{id:e.id,type:t,competitorPosition:e.team_position==="HOME"?"ONE":"TWO",minute:e.minute,injuryMinute:e.injury_minute,primaryPlayer:O(e.primary_player),secondaryPlayer:O(e.secondary_player),score:e.score?{competitorOne:String(e.score.home),competitorTwo:String(e.score.away)}:void 0}:(console.warn(`Unknown event type: ${e.type_code}`),null)}function i(e,t="sportal365"){if(e)return[{provider:t,id:e}]}function z(e,t){return e?e.find(o=>o.provider===t)?.id:void 0}function J(e,t,n){const o=e??[],a=o.findIndex(s=>s.provider===t);if(a>=0){const s=[...o];return s[a]={provider:t,id:n},s}else return[...o,{provider:t,id:n}]}function Q(e){const t=e.urls?.find(n=>n.app_type==="desktop")?.url;return{id:e.id,name:e.name,code:e.code,value:e.value??void 0,odds:e.odds,oddsOld:e.odds_old,movement:e.movement==="STABLE"?"NONE":e.movement,url:t}}function Z(e){return{type:{id:e.type.id,code:e.type.code,name:e.type.name},period:{id:e.scope.id,type:e.scope.type,name:e.scope.name},selections:e.selections.map(Q)}}function w(e){if(!e)return!0;const t=e.replace("#",""),n=parseInt(t.substring(0,2),16),o=parseInt(t.substring(2,4),16),a=parseInt(t.substring(4,6),16);return(.2126*n+.7152*o+.0722*a)/255<.5}function ee(e){const t=e.bookmaker.assets?.[0],n=e.bookmaker.branding||t,o=e.bookmaker.branding?.background_color||t?.background_color,a=e.bookmaker.branding?.text_color||(w(o)?"#FFFFFF":"#000000");return{operator:{id:e.bookmaker.id,name:e.bookmaker.name,url:e.bookmaker.url,branding:n?{backgroundColor:o,textColor:a,logo:t?.logo}:void 0},type:e.type,markets:e.markets.map(Z)}}function P(e){return e.map(ee)}function te(e){const t={finished_ap:"finished_after_penalties",finished_aet:"finished_after_extra_time",finished:"finished",not_started:"not_started",live:"live",interrupted:"interrupted",cancelled:"cancelled",postponed:"postponed",abandoned:"abandoned"};let n;return e.code&&t[e.code]?n=t[e.code]:n={FINISHED:"finished",NOT_STARTED:"not_started",LIVE:"live",INTERRUPTED:"interrupted",CANCELLED:"cancelled",POSTPONED:"postponed",UNKNOWN:"not_started",ABANDONED:"abandoned"}[e.type]??"not_started",{code:n,name:e.name,shortName:e.short_name,type:e.type}}function R(e){return{id:e.id,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code,slug:e.slug,type:e.type==="national"?"national":"club",gender:e.gender,assets:e.assets?{logo:e.assets.logo?.url,homeKit:e.assets.home_kit?.url,awayKit:e.assets.away_kit?.url,squadImage:e.assets.squad_image?.url}:void 0,metadata:e.shirt_color?{shirtColors:[{type:"home",colorCode:e.shirt_color}]}:void 0,providerRef:i(e.uuid)}}function oe(e){return{kickoffTime:new Date(e.kickoff_time),currentMinute:e.minute?.regular_time,phaseStartedAt:e.phase_started_at?new Date(e.phase_started_at):void 0,finishedAt:e.finished_at?new Date(e.finished_at):void 0,firstHalfStartedAt:e.first_half_started_at?new Date(e.first_half_started_at):void 0,secondHalfStartedAt:e.second_half_started_at?new Date(e.second_half_started_at):void 0,extraTimeFirstHalfStartedAt:e.extra_time_first_half_started_at?new Date(e.extra_time_first_half_started_at):void 0,extraTimeSecondHalfStartedAt:e.extra_time_second_half_started_at?new Date(e.extra_time_second_half_started_at):void 0}}function ne(e){if(!e)return;const t=o=>o?{competitorOne:String(o.home),competitorTwo:String(o.away)}:void 0,n=e.after_extra_time??e.regular_time;return{competitorOne:n?.home!=null?String(n.home):null,competitorTwo:n?.away!=null?String(n.away):null,breakdown:{total:t(e.total),halfTime:t(e.half_time),regularTime:t(e.regular_time),extraTime:t(e.extra_time),penaltyShootout:t(e.penalty_shootout),aggregate:t(e.aggregate)}}}function ae(e){if(e)return{id:e.id,name:e.name,slug:e.slug,assets:e.assets?.image?.url?{image:e.assets.image.url}:void 0,providerRef:i(e.uuid)}}function se(e){if(e?.length)return e.map(t=>({id:t.id,name:t.name,slug:t.slug,role:t.role??"REFEREE",gender:t.gender}))}function ie(e){if(!e.season?.tournament)return;const{tournament:t,...n}=e.season;return{id:t.id,name:t.name,slug:t.slug,type:t.type,region:t.region,country:t.country?{id:t.country.id,name:t.country.name,code:t.country.code??void 0,flag:t.country.assets?.flag?.url,providerRef:i(t.country.uuid)}:void 0,season:{id:n.id,name:n.name,status:n.status},stage:e.stage?{id:e.stage.id,name:e.stage.name,type:e.stage.type}:void 0,assets:t.assets?.logo?.url?{logo:t.assets.logo.url}:void 0,providerRef:i(t.uuid)}}function re(e){if(!e.winner?.match?.id)return;const t={"Regular Time":"REGULAR_TIME","Extra Time":"EXTRA_TIME",Penalties:"PENALTIES"};return{competitorId:e.winner.match.id,reason:e.winner.match.reason?.name?t[e.winner.match.reason.name]:void 0,aggregate:!!e.winner.aggregate}}function I(e){return{id:e.id,slug:e.slug,status:te(e.status),timing:oe(e),competitorOne:R(e.home_team),competitorTwo:R(e.away_team),competition:ie(e),round:e.round?{id:e.round.id??e.round.key,key:e.round.key,name:e.round.name,type:e.round.type??"REGULAR",providerRef:i(e.round.uuid)}:void 0,group:e.group?{id:e.group.id,name:e.group.name,providerRef:i(e.group.uuid)}:void 0,venue:ae(e.venue),officials:se(e.referees),spectators:e.spectators??void 0,score:ne(e.score),mainEvents:e.main_events?.map(T).filter(t=>t!==null),penaltyShootoutEvents:e.penalty_shootout_events?.map(T).filter(t=>t!==null),winner:re(e),coverage:e.coverage==="NOT_LIVE"?"UNKNOWN":e.coverage,lineupStatus:e.lineup_status==="UNCONFIRMED"?"EXPECTED":e.lineup_status,providerRef:i(e.uuid)}}function de(e){const t=e.player;return{id:t.id,name:t.name,slug:t.slug,position:t.position,shirtNumber:e.shirt_number,positionX:e.position_x??void 0,positionY:e.position_y??void 0,country:t.country?{id:t.country.id,name:t.country.name,code:t.country.code,providerRef:i(t.country.uuid)}:void 0,birthdate:t.birthdate,profile:t.profile?{height:t.profile.height,weight:t.profile.weight}:void 0,assets:t.assets?{photo:t.assets.thumb?.url,photoTransparent:t.assets.thumb_transparent_background?.url}:void 0,events:e.events?.map(T).filter(n=>n!==null),providerRef:i(t.uuid)}}function L(e){const t=[],n=[];for(const o of e.players){const a=de(o);o.type.category==="start"?t.push(a):o.type.category==="sub"&&n.push(a)}return{competitorId:e.team_id,formation:e.formation,coach:e.coach?{id:e.coach.id,name:e.coach.name,slug:e.coach.slug,country:e.coach.country?{id:e.coach.country.id,name:e.coach.country.name,code:e.coach.country.code,providerRef:i(e.coach.country.uuid)}:void 0,birthdate:e.coach.birthdate,providerRef:i(e.coach.uuid)}:void 0,starters:t,substitutes:n}}function ce(e){return{matchId:e.match_id,confirmed:e.status==="CONFIRMED",competitorOne:L(e.home_team),competitorTwo:L(e.away_team)}}function p(e,t,n,o){return t==null?null:{key:e,value:String(t),label:n,unit:o}}function D(e,t){const n=(t.shots_on??0)+(t.shots_off??0)+(t.shots_blocked??0),o=[p("possession",t.possession,"Possession","%"),p("shots_total",n,"Shots"),p("shots_on_target",t.shots_on,"Shots on Target"),p("shots_off_target",t.shots_off,"Shots off Target"),p("shots_blocked",t.shots_blocked,"Shots Blocked"),p("corners",t.corners,"Corner Kicks"),p("goal_kicks",t.goal_kicks,"Goal Kicks"),p("throw_ins",t.throw_in,"Throw Ins"),p("offsides",t.offside,"Offsides"),p("fouls",t.fouls_committed,"Fouls"),p("yellow_cards",t.yellow_cards,"Yellow Cards"),p("passes",t.pass,"Passes"),p("crosses",t.crosses,"Crosses")];return{competitorId:e,statistics:o.filter(a=>a!==null)}}function ue(e){const t=e.find(o=>o.home_team),n=e.find(o=>!o.home_team);if(!t||!n)throw new Error("Missing competitor statistics");return{competitorOne:D(String(t.team.id),t.statistics),competitorTwo:D(String(n.team.id),n.statistics)}}function le(e,t){return{matchId:e,operators:P(t)}}function k(e){if(e==null||e==="")return;const t=typeof e=="number"?e:parseInt(e,10);return isNaN(t)?void 0:t}function ge(e){return{externalId:e.external_id,minute:k(e.elapsed),addedTime:k(e.elapsed_plus),text:e.auto_text,details:e.details,meta:{type:e.type,commentaryType:e.commentary_type,subtype1:e.subtype_1,subtype2:e.subtype_2,timestamp:e.incident_timestamp}}}async function me(e,t,n){const o=n||g(),{sportal365Sports:a}=o,s=await m.get({path:`/v2/matches/${e}`,params:{language_code:t?.languageCode??a?.languageCode??"en",odd_client:t?.oddClient,odd_type:t?.oddType,scope_type:t?.scopeType,odd_format:t?.oddFormat,market_types:t?.marketTypes,bookmaker_ids:t?.bookmakerIds,optional_data:t?.optionalData},headers:{"Accept-Language":t?.languageCode??a?.languageCode??"en"},next:t?.next,config:o});return I(s)}async function pe(e,t,n){const o=n||g(),{sportal365Sports:a}=o;return(await m.get({path:`/v2/matches/${e}/events`,params:{language_code:t?.languageCode??a?.languageCode??"en"},headers:{"Accept-Language":t?.languageCode??a?.languageCode??"en"},next:t?.next,config:o})).events.map(T).filter(u=>u!==null)}async function fe(e,t,n){const o=n||g(),{sportal365Sports:a}=o,s=await m.get({path:`/v2/matches/${e}/lineups`,params:{language_code:t?.languageCode??a?.languageCode??"en"},headers:{"Accept-Language":t?.languageCode??a?.languageCode??"en"},next:t?.next,config:o});return ce(s)}async function _e(e,t,n){const o=n||g(),{sportal365Sports:a}=o,s=await m.get({path:`/v2/matches/${e}`,params:{language_code:t?.languageCode??a?.languageCode??"en",odd_client:t?.oddClient??a?.oddClient,odd_type:t?.oddType,scope_type:t?.scopeType??"ALL",odd_format:t?.oddFormat??"DECIMAL",market_types:t?.marketTypes,bookmaker_ids:t?.bookmakerIds},headers:{"Accept-Language":t?.languageCode??a?.languageCode??"en"},next:t?.next,config:o});return le(e,s.odds??[])}async function ye(e,t,n){const o=n||g(),{sportal365Sports:a}=o,s=await m.get({path:`/events/${e}/teamstats`,params:{language_code:t?.languageCode??a?.languageCode??"en"},headers:{"Accept-Language":t?.languageCode??a?.languageCode??"en"},next:t?.next,config:o});return ue(s)}async function he(e,t,n){const o=n||g(),{sportal365Sports:a}=o;return(await m.get({path:`/matches/${e}/commentary`,params:{language_code:t?.languageCode??a?.languageCode??"en"},headers:{"Accept-Language":t?.languageCode??a?.languageCode??"en"},next:t?.next,config:o})).map(ge)}async function ve(e,t){const n=t||g(),{sportal365Sports:o}=n;return(await m.get({path:"/v2/matches",params:{language_code:e.languageCode??o?.languageCode??"en",limit:e.limit.toString(),offset:e.offset.toString(),tournament_ids:e.tournamentIds,season_ids:e.seasonIds,stage_ids:e.stageIds,group_ids:e.groupIds,round_ids:e.roundIds,round_filter:e.roundFilter,from_kickoff_time:e.fromKickoffTime,to_kickoff_time:e.toKickoffTime,team_ids:e.teamIds,team_ids_operator:e.teamIdsOperator,referee_id:e.refereeId,venue_id:e.venueId,player_id:e.playerId,status_types:e.statusTypes,status_codes:e.statusCodes,odd_client:e.oddClient??o?.oddClient,odd_type:e.oddType,scope_type:e.scopeType,odd_format:e.oddFormat,market_types:e.marketTypes,bookmaker_ids:e.bookmakerIds,sort_direction:e.sortDirection,optional_data:e.optionalData},headers:{"Accept-Language":e.languageCode??o?.languageCode??"en"},next:e.next,config:n})).matches.map(I)}async function Te(e,t){const n=t||g(),{sportal365Sports:o}=n;return(await m.get({path:"/v2/matches/livescore",params:{match_ids:e?.matchIds,date:e?.date,utc_offset:e?.utcOffset?.toString(),tournament_group:e?.tournamentGroup,status_types:e?.statusTypes,selection_filter:e?.selectionFilter,language_code:e?.languageCode??o?.languageCode??"en",odd_client:e?.oddClient??o?.oddClient,odd_type:e?.oddType,scope_type:e?.scopeType,odd_format:e?.oddFormat,market_types:e?.marketTypes,optional_data:e?.optionalData},headers:{"Accept-Language":e?.languageCode??o?.languageCode??"en"},next:e?.next,config:n})).matches.map(I)}function Se(e){return{id:e.id,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code,slug:e.slug,type:e.type==="placeholder"||e.type==="club"?"club":"national",gender:e.gender,country:e.country?{id:e.country.id,name:e.country.name,code:e.country.code??void 0,flag:e.country.assets?.flag?.url,providerRef:i(e.country.uuid)}:void 0,venue:e.venue?{id:e.venue.id,name:e.venue.name,slug:e.venue.slug,city:e.venue.city?{id:e.venue.city.id,name:e.venue.city.name,country:e.venue.city.country?{id:e.venue.city.country.id,name:e.venue.city.country.name,code:e.venue.city.country.code??void 0,flag:e.venue.city.country.assets?.flag?.url,providerRef:i(e.venue.city.country.uuid)}:void 0,providerRef:i(e.venue.city.uuid??void 0)}:void 0,country:e.venue.country?{id:e.venue.country.id,name:e.venue.country.name,code:e.venue.country.code??void 0,flag:e.venue.country.assets?.flag?.url,providerRef:i(e.venue.country.uuid)}:void 0,profile:e.venue.profile?{latitude:e.venue.profile.lat,longitude:e.venue.profile.lng,capacity:e.venue.profile.capacity}:void 0,assets:e.venue.assets?.image?.url?{image:e.venue.assets.image.url}:void 0,providerRef:i(e.venue.uuid)}:void 0,coach:e.coach?{id:e.coach.id,name:e.coach.name,slug:e.coach.slug,country:{id:e.coach.country.id,name:e.coach.country.name,code:e.coach.country.code??void 0,flag:e.coach.country.assets?.flag?.url,providerRef:i(e.coach.country.uuid)},birthdate:e.coach.birthdate,providerRef:i(e.coach.uuid)}:void 0,founded:e.founded,assets:e.assets?{logo:e.assets.logo?.url,homeKit:e.assets.home_kit?.url,awayKit:e.assets.away_kit?.url,squadImage:e.assets.squad_image?.url}:void 0,metadata:{shirtColors:e.shirt_colors?.map(t=>({type:t.type,colorCode:t.color_code})),socials:e.social?{website:e.social.web,x:e.social.twitter_id,facebook:e.social.facebook_id,instagram:e.social.instagram_id,wikipedia:e.social.wikipedia_id}:void 0},activeSeasons:e.active_seasons?.map(t=>({id:t.id,name:t.name,slug:t.slug,active:t.status==="ACTIVE",providerRef:i(t.uuid)})),currentSeason:e.current_season?{id:e.current_season.id,name:e.current_season.name,slug:e.current_season.slug,active:e.current_season.status==="ACTIVE",providerRef:i(e.current_season.uuid)}:void 0,form:e.form&&e.form.length>0?{competitorId:e.id,results:e.form.map(t=>{const o=t.participants[0].id===e.uuid?t.participants[1]:t.participants[0],a=t.result[0]?.results.find(r=>r.position==="1")?.value,s=t.result[0]?.results.find(r=>r.position==="2")?.value,u=t.outcome==="win"?"W":t.outcome==="draw"?"D":"L";return{matchId:t.id,result:u,score:a&&s?`${a}-${s}`:void 0,opponent:{id:o.id,name:o.name,logo:o.display_asset?.url},date:new Date(t.start_time),competition:t.competition?{id:t.competition.id,name:t.competition.name}:void 0}}),formString:e.form.map(t=>t.outcome==="win"?"W":t.outcome==="draw"?"D":"L").join("")}:void 0,providerRef:i(e.uuid)}}function Ce(e){const t=e.player;return{id:t.id,name:t.name,slug:t.slug,position:t.position,shirtNumber:e.shirt_number,country:t.country?{id:t.country.id,name:t.country.name,code:t.country.code??void 0,flag:t.country.assets?.flag?.url,providerRef:i(t.country.uuid)}:void 0,gender:t.gender,birthdate:t.birthdate,profile:{height:t.profile?.height??void 0,weight:t.profile?.weight??void 0},assets:t.assets?{photo:t.assets.thumb?.url,photoTransparent:t.assets.thumb_transparent_background?.url}:void 0,status:e.status,contractType:e.contract_type,contractUntil:e.contract_until??void 0,joinedDate:e.start_date??void 0,providerRef:i(t.id)}}function Ae(e){return{id:e.id,name:e.name,slug:e.slug,country:e.country?{id:e.country.id,name:e.country.name,code:e.country.code??void 0,flag:e.country.assets?.flag?.url,providerRef:i(e.country.uuid)}:void 0,birthdate:e.birthdate,providerRef:i(e.uuid)}}function Ie(e){return{teamId:e.team.id,teamName:e.team.name,coach:e.coach?Ae(e.coach):void 0,players:e.players.map(Ce)}}function Ee(e){const t=parseInt(e,10);return isNaN(t)?void 0:t}function c(e,t){const n=e.find(o=>o.name===t);return n?Ee(n.value):void 0}function be(e,t){const n=e.statistics;return{playerId:e.player.id,seasonId:e.season.id,teamId:t,appearances:c(n,"played"),started:c(n,"started"),substituteIn:c(n,"substitute_in"),substituteOut:c(n,"substitute_out"),minutes:c(n,"minutes"),minutesSubstitute:c(n,"minutes_substitute"),goals:c(n,"goals"),goalsSubstitute:c(n,"goals_substitute"),penaltyGoals:c(n,"penalty_goals"),ownGoals:c(n,"own_goals"),assists:c(n,"assists"),shots:c(n,"shots"),shotsOnTarget:c(n,"shots_on_target"),yellowCards:c(n,"yellow_cards"),redCards:c(n,"red_cards"),foulsCommitted:c(n,"fouls_committed"),penaltiesCommitted:c(n,"penalties_committed"),penaltiesMissed:c(n,"penalties_missed"),cleansheets:c(n,"cleansheets"),saves:c(n,"saves"),conceded:c(n,"conceded"),caughtBall:c(n,"caught_ball"),penaltiesReceived:c(n,"penalties_received"),offsides:c(n,"offsides"),rawStatistics:n.map(o=>({name:o.name,value:o.value}))}}async function M(e,t){const n=t||g(),{sportal365Sports:o}=n,{seasonIds:a,teamId:s,languageCode:u,next:r}=e,d=r??{revalidate:0},f={season_ids:a.join(","),team_id:s,language_code:u??o?.languageCode??"en"},l=await m.get({path:"/v2/statistics/players/season",params:f,headers:{"Accept-Language":u??o?.languageCode??"en"},next:d,config:n});if(!l.statistics)return console.error("[getFootballPlayerSeasonStatistics] Invalid API response - missing statistics array:",{teamId:s,seasonIds:a,response:l}),{};if(l.statistics.length===0)throw console.warn("[getFootballPlayerSeasonStatistics] API returned empty statistics array:",{teamId:s,seasonIds:a,hint:"This could be due to: wrong credentials, wrong project header, no data for this team/season, or API issue"}),new Error(`No player statistics found for team ${s} in seasons ${a.join(", ")}. This could be due to: wrong credentials, wrong X-Project header, or no data available for this team/season.`);const h={};for(const v of l.statistics){const S=v.player.id;h[S]=be(v,s)}return h}async function Oe(e,t,n){const o=n||g(),{sportal365Sports:a}=o,s=await m.get({path:`/v2/teams/${e}`,params:{language_code:t?.languageCode??a?.languageCode??"en",optional_data:"form"},headers:{"Accept-Language":t?.languageCode??a?.languageCode??"en"},next:t?.next,config:o});return Se(s)}async function Re(e,t,n){const o=n||g(),{sportal365Sports:a}=o,s=t?.seasonIds&&t.seasonIds.length>0?{revalidate:0}:t?.next,u=await m.get({path:`/v2/teams/${e}/squad`,params:{language_code:t?.languageCode??a?.languageCode??"en",memberStatus:t?.memberStatus??"ACTIVE"},headers:{"Accept-Language":t?.languageCode??a?.languageCode??"en"},next:s,config:o}),r=Ie(u);if(t?.seasonIds&&t.seasonIds.length>0)try{const d=await M({seasonIds:t.seasonIds,teamId:e,languageCode:t.languageCode,next:t.next},o);for(const f of r.players){const l=d[f.id];l&&(f.seasonStatistics=l)}}catch(d){console.error("[getFootballTeamSquad] Failed to fetch player statistics:",{error:d instanceof Error?d.message:String(d),stack:d instanceof Error?d.stack:void 0,teamId:e,seasonIds:t.seasonIds})}else console.warn("[getFootballTeamSquad] No seasonIds provided, skipping stats fetch");return r}function Le(e){return{id:String(e.id),name:e.name,slug:e.slug,type:e.type,region:e.region,gender:e.gender,country:{id:String(e.country.id),name:e.country.name,flag:e.country.url_flag,providerRef:i(e.country.uuid)},seasons:e.seasons.map(t=>({id:String(t.id),name:t.name,slug:t.slug,active:t.active,providerRef:i(t.uuid)})),assets:e.url_logo?{logo:e.url_logo}:void 0,providerRef:i(e.uuid)}}function De(e){const t=e.rounds.map(n=>({id:n.id,name:n.name,key:n.key,type:n.type,status:n.status,startDate:n.start_date,endDate:n.end_date,providerRef:i(n.uuid)}));return{id:e.stage.id,name:e.stage.name,slug:e.stage.slug,shortName:e.stage.short_name??void 0,type:e.stage.type,status:e.stage.status,coverage:e.stage.coverage,order:e.stage.order_in_season,startDate:e.stage.start_date,endDate:e.stage.end_date,rounds:t,providerRef:i(e.stage.uuid)}}function ke(e){const{season:t,stages:n}=e,{tournament:o}=t,a={id:o.id,name:o.name,slug:o.slug,type:o.type,region:o.region,gender:o.gender,country:{id:o.country.id,name:o.country.name,code:o.country.code??void 0,flag:o.country.assets?.flag?.url,providerRef:i(o.country.uuid)},assets:o.assets?.logo?.url?{logo:o.assets.logo.url}:void 0,providerRef:i(o.uuid)};return{id:t.id,name:t.name,slug:t.slug,active:t.status==="ACTIVE",status:t.status==="ACTIVE"?"ACTIVE":"INACTIVE",competition:a,stages:n.map(De),providerRef:i(t.uuid)}}async function Ne(e,t,n){const o=n||g(),{sportal365Sports:a}=o,s=await m.get({path:`/tournaments/${e}`,params:{language_code:t?.languageCode??a?.languageCode??"en"},headers:{"Accept-Language":t?.languageCode??a?.languageCode??"en"},next:t?.next,config:o});return Le(s)}async function Fe(e,t){const n=t||g(),{sportal365Sports:o}=n;if(!e?.seasonId&&!e?.competitionId)throw new Error("Either seasonId or competitionId must be provided");const a={language_code:e?.languageCode??o?.languageCode??"en"};e.seasonId?a.season_id=e.seasonId:e.competitionId&&(a.tournament_id=e.competitionId,e.status&&(a.status=e.status));const s=await m.get({path:"/v2/seasons/details",params:a,headers:{"Accept-Language":e?.languageCode??o?.languageCode??"en"},next:e?.next,config:n});return ke(s)}function E(e){return{championsleague:"championsLeague",europaleague:"europaLeague",conferenceleague:"conferenceLeague",relegation:"relegation",playoff:"playoff",promotion:"promotion"}[e.toLowerCase()]??e.toLowerCase().replace(/_/g,"")}function Pe(e){const t=e.toLowerCase();return t==="relegation"?"BOTTOM":t==="playoff"?"MIDDLE":"TOP"}function Me(e,t){if(!t||t.length===0)return;const n=t.map(a=>{const s=a.event,u=s.home_team.id===e,r=u?s.away_team:s.home_team,d=`${s.goal_home}-${s.goal_away}`;return{matchId:s.id.toString(),result:a.outcome,score:d,homeAway:u?"HOME":"AWAY",opponent:{id:r.id.toString(),name:r.name,logo:r.url_logo},date:new Date(s.start_time),competition:void 0}}),o=n.map(a=>a.result).join("");return{competitorId:e.toString(),results:n,formString:o}}function xe(e){return{key:E(e.code),name:e.name,position:Pe(e.type)}}function Ue(e){const t={played:e.played,won:e.wins,drawn:e.draws,lost:e.defeits,goalsFor:e.goals_for,goalsAgainst:e.goals_against,goalDifference:e.goals_for-e.goals_against,points:e.points},n=e.rules?.length>0?e.rules.map(a=>E(a.code)):void 0,o=Me(e.team.id,e.team.form??[]);return{rank:e.rank,competitor:{id:e.team.id.toString(),name:e.team.name,shortName:e.team.short_name??void 0,logo:e.team.url_logo},stats:t,form:o,rules:n}}function He(e){const t=e.map(Ue),n=new Map;for(const o of e)if(o.rules)for(const a of o.rules){const s=E(a.code);n.has(s)||n.set(s,xe(a))}return{entries:t,metadata:{legend:Array.from(n.values())}}}async function $e(e,t){const n=t||g(),{sportal365Sports:o}=n,a=e.expand?.join(","),s=await m.get({path:`/tournaments/seasons/stages/${e.stageId}/standing`,params:{expand:a,language_code:e.languageCode??o?.languageCode??"en"},headers:{"Accept-Language":e.languageCode??o?.languageCode??"en"},next:e.next,config:n});return!s||s.length===0?{entries:[],metadata:{legend:[]}}:He(s)}function x(e){return{id:e.id,name:e.name,code:e.country_code,assets:e.assets?.flag?{flag:e.assets.flag}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function Ye(e){return{id:e.id,name:e.name,type:e.type?.toUpperCase()||"LEAGUE",gender:e.gender?.toUpperCase(),country:e.country?x(e.country):void 0,assets:e.assets?.logo?{logo:e.assets.logo}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function Be(e){if(e.status){const s={notstarted:{code:"not_started",type:"NOT_STARTED",name:"Not Started"},live:{code:"live",type:"LIVE",name:"Live"},finished:{code:"finished",type:"FINISHED",name:"Finished"},postponed:{code:"postponed",type:"POSTPONED",name:"Postponed"},cancelled:{code:"cancelled",type:"CANCELLED",name:"Cancelled"},abandoned:{code:"abandoned",type:"ABANDONED",name:"Abandoned"}}[e.status.type];if(s)return s}let t="not_started",n="NOT_STARTED",o="Not Started";return e.finished_at?(t="finished",n="FINISHED",o="Finished"):e.started_at&&(t="live",n="LIVE",o="Live"),{code:t,name:o,type:n}}function Ge(e){return{kickoffTime:new Date(e.kickoff_at),currentMinute:e.minute??void 0,currentPeriod:void 0}}function N(e){return{id:e.id,name:e.name,shortName:e.short_name??void 0,fullName:e.full_name??void 0,threeLetterCode:e.code,type:e.national?"national":"club",gender:e.gender?.toUpperCase(),country:e.country?x(e.country):void 0,assets:e.assets?.logo?{logo:e.assets.logo}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function Ve(e){if(!e)return;const t=o=>o?{competitorOne:o.home_goals!==null?String(o.home_goals):"0",competitorTwo:o.away_goals!==null?String(o.away_goals):"0"}:void 0,n=t(e.ft_score);if(n)return{competitorOne:n.competitorOne,competitorTwo:n.competitorTwo,breakdown:{total:n,halfTime:t(e.ht_score),regularTime:t(e.ft_score),extraTime:t(e.aet_score),penaltyShootout:t(e.pen_score)}}}function b(e){return{id:e.id,status:Be(e),timing:Ge(e),competitorOne:N(e.home_team),competitorTwo:N(e.away_team),score:Ve(e.scores),competition:e.context?.competition?Ye(e.context.competition):void 0,lineupStatus:e.lineups_confirmed?"CONFIRMED":"NOT_AVAILABLE",updatedAt:e.updated_at?new Date(e.updated_at):void 0,isUndecided:e.undecided??void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function We(e){return b(e.data)}function Ke(e){return e.data.map(b)}function je(e){return e.map(b)}async function U(e,t,n){const o=await e.loyalty.getTemplateMatches(t,n?.groupId,n?.disableCache);return je(o)}async function qe(e,t,n,o){return(await U(e,t,o)).filter(s=>s.competitorOne.id===n||s.competitorTwo.id===n)}async function Xe(e,t,n){const o=await e.loyalty.getTemplateById(t,n?.disableCache);return{id:o.id,name:o.name,description:o.description,type:o.type,fromDate:o.fromDate,toDate:o.toDate,markets:o.markets||[],teamIds:o.teamIds||[],matchIds:o.matchIds||[],groups:(o.groups||[]).map(s=>({groupId:s.groupId,label:s.label,flags:s.flags||[],filters:{fromDate:s.filters?.fromDate||"",toDate:s.filters?.toDate||"",matchIds:s.filters?.matchIds||[]}})),gameIds:o.gameIds||[],gameTypes:o.gameTypes||[],competitionIds:o.competitionIds||[],excludedProfileIds:o.excludedProfileIds||[],rules:o.rules||"",labels:o.labels||{},customFields:o.customFields||{},branding:o.branding?JSON.parse(JSON.stringify(o.branding)):{},brandingId:null,flags:o.flags||[],images:{main:o.images?.main||null,cover:o.images?.cover||null,mobile:o.images?.mobile||null},status:o.status,automaticallyChangeStatus:o.automaticallyChangeStatus||!1,createdAt:o.createdAt,updatedAt:o.updatedAt,related:o.related||[],adContent:o.adContent||""}}function ze(e){return{"1x2":"1X2",12:"12",OVER_UNDER:"OVER_UNDER",DOUBLE_CHANCE:"DOUBLE_CHANCE",BOTH_TO_SCORE:"BOTH_TO_SCORE",DRAW_NO_BET:"DRAW_NO_BET",FIRST_TEAM_TO_SCORE:"FIRST_TEAM_TO_SCORE",CORRECT_SCORE:"CORRECT_SCORE",FIRST_HALF_GOALS:"FIRST_HALF_GOALS",FIRST_PLAYER_TO_SCORE:"FIRST_PLAYER_TO_SCORE",PLAYER_TO_SCORE_DURING_GAME:"PLAYER_TO_SCORE_DURING_GAME",PLAYER_TO_RECEIVE_CARD:"PLAYER_TO_RECEIVE_CARD",FIRST_HALF_AND_FINAL_RESULT:"FIRST_HALF_AND_FINAL_RESULT"}[e]||e.toUpperCase()}function Je(e,t){const n=new Map;return e.forEach((o,a)=>{if(!o||o.length===0)return;const u=(t?o.filter(r=>r.bookmaker&&t.includes(r.bookmaker.id)):o).filter(r=>r.bookmaker&&r.markets&&r.markets.length>0).map(r=>{const d=r.bookmaker,f=d.assets?.[0],l=d.branding?.backgroundColor||f?.backgroundColor,h=d.branding?.textColor||(Qe(l)?"#FFFFFF":"#000000"),v=f?.transparentBackgroundUrl||f?.logo,S=d.eventUrls?.find(_=>_.appType==="desktop")?.url||d.links?.find(_=>_.appType==="desktop")?.homepageUrl||d.url||"";return{operator:{id:d.id,name:d.name,url:S,branding:{backgroundColor:l,textColor:h,logo:v}},type:r.type,markets:r.markets.map(_=>({type:{id:_.type.id,code:_.type.code,name:_.type.name},period:{id:_.scope.id,type:_.scope.type,name:_.scope.name},selections:_.selections.map(y=>{const H=y.urls?.find($=>$.appType==="desktop")?.url;let C="NONE";return y.movement==="UP"?C="UP":y.movement==="DOWN"&&(C="DOWN"),{id:y.id,name:y.name,code:y.code,value:y.value,odds:y.odds,oddsOld:y.oddsOld,movement:C,url:H}})}))}});n.set(a,u)}),n}function Qe(e){if(!e)return!0;const t=e.replace("#",""),n=parseInt(t.substring(0,2),16),o=parseInt(t.substring(2,4),16),a=parseInt(t.substring(4,6),16);return(.2126*n+.7152*o+.0722*a)/255<.5}async function Ze(e,t,n){if(!t||t.length===0)return new Map;const o={oddType:n?.oddType||"ALL",scopeType:n?.scopeType||"ORDINARY_TIME",oddFormat:n?.oddFormat||"DECIMAL"};n?.marketTypes&&n.marketTypes.length>0&&(o.marketTypes=n.marketTypes.map(s=>ze(s)));const a=await e.odds.getByMatchIds(t,o);return Je(a,n?.bookmakerIds)}exports.SPORTAL365_BASKETBALL_DOMAIN=V;exports.SPORTAL365_SPORTS_SEARCH_DOMAIN=j;exports.SPORTAL365_STANDINGS_DOMAIN=q;exports.SPORTAL365_STATISTICS_DOMAIN=K;exports.SPORTAL365_TENNIS_DOMAIN=W;exports.addProviderRef=J;exports.createHttpClient=F;exports.footballHttp=m;exports.getBatchMatchOdds=Ze;exports.getConfig=g;exports.getFootballCompetition=Ne;exports.getFootballLivescore=Te;exports.getFootballMatch=me;exports.getFootballMatchCommentary=he;exports.getFootballMatchEvents=pe;exports.getFootballMatchLineups=fe;exports.getFootballMatchOdds=_e;exports.getFootballMatchStatistics=ye;exports.getFootballMatches=ve;exports.getFootballPlayerSeasonStatistics=M;exports.getFootballSeasonDetails=Fe;exports.getFootballStandings=$e;exports.getFootballTeam=Oe;exports.getFootballTeamSquad=Re;exports.getLeaderboardMatches=U;exports.getLeaderboardTeamMatches=qe;exports.getLeaderboardTemplate=Xe;exports.getProviderRefId=z;exports.isConfigured=B;exports.setConfig=Y;exports.toProviderRefArray=i;exports.transformMatch=We;exports.transformMatches=Ke;exports.transformOdds=P;
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "description": "A TypeScript library for fetching and transforming sports data from multiple API providers. Returns clean, canonical types that are provider-agnostic.",
5
5
  "homepage": "https://fansunited.com/",
6
6
  "private": false,
7
- "version": "0.8.7",
7
+ "version": "0.9.0",
8
8
  "type": "module",
9
9
  "main": "./fansunited-data-layer.cjs",
10
10
  "module": "./fansunited-data-layer.js",
@@ -10,7 +10,7 @@ export type { FUSportsLineupMember, FUSportsCompetitorLineup, FUSportsMatchLineu
10
10
  export type { FUSportsMatchPeriod, FUSportsStatisticEntry, FUSportsCompetitorStatistics, FUSportsMatchStatistics, FUSportsPlayerStatistic, FUSportsPlayerSeasonStatistics, FUSportsTeamSeasonStatistics, } from "./statistics.types";
11
11
  export type { FUSportsBettingOperatorBranding, FUSportsBettingOperator, FUSportsOddSelection, FUSportsMarketPeriod, FUSportsMarketType, FUSportsOddMarket, FUSportsBettingOperatorOdds, FUSportsMatchOdds, FUSportsBatchMatchOdds, } from "./odds.types";
12
12
  export type { FUSportsCommentaryDetail, FUSportsCommentaryMeta, FUSportsCommentaryItem } from "./commentary.types";
13
- export type { FUSportsStandingEntry, FUSportsCompetitorForm, FUSportsStandingLegendItem, FUSportsStandingsMetadata, FUSportsStandings, } from "./standing.types";
13
+ export type { FUSportsStandingEntry, FUSportsCompetitorForm, FUSportsStandingLegendItem, FUSportsStandingsMetadata, FUSportsStandings, FUSportsStandingsTable, } from "./standing.types";
14
14
  export type { FUSportsSquadMember, FUSportsSquad } from "./squad.types";
15
15
  export type { FUSportsSearchResultBase, FUSportsTournamentSearchResult, FUSportsPlayerSearchResult, FUSportsTeamSearchResult, FUSportsPresidentSearchResult, FUSportsVenueSearchResult, FUSportsCoachSearchResult, FUSportsSearchResult, FUSportsSearchResults, } from "./search.types";
16
16
  export type { FUSportsTranslation, FUSportsDisplayAsset, FUSportsSportsSearchResultBase, FUSportsSportsSearchCountry, FUSportsTeamSportsSearchResult, FUSportsCitySportsSearchResult, FUSportsHorseSportsSearchResult, FUSportsPlayerSportsSearchResult, FUSportsCoachSportsSearchResult, FUSportsRefereeSportsSearchResult, FUSportsVenueSportsSearchResult, FUSportsTournamentSportsSearchResult, FUSportsMatchSportsSearchResult, FUSportsCountrySportsSearchResult, FUSportsSportsSearchResult, FUSportsSportsSearchResults, } from "./sports-search.types";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/types/canonical/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,YAAY,EACR,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,EACtB,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,wBAAwB,EACxB,aAAa,EACb,eAAe,EACf,UAAU,GACb,MAAM,cAAc,CAAC;AAGtB,YAAY,EACR,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,mBAAmB,GACtB,MAAM,eAAe,CAAC;AAGvB,YAAY,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAG3G,YAAY,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAG3G,YAAY,EACR,mBAAmB,EACnB,sBAAsB,EACtB,4BAA4B,EAC5B,uBAAuB,EACvB,uBAAuB,EACvB,8BAA8B,EAC9B,4BAA4B,GAC/B,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EACR,+BAA+B,EAC/B,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,2BAA2B,EAC3B,iBAAiB,EACjB,sBAAsB,GACzB,MAAM,cAAc,CAAC;AAGtB,YAAY,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAGnH,YAAY,EACR,qBAAqB,EACrB,sBAAsB,EACtB,0BAA0B,EAC1B,yBAAyB,EACzB,iBAAiB,GACpB,MAAM,kBAAkB,CAAC;AAG1B,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGxE,YAAY,EACR,wBAAwB,EACxB,8BAA8B,EAC9B,0BAA0B,EAC1B,wBAAwB,EACxB,6BAA6B,EAC7B,yBAAyB,EACzB,yBAAyB,EACzB,oBAAoB,EACpB,qBAAqB,GACxB,MAAM,gBAAgB,CAAC;AAGxB,YAAY,EACR,mBAAmB,EACnB,oBAAoB,EACpB,8BAA8B,EAC9B,2BAA2B,EAC3B,8BAA8B,EAC9B,8BAA8B,EAC9B,+BAA+B,EAC/B,gCAAgC,EAChC,+BAA+B,EAC/B,iCAAiC,EACjC,+BAA+B,EAC/B,oCAAoC,EACpC,+BAA+B,EAC/B,iCAAiC,EACjC,0BAA0B,EAC1B,2BAA2B,GAC9B,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/types/canonical/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,YAAY,EACR,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,EACtB,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,wBAAwB,EACxB,aAAa,EACb,eAAe,EACf,UAAU,GACb,MAAM,cAAc,CAAC;AAGtB,YAAY,EACR,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,mBAAmB,GACtB,MAAM,eAAe,CAAC;AAGvB,YAAY,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAG3G,YAAY,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAG3G,YAAY,EACR,mBAAmB,EACnB,sBAAsB,EACtB,4BAA4B,EAC5B,uBAAuB,EACvB,uBAAuB,EACvB,8BAA8B,EAC9B,4BAA4B,GAC/B,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EACR,+BAA+B,EAC/B,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,2BAA2B,EAC3B,iBAAiB,EACjB,sBAAsB,GACzB,MAAM,cAAc,CAAC;AAGtB,YAAY,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAGnH,YAAY,EACR,qBAAqB,EACrB,sBAAsB,EACtB,0BAA0B,EAC1B,yBAAyB,EACzB,iBAAiB,EACjB,sBAAsB,GACzB,MAAM,kBAAkB,CAAC;AAG1B,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGxE,YAAY,EACR,wBAAwB,EACxB,8BAA8B,EAC9B,0BAA0B,EAC1B,wBAAwB,EACxB,6BAA6B,EAC7B,yBAAyB,EACzB,yBAAyB,EACzB,oBAAoB,EACpB,qBAAqB,GACxB,MAAM,gBAAgB,CAAC;AAGxB,YAAY,EACR,mBAAmB,EACnB,oBAAoB,EACpB,8BAA8B,EAC9B,2BAA2B,EAC3B,8BAA8B,EAC9B,8BAA8B,EAC9B,+BAA+B,EAC/B,gCAAgC,EAChC,+BAA+B,EAC/B,iCAAiC,EACjC,+BAA+B,EAC/B,oCAAoC,EACpC,+BAA+B,EAC/B,iCAAiC,EACjC,0BAA0B,EAC1B,2BAA2B,GAC9B,MAAM,uBAAuB,CAAC"}
@@ -82,4 +82,29 @@ export interface FUSportsStandings {
82
82
  /** Table-level metadata including legend */
83
83
  metadata: FUSportsStandingsMetadata;
84
84
  }
85
+ /**
86
+ * A single standings table within a stage/group context.
87
+ * Used for multi-stage competitions (e.g., Bulgarian league with Regular Season + Playoffs)
88
+ * or multi-group competitions (e.g., World Cup with Group A, B, C, etc.)
89
+ */
90
+ export interface FUSportsStandingsTable {
91
+ /** Stage this table belongs to */
92
+ stage: {
93
+ id: string;
94
+ name: string;
95
+ };
96
+ /** Group within the stage (e.g., "Overall", "Group A") */
97
+ group: {
98
+ id: string;
99
+ name: string;
100
+ /** Group type (e.g., "OVERALL", "GROUP_A") */
101
+ type: string;
102
+ };
103
+ /** Whether this is live or final standings */
104
+ coverageType: "LIVE" | "FINISHED";
105
+ /** Ranking method (e.g., "POINTS", "PERCENTAGE") */
106
+ rankingType?: string;
107
+ /** The actual standings data */
108
+ standings: FUSportsStandings;
109
+ }
85
110
  //# sourceMappingURL=standing.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"standing.types.d.ts","sourceRoot":"","sources":["../../../src/lib/types/canonical/standing.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,KAAK,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAC3B,QAAQ,EAAE;YACN,EAAE,EAAE,MAAM,CAAC;YACX,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,CAAC,EAAE,MAAM,CAAC;SACjB,CAAC;QACF,IAAI,EAAE,IAAI,CAAC;QACX,WAAW,CAAC,EAAE;YACV,EAAE,EAAE,MAAM,CAAC;YACX,IAAI,EAAE,MAAM,CAAC;SAChB,CAAC;KACL,CAAC,CAAC;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE;QACR,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,KAAK,EAAE;QACH,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,MAAM,CAAC,EAAE,MAAM,CAAC;QAEhB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;KACrC,CAAC;IACF,kDAAkD;IAClD,IAAI,CAAC,EAAE,sBAAsB,CAAC;IAC9B,+EAA+E;IAC/E,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACvC,sEAAsE;IACtE,GAAG,EAAE,MAAM,CAAC;IACZ,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,gFAAgF;IAChF,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACtC,wCAAwC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACtC,qDAAqD;IACrD,MAAM,EAAE,0BAA0B,EAAE,CAAC;IACrC,yCAAyC;IACzC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,mCAAmC;IACnC,OAAO,EAAE,qBAAqB,EAAE,CAAC;IACjC,4CAA4C;IAC5C,QAAQ,EAAE,yBAAyB,CAAC;CACvC"}
1
+ {"version":3,"file":"standing.types.d.ts","sourceRoot":"","sources":["../../../src/lib/types/canonical/standing.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,KAAK,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAC3B,QAAQ,EAAE;YACN,EAAE,EAAE,MAAM,CAAC;YACX,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,CAAC,EAAE,MAAM,CAAC;SACjB,CAAC;QACF,IAAI,EAAE,IAAI,CAAC;QACX,WAAW,CAAC,EAAE;YACV,EAAE,EAAE,MAAM,CAAC;YACX,IAAI,EAAE,MAAM,CAAC;SAChB,CAAC;KACL,CAAC,CAAC;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE;QACR,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,KAAK,EAAE;QACH,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,MAAM,CAAC,EAAE,MAAM,CAAC;QAEhB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;KACrC,CAAC;IACF,kDAAkD;IAClD,IAAI,CAAC,EAAE,sBAAsB,CAAC;IAC9B,+EAA+E;IAC/E,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACvC,sEAAsE;IACtE,GAAG,EAAE,MAAM,CAAC;IACZ,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,gFAAgF;IAChF,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACtC,wCAAwC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACtC,qDAAqD;IACrD,MAAM,EAAE,0BAA0B,EAAE,CAAC;IACrC,yCAAyC;IACzC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,mCAAmC;IACnC,OAAO,EAAE,qBAAqB,EAAE,CAAC;IACjC,4CAA4C;IAC5C,QAAQ,EAAE,yBAAyB,CAAC;CACvC;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACnC,kCAAkC;IAClC,KAAK,EAAE;QACH,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,0DAA0D;IAC1D,KAAK,EAAE;QACH,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,8CAA8C;QAC9C,IAAI,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,8CAA8C;IAC9C,YAAY,EAAE,MAAM,GAAG,UAAU,CAAC;IAClC,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gCAAgC;IAChC,SAAS,EAAE,iBAAiB,CAAC;CAChC"}
@@ -1 +0,0 @@
1
- "use strict";const A="__FANSUNITED_DATA_LAYER_CONFIG__";function Y(e){globalThis[A]=e}function g(){const e=globalThis[A];if(!e)throw new Error("Data layer config not initialized. Call setConfig() in your root layout.");return e}function B(){return globalThis[A]!==void 0}function F(e){const t=e.replace(/\/$/,"");function n(a){const{sportal365Sports:s}=a;if(!s)throw new Error("Sportal365 Sports API configuration is missing");const u=`${s.username}:${s.password}`;return`Basic ${btoa(u)}`}function o(a){return`${t}${a}`}return{async get(a){const s=a.config||g(),{sportal365Sports:u}=s;if(!u)throw new Error("Sportal365 Sports API configuration is missing");const r=new URL(o(a.path));if(a.params)for(const[f,l]of Object.entries(a.params))l!==void 0&&(Array.isArray(l)?l.length>0&&r.searchParams.set(f,l.join(",")):r.searchParams.set(f,l));const d=await fetch(r.toString(),{method:"GET",headers:{Authorization:n(s),"Content-Type":"application/json","X-Project":u.projectId,...a.headers},signal:u.timeout?AbortSignal.timeout(u.timeout):void 0,...a.next&&{next:a.next}});if(!d.ok)throw new Error(`Sportal365 API error: ${d.status} ${d.statusText}`);return d.json()}}}const G="https://football.api.sportal365.com",V="https://basketball.api.sportal365.com",W="https://tennis.api.sportal365.com",K="https://sports-statistics.api.sportal365.com",j="https://sports-search.api.sportal365.com",m=F(G);function O(e){if(e)return{id:e.id,name:e.name,slug:e.slug,position:e.position,gender:e.gender,assets:e.assets?{photo:e.assets.thumb?.url,photoTransparent:e.assets.thumb_transparent_background?.url}:void 0}}const q={GOAL:"GOAL",PENALTY_GOAL:"PENALTY_GOAL",OWN_GOAL:"OWN_GOAL",DISALLOWED_GOAL:"DISALLOWED_GOAL",PENALTY_SHOOTOUT_SCORED:"PENALTY_SHOOTOUT_SCORED",PENALTY_SHOOTOUT_MISSED:"PENALTY_SHOOTOUT_MISSED",YELLOW_CARD:"YELLOW_CARD",RED_CARD:"RED_CARD",YELLOW_RED_CARD:"YELLOW_RED_CARD",SUBSTITUTION:"SUBSTITUTION",KICKOFF:"KICKOFF",HALFTIME:"HALFTIME",START_SECOND_HALF:"START_SECOND_HALF",FINISHED:"FINISHED",INJURY_TIME:"INJURY_TIME",PENALTY_AWARDED:"PENALTY_AWARDED",PENALTY_MISSED:"PENALTY_MISSED",PENALTY_SAVED:"PENALTY_SAVED"};function T(e){const t=q[e.type_code];return t?{id:e.id,type:t,competitorPosition:e.team_position==="HOME"?"ONE":"TWO",minute:e.minute,injuryMinute:e.injury_minute,primaryPlayer:O(e.primary_player),secondaryPlayer:O(e.secondary_player),score:e.score?{competitorOne:String(e.score.home),competitorTwo:String(e.score.away)}:void 0}:(console.warn(`Unknown event type: ${e.type_code}`),null)}function i(e,t="sportal365"){if(e)return[{provider:t,id:e}]}function X(e,t){return e?e.find(o=>o.provider===t)?.id:void 0}function z(e,t,n){const o=e??[],a=o.findIndex(s=>s.provider===t);if(a>=0){const s=[...o];return s[a]={provider:t,id:n},s}else return[...o,{provider:t,id:n}]}function J(e){const t=e.urls?.find(n=>n.app_type==="desktop")?.url;return{id:e.id,name:e.name,code:e.code,value:e.value??void 0,odds:e.odds,oddsOld:e.odds_old,movement:e.movement==="STABLE"?"NONE":e.movement,url:t}}function Q(e){return{type:{id:e.type.id,code:e.type.code,name:e.type.name},period:{id:e.scope.id,type:e.scope.type,name:e.scope.name},selections:e.selections.map(J)}}function Z(e){if(!e)return!0;const t=e.replace("#",""),n=parseInt(t.substring(0,2),16),o=parseInt(t.substring(2,4),16),a=parseInt(t.substring(4,6),16);return(.2126*n+.7152*o+.0722*a)/255<.5}function w(e){const t=e.bookmaker.assets?.[0],n=e.bookmaker.branding||t,o=e.bookmaker.branding?.background_color||t?.background_color,a=e.bookmaker.branding?.text_color||(Z(o)?"#FFFFFF":"#000000");return{operator:{id:e.bookmaker.id,name:e.bookmaker.name,url:e.bookmaker.url,branding:n?{backgroundColor:o,textColor:a,logo:t?.logo}:void 0},type:e.type,markets:e.markets.map(Q)}}function P(e){return e.map(w)}function ee(e){const t={finished_ap:"finished_after_penalties",finished_aet:"finished_after_extra_time",finished:"finished",not_started:"not_started",live:"live",interrupted:"interrupted",cancelled:"cancelled",postponed:"postponed",abandoned:"abandoned"};let n;return e.code&&t[e.code]?n=t[e.code]:n={FINISHED:"finished",NOT_STARTED:"not_started",LIVE:"live",INTERRUPTED:"interrupted",CANCELLED:"cancelled",POSTPONED:"postponed",UNKNOWN:"not_started",ABANDONED:"abandoned"}[e.type]??"not_started",{code:n,name:e.name,shortName:e.short_name,type:e.type}}function R(e){return{id:e.id,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code,slug:e.slug,type:e.type==="national"?"national":"club",gender:e.gender,assets:e.assets?{logo:e.assets.logo?.url,homeKit:e.assets.home_kit?.url,awayKit:e.assets.away_kit?.url,squadImage:e.assets.squad_image?.url}:void 0,metadata:e.shirt_color?{shirtColors:[{type:"home",colorCode:e.shirt_color}]}:void 0,providerRef:i(e.uuid)}}function te(e){return{kickoffTime:new Date(e.kickoff_time),currentMinute:e.minute?.regular_time,phaseStartedAt:e.phase_started_at?new Date(e.phase_started_at):void 0,finishedAt:e.finished_at?new Date(e.finished_at):void 0,firstHalfStartedAt:e.first_half_started_at?new Date(e.first_half_started_at):void 0,secondHalfStartedAt:e.second_half_started_at?new Date(e.second_half_started_at):void 0,extraTimeFirstHalfStartedAt:e.extra_time_first_half_started_at?new Date(e.extra_time_first_half_started_at):void 0,extraTimeSecondHalfStartedAt:e.extra_time_second_half_started_at?new Date(e.extra_time_second_half_started_at):void 0}}function oe(e){if(!e)return;const t=o=>o?{competitorOne:String(o.home),competitorTwo:String(o.away)}:void 0,n=e.after_extra_time??e.regular_time;return{competitorOne:n?.home!=null?String(n.home):null,competitorTwo:n?.away!=null?String(n.away):null,breakdown:{total:t(e.total),halfTime:t(e.half_time),regularTime:t(e.regular_time),extraTime:t(e.extra_time),penaltyShootout:t(e.penalty_shootout),aggregate:t(e.aggregate)}}}function ne(e){if(e)return{id:e.id,name:e.name,slug:e.slug,assets:e.assets?.image?.url?{image:e.assets.image.url}:void 0,providerRef:i(e.uuid)}}function ae(e){if(e?.length)return e.map(t=>({id:t.id,name:t.name,slug:t.slug,role:t.role??"REFEREE",gender:t.gender}))}function se(e){if(!e.season?.tournament)return;const{tournament:t,...n}=e.season;return{id:t.id,name:t.name,slug:t.slug,type:t.type,region:t.region,country:t.country?{id:t.country.id,name:t.country.name,code:t.country.code??void 0,flag:t.country.assets?.flag?.url,providerRef:i(t.country.uuid)}:void 0,season:{id:n.id,name:n.name,status:n.status},stage:e.stage?{id:e.stage.id,name:e.stage.name,type:e.stage.type}:void 0,assets:t.assets?.logo?.url?{logo:t.assets.logo.url}:void 0,providerRef:i(t.uuid)}}function ie(e){if(!e.winner?.match?.id)return;const t={"Regular Time":"REGULAR_TIME","Extra Time":"EXTRA_TIME",Penalties:"PENALTIES"};return{competitorId:e.winner.match.id,reason:e.winner.match.reason?.name?t[e.winner.match.reason.name]:void 0,aggregate:!!e.winner.aggregate}}function E(e){return{id:e.id,slug:e.slug,status:ee(e.status),timing:te(e),competitorOne:R(e.home_team),competitorTwo:R(e.away_team),competition:se(e),round:e.round?{id:e.round.id??e.round.key,key:e.round.key,name:e.round.name,type:e.round.type??"REGULAR",providerRef:i(e.round.uuid)}:void 0,group:e.group?{id:e.group.id,name:e.group.name,providerRef:i(e.group.uuid)}:void 0,venue:ne(e.venue),officials:ae(e.referees),spectators:e.spectators??void 0,score:oe(e.score),mainEvents:e.main_events?.map(T).filter(t=>t!==null),penaltyShootoutEvents:e.penalty_shootout_events?.map(T).filter(t=>t!==null),winner:ie(e),coverage:e.coverage==="NOT_LIVE"?"UNKNOWN":e.coverage,lineupStatus:e.lineup_status==="UNCONFIRMED"?"EXPECTED":e.lineup_status,providerRef:i(e.uuid)}}function re(e){const t=e.player;return{id:t.id,name:t.name,slug:t.slug,position:t.position,shirtNumber:e.shirt_number,positionX:e.position_x??void 0,positionY:e.position_y??void 0,country:t.country?{id:t.country.id,name:t.country.name,code:t.country.code,providerRef:i(t.country.uuid)}:void 0,birthdate:t.birthdate,profile:t.profile?{height:t.profile.height,weight:t.profile.weight}:void 0,assets:t.assets?{photo:t.assets.thumb?.url,photoTransparent:t.assets.thumb_transparent_background?.url}:void 0,events:e.events?.map(T).filter(n=>n!==null),providerRef:i(t.uuid)}}function L(e){const t=[],n=[];for(const o of e.players){const a=re(o);o.type.category==="start"?t.push(a):o.type.category==="sub"&&n.push(a)}return{competitorId:e.team_id,formation:e.formation,coach:e.coach?{id:e.coach.id,name:e.coach.name,slug:e.coach.slug,country:e.coach.country?{id:e.coach.country.id,name:e.coach.country.name,code:e.coach.country.code,providerRef:i(e.coach.country.uuid)}:void 0,birthdate:e.coach.birthdate,providerRef:i(e.coach.uuid)}:void 0,starters:t,substitutes:n}}function de(e){return{matchId:e.match_id,confirmed:e.status==="CONFIRMED",competitorOne:L(e.home_team),competitorTwo:L(e.away_team)}}function p(e,t,n,o){return t==null?null:{key:e,value:String(t),label:n,unit:o}}function k(e,t){const n=(t.shots_on??0)+(t.shots_off??0)+(t.shots_blocked??0),o=[p("possession",t.possession,"Possession","%"),p("shots_total",n,"Shots"),p("shots_on_target",t.shots_on,"Shots on Target"),p("shots_off_target",t.shots_off,"Shots off Target"),p("shots_blocked",t.shots_blocked,"Shots Blocked"),p("corners",t.corners,"Corner Kicks"),p("goal_kicks",t.goal_kicks,"Goal Kicks"),p("throw_ins",t.throw_in,"Throw Ins"),p("offsides",t.offside,"Offsides"),p("fouls",t.fouls_committed,"Fouls"),p("yellow_cards",t.yellow_cards,"Yellow Cards"),p("passes",t.pass,"Passes"),p("crosses",t.crosses,"Crosses")];return{competitorId:e,statistics:o.filter(a=>a!==null)}}function ce(e){const t=e.find(o=>o.home_team),n=e.find(o=>!o.home_team);if(!t||!n)throw new Error("Missing competitor statistics");return{competitorOne:k(String(t.team.id),t.statistics),competitorTwo:k(String(n.team.id),n.statistics)}}function ue(e,t){return{matchId:e,operators:P(t)}}function D(e){if(e==null||e==="")return;const t=typeof e=="number"?e:parseInt(e,10);return isNaN(t)?void 0:t}function le(e){return{externalId:e.external_id,minute:D(e.elapsed),addedTime:D(e.elapsed_plus),text:e.auto_text,details:e.details,meta:{type:e.type,commentaryType:e.commentary_type,subtype1:e.subtype_1,subtype2:e.subtype_2,timestamp:e.incident_timestamp}}}async function ge(e,t,n){const o=n||g(),{sportal365Sports:a}=o,s=await m.get({path:`/v2/matches/${e}`,params:{language_code:t?.languageCode??a?.languageCode??"en",odd_client:t?.oddClient,odd_type:t?.oddType,scope_type:t?.scopeType,odd_format:t?.oddFormat,market_types:t?.marketTypes,bookmaker_ids:t?.bookmakerIds,optional_data:t?.optionalData},headers:{"Accept-Language":t?.languageCode??a?.languageCode??"en"},next:t?.next,config:o});return E(s)}async function me(e,t,n){const o=n||g(),{sportal365Sports:a}=o;return(await m.get({path:`/v2/matches/${e}/events`,params:{language_code:t?.languageCode??a?.languageCode??"en"},headers:{"Accept-Language":t?.languageCode??a?.languageCode??"en"},next:t?.next,config:o})).events.map(T).filter(u=>u!==null)}async function pe(e,t,n){const o=n||g(),{sportal365Sports:a}=o,s=await m.get({path:`/v2/matches/${e}/lineups`,params:{language_code:t?.languageCode??a?.languageCode??"en"},headers:{"Accept-Language":t?.languageCode??a?.languageCode??"en"},next:t?.next,config:o});return de(s)}async function fe(e,t,n){const o=n||g(),{sportal365Sports:a}=o,s=await m.get({path:`/v2/matches/${e}`,params:{language_code:t?.languageCode??a?.languageCode??"en",odd_client:t?.oddClient??a?.oddClient,odd_type:t?.oddType,scope_type:t?.scopeType??"ALL",odd_format:t?.oddFormat??"DECIMAL",market_types:t?.marketTypes,bookmaker_ids:t?.bookmakerIds},headers:{"Accept-Language":t?.languageCode??a?.languageCode??"en"},next:t?.next,config:o});return ue(e,s.odds??[])}async function _e(e,t,n){const o=n||g(),{sportal365Sports:a}=o,s=await m.get({path:`/events/${e}/teamstats`,params:{language_code:t?.languageCode??a?.languageCode??"en"},headers:{"Accept-Language":t?.languageCode??a?.languageCode??"en"},next:t?.next,config:o});return ce(s)}async function ye(e,t,n){const o=n||g(),{sportal365Sports:a}=o;return(await m.get({path:`/matches/${e}/commentary`,params:{language_code:t?.languageCode??a?.languageCode??"en"},headers:{"Accept-Language":t?.languageCode??a?.languageCode??"en"},next:t?.next,config:o})).map(le)}async function he(e,t){const n=t||g(),{sportal365Sports:o}=n;return(await m.get({path:"/v2/matches",params:{language_code:e.languageCode??o?.languageCode??"en",limit:e.limit.toString(),offset:e.offset.toString(),tournament_ids:e.tournamentIds,season_ids:e.seasonIds,stage_ids:e.stageIds,group_ids:e.groupIds,round_ids:e.roundIds,round_filter:e.roundFilter,from_kickoff_time:e.fromKickoffTime,to_kickoff_time:e.toKickoffTime,team_ids:e.teamIds,team_ids_operator:e.teamIdsOperator,referee_id:e.refereeId,venue_id:e.venueId,player_id:e.playerId,status_types:e.statusTypes,status_codes:e.statusCodes,odd_client:e.oddClient??o?.oddClient,odd_type:e.oddType,scope_type:e.scopeType,odd_format:e.oddFormat,market_types:e.marketTypes,bookmaker_ids:e.bookmakerIds,sort_direction:e.sortDirection,optional_data:e.optionalData},headers:{"Accept-Language":e.languageCode??o?.languageCode??"en"},next:e.next,config:n})).matches.map(E)}async function ve(e,t){const n=t||g(),{sportal365Sports:o}=n;return(await m.get({path:"/v2/matches/livescore",params:{match_ids:e?.matchIds,date:e?.date,utc_offset:e?.utcOffset?.toString(),tournament_group:e?.tournamentGroup,status_types:e?.statusTypes,selection_filter:e?.selectionFilter,language_code:e?.languageCode??o?.languageCode??"en",odd_client:e?.oddClient??o?.oddClient,odd_type:e?.oddType,scope_type:e?.scopeType,odd_format:e?.oddFormat,market_types:e?.marketTypes,optional_data:e?.optionalData},headers:{"Accept-Language":e?.languageCode??o?.languageCode??"en"},next:e?.next,config:n})).matches.map(E)}function Te(e){return{id:e.id,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code,slug:e.slug,type:e.type==="placeholder"||e.type==="club"?"club":"national",gender:e.gender,country:e.country?{id:e.country.id,name:e.country.name,code:e.country.code??void 0,flag:e.country.assets?.flag?.url,providerRef:i(e.country.uuid)}:void 0,venue:e.venue?{id:e.venue.id,name:e.venue.name,slug:e.venue.slug,city:e.venue.city?{id:e.venue.city.id,name:e.venue.city.name,country:e.venue.city.country?{id:e.venue.city.country.id,name:e.venue.city.country.name,code:e.venue.city.country.code??void 0,flag:e.venue.city.country.assets?.flag?.url,providerRef:i(e.venue.city.country.uuid)}:void 0,providerRef:i(e.venue.city.uuid??void 0)}:void 0,country:e.venue.country?{id:e.venue.country.id,name:e.venue.country.name,code:e.venue.country.code??void 0,flag:e.venue.country.assets?.flag?.url,providerRef:i(e.venue.country.uuid)}:void 0,profile:e.venue.profile?{latitude:e.venue.profile.lat,longitude:e.venue.profile.lng,capacity:e.venue.profile.capacity}:void 0,assets:e.venue.assets?.image?.url?{image:e.venue.assets.image.url}:void 0,providerRef:i(e.venue.uuid)}:void 0,coach:e.coach?{id:e.coach.id,name:e.coach.name,slug:e.coach.slug,country:{id:e.coach.country.id,name:e.coach.country.name,code:e.coach.country.code??void 0,flag:e.coach.country.assets?.flag?.url,providerRef:i(e.coach.country.uuid)},birthdate:e.coach.birthdate,providerRef:i(e.coach.uuid)}:void 0,founded:e.founded,assets:e.assets?{logo:e.assets.logo?.url,homeKit:e.assets.home_kit?.url,awayKit:e.assets.away_kit?.url,squadImage:e.assets.squad_image?.url}:void 0,metadata:{shirtColors:e.shirt_colors?.map(t=>({type:t.type,colorCode:t.color_code})),socials:e.social?{website:e.social.web,x:e.social.twitter_id,facebook:e.social.facebook_id,instagram:e.social.instagram_id,wikipedia:e.social.wikipedia_id}:void 0},activeSeasons:e.active_seasons?.map(t=>({id:t.id,name:t.name,slug:t.slug,active:t.status==="ACTIVE",providerRef:i(t.uuid)})),currentSeason:e.current_season?{id:e.current_season.id,name:e.current_season.name,slug:e.current_season.slug,active:e.current_season.status==="ACTIVE",providerRef:i(e.current_season.uuid)}:void 0,form:e.form&&e.form.length>0?{competitorId:e.id,results:e.form.map(t=>{const o=t.participants[0].id===e.uuid?t.participants[1]:t.participants[0],a=t.result[0]?.results.find(r=>r.position==="1")?.value,s=t.result[0]?.results.find(r=>r.position==="2")?.value,u=t.outcome==="win"?"W":t.outcome==="draw"?"D":"L";return{matchId:t.id,result:u,score:a&&s?`${a}-${s}`:void 0,opponent:{id:o.id,name:o.name,logo:o.display_asset?.url},date:new Date(t.start_time),competition:t.competition?{id:t.competition.id,name:t.competition.name}:void 0}}),formString:e.form.map(t=>t.outcome==="win"?"W":t.outcome==="draw"?"D":"L").join("")}:void 0,providerRef:i(e.uuid)}}function Se(e){const t=e.player;return{id:t.id,name:t.name,slug:t.slug,position:t.position,shirtNumber:e.shirt_number,country:t.country?{id:t.country.id,name:t.country.name,code:t.country.code??void 0,flag:t.country.assets?.flag?.url,providerRef:i(t.country.uuid)}:void 0,gender:t.gender,birthdate:t.birthdate,profile:{height:t.profile?.height??void 0,weight:t.profile?.weight??void 0},assets:t.assets?{photo:t.assets.thumb?.url,photoTransparent:t.assets.thumb_transparent_background?.url}:void 0,status:e.status,contractType:e.contract_type,contractUntil:e.contract_until??void 0,joinedDate:e.start_date??void 0,providerRef:i(t.id)}}function Ce(e){return{id:e.id,name:e.name,slug:e.slug,country:e.country?{id:e.country.id,name:e.country.name,code:e.country.code??void 0,flag:e.country.assets?.flag?.url,providerRef:i(e.country.uuid)}:void 0,birthdate:e.birthdate,providerRef:i(e.uuid)}}function Ae(e){return{teamId:e.team.id,teamName:e.team.name,coach:e.coach?Ce(e.coach):void 0,players:e.players.map(Se)}}function Ee(e){const t=parseInt(e,10);return isNaN(t)?void 0:t}function c(e,t){const n=e.find(o=>o.name===t);return n?Ee(n.value):void 0}function be(e,t){const n=e.statistics;return{playerId:e.player.id,seasonId:e.season.id,teamId:t,appearances:c(n,"played"),started:c(n,"started"),substituteIn:c(n,"substitute_in"),substituteOut:c(n,"substitute_out"),minutes:c(n,"minutes"),minutesSubstitute:c(n,"minutes_substitute"),goals:c(n,"goals"),goalsSubstitute:c(n,"goals_substitute"),penaltyGoals:c(n,"penalty_goals"),ownGoals:c(n,"own_goals"),assists:c(n,"assists"),shots:c(n,"shots"),shotsOnTarget:c(n,"shots_on_target"),yellowCards:c(n,"yellow_cards"),redCards:c(n,"red_cards"),foulsCommitted:c(n,"fouls_committed"),penaltiesCommitted:c(n,"penalties_committed"),penaltiesMissed:c(n,"penalties_missed"),cleansheets:c(n,"cleansheets"),saves:c(n,"saves"),conceded:c(n,"conceded"),caughtBall:c(n,"caught_ball"),penaltiesReceived:c(n,"penalties_received"),offsides:c(n,"offsides"),rawStatistics:n.map(o=>({name:o.name,value:o.value}))}}async function M(e,t){const n=t||g(),{sportal365Sports:o}=n,{seasonIds:a,teamId:s,languageCode:u,next:r}=e,d=r??{revalidate:0},f={season_ids:a.join(","),team_id:s,language_code:u??o?.languageCode??"en"},l=await m.get({path:"/v2/statistics/players/season",params:f,headers:{"Accept-Language":u??o?.languageCode??"en"},next:d,config:n});if(!l.statistics)return console.error("[getFootballPlayerSeasonStatistics] Invalid API response - missing statistics array:",{teamId:s,seasonIds:a,response:l}),{};if(l.statistics.length===0)throw console.warn("[getFootballPlayerSeasonStatistics] API returned empty statistics array:",{teamId:s,seasonIds:a,hint:"This could be due to: wrong credentials, wrong project header, no data for this team/season, or API issue"}),new Error(`No player statistics found for team ${s} in seasons ${a.join(", ")}. This could be due to: wrong credentials, wrong X-Project header, or no data available for this team/season.`);const h={};for(const v of l.statistics){const S=v.player.id;h[S]=be(v,s)}return h}async function Ie(e,t,n){const o=n||g(),{sportal365Sports:a}=o,s=await m.get({path:`/v2/teams/${e}`,params:{language_code:t?.languageCode??a?.languageCode??"en",optional_data:"form"},headers:{"Accept-Language":t?.languageCode??a?.languageCode??"en"},next:t?.next,config:o});return Te(s)}async function Oe(e,t,n){const o=n||g(),{sportal365Sports:a}=o,s=t?.seasonIds&&t.seasonIds.length>0?{revalidate:0}:t?.next,u=await m.get({path:`/v2/teams/${e}/squad`,params:{language_code:t?.languageCode??a?.languageCode??"en",memberStatus:t?.memberStatus??"ACTIVE"},headers:{"Accept-Language":t?.languageCode??a?.languageCode??"en"},next:s,config:o}),r=Ae(u);if(t?.seasonIds&&t.seasonIds.length>0)try{const d=await M({seasonIds:t.seasonIds,teamId:e,languageCode:t.languageCode,next:t.next},o);for(const f of r.players){const l=d[f.id];l&&(f.seasonStatistics=l)}}catch(d){console.error("[getFootballTeamSquad] Failed to fetch player statistics:",{error:d instanceof Error?d.message:String(d),stack:d instanceof Error?d.stack:void 0,teamId:e,seasonIds:t.seasonIds})}else console.warn("[getFootballTeamSquad] No seasonIds provided, skipping stats fetch");return r}function Re(e){return{id:String(e.id),name:e.name,slug:e.slug,type:e.type,region:e.region,gender:e.gender,country:{id:String(e.country.id),name:e.country.name,flag:e.country.url_flag,providerRef:i(e.country.uuid)},seasons:e.seasons.map(t=>({id:String(t.id),name:t.name,slug:t.slug,active:t.active,providerRef:i(t.uuid)})),assets:e.url_logo?{logo:e.url_logo}:void 0,providerRef:i(e.uuid)}}function Le(e){const t=e.rounds.map(n=>({id:n.id,name:n.name,key:n.key,type:n.type,status:n.status,startDate:n.start_date,endDate:n.end_date,providerRef:i(n.uuid)}));return{id:e.stage.id,name:e.stage.name,slug:e.stage.slug,shortName:e.stage.short_name??void 0,type:e.stage.type,status:e.stage.status,coverage:e.stage.coverage,order:e.stage.order_in_season,startDate:e.stage.start_date,endDate:e.stage.end_date,rounds:t,providerRef:i(e.stage.uuid)}}function ke(e){const{season:t,stages:n}=e,{tournament:o}=t,a={id:o.id,name:o.name,slug:o.slug,type:o.type,region:o.region,gender:o.gender,country:{id:o.country.id,name:o.country.name,code:o.country.code??void 0,flag:o.country.assets?.flag?.url,providerRef:i(o.country.uuid)},assets:o.assets?.logo?.url?{logo:o.assets.logo.url}:void 0,providerRef:i(o.uuid)};return{id:t.id,name:t.name,slug:t.slug,active:t.status==="ACTIVE",status:t.status==="ACTIVE"?"ACTIVE":"INACTIVE",competition:a,stages:n.map(Le),providerRef:i(t.uuid)}}async function De(e,t,n){const o=n||g(),{sportal365Sports:a}=o,s=await m.get({path:`/tournaments/${e}`,params:{language_code:t?.languageCode??a?.languageCode??"en"},headers:{"Accept-Language":t?.languageCode??a?.languageCode??"en"},next:t?.next,config:o});return Re(s)}async function Ne(e,t){const n=t||g(),{sportal365Sports:o}=n;if(!e?.seasonId&&!e?.competitionId)throw new Error("Either seasonId or competitionId must be provided");const a={language_code:e?.languageCode??o?.languageCode??"en"};e.seasonId?a.season_id=e.seasonId:e.competitionId&&(a.tournament_id=e.competitionId,e.status&&(a.status=e.status));const s=await m.get({path:"/v2/seasons/details",params:a,headers:{"Accept-Language":e?.languageCode??o?.languageCode??"en"},next:e?.next,config:n});return ke(s)}function b(e){return{championsleague:"championsLeague",europaleague:"europaLeague",conferenceleague:"conferenceLeague",relegation:"relegation",playoff:"playoff",promotion:"promotion"}[e.toLowerCase()]??e.toLowerCase().replace(/_/g,"")}function Fe(e){const t=e.toLowerCase();return t==="relegation"?"BOTTOM":t==="playoff"?"MIDDLE":"TOP"}function Pe(e,t){if(!t||t.length===0)return;const n=t.map(a=>{const s=a.event,u=s.home_team.id===e,r=u?s.away_team:s.home_team,d=`${s.goal_home}-${s.goal_away}`;return{matchId:s.id.toString(),result:a.outcome,score:d,homeAway:u?"HOME":"AWAY",opponent:{id:r.id.toString(),name:r.name,logo:r.url_logo},date:new Date(s.start_time),competition:void 0}}),o=n.map(a=>a.result).join("");return{competitorId:e.toString(),results:n,formString:o}}function Me(e){return{key:b(e.code),name:e.name,position:Fe(e.type)}}function xe(e){const t={played:e.played,won:e.wins,drawn:e.draws,lost:e.defeits,goalsFor:e.goals_for,goalsAgainst:e.goals_against,goalDifference:e.goals_for-e.goals_against,points:e.points},n=e.rules?.length>0?e.rules.map(a=>b(a.code)):void 0,o=Pe(e.team.id,e.team.form??[]);return{rank:e.rank,competitor:{id:e.team.id.toString(),name:e.team.name,shortName:e.team.short_name??void 0,logo:e.team.url_logo},stats:t,form:o,rules:n}}function Ue(e){const t=e.map(xe),n=new Map;for(const o of e)if(o.rules)for(const a of o.rules){const s=b(a.code);n.has(s)||n.set(s,Me(a))}return{entries:t,metadata:{legend:Array.from(n.values())}}}async function He(e,t){const n=t||g(),{sportal365Sports:o}=n,a=e.expand?.join(","),s=await m.get({path:`/tournaments/seasons/stages/${e.stageId}/standing`,params:{expand:a,language_code:e.languageCode??o?.languageCode??"en"},headers:{"Accept-Language":e.languageCode??o?.languageCode??"en"},next:e.next,config:n});return!s||s.length===0?{entries:[],metadata:{legend:[]}}:Ue(s)}function x(e){return{id:e.id,name:e.name,code:e.country_code,assets:e.assets?.flag?{flag:e.assets.flag}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function $e(e){return{id:e.id,name:e.name,type:e.type?.toUpperCase()||"LEAGUE",gender:e.gender?.toUpperCase(),country:e.country?x(e.country):void 0,assets:e.assets?.logo?{logo:e.assets.logo}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function Ye(e){if(e.status){const s={notstarted:{code:"not_started",type:"NOT_STARTED",name:"Not Started"},live:{code:"live",type:"LIVE",name:"Live"},finished:{code:"finished",type:"FINISHED",name:"Finished"},postponed:{code:"postponed",type:"POSTPONED",name:"Postponed"},cancelled:{code:"cancelled",type:"CANCELLED",name:"Cancelled"},abandoned:{code:"abandoned",type:"ABANDONED",name:"Abandoned"}}[e.status.type];if(s)return s}let t="not_started",n="NOT_STARTED",o="Not Started";return e.finished_at?(t="finished",n="FINISHED",o="Finished"):e.started_at&&(t="live",n="LIVE",o="Live"),{code:t,name:o,type:n}}function Be(e){return{kickoffTime:new Date(e.kickoff_at),currentMinute:e.minute??void 0,currentPeriod:void 0}}function N(e){return{id:e.id,name:e.name,shortName:e.short_name??void 0,fullName:e.full_name??void 0,threeLetterCode:e.code,type:e.national?"national":"club",gender:e.gender?.toUpperCase(),country:e.country?x(e.country):void 0,assets:e.assets?.logo?{logo:e.assets.logo}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function Ge(e){if(!e)return;const t=o=>o?{competitorOne:o.home_goals!==null?String(o.home_goals):"0",competitorTwo:o.away_goals!==null?String(o.away_goals):"0"}:void 0,n=t(e.ft_score);if(n)return{competitorOne:n.competitorOne,competitorTwo:n.competitorTwo,breakdown:{total:n,halfTime:t(e.ht_score),regularTime:t(e.ft_score),extraTime:t(e.aet_score),penaltyShootout:t(e.pen_score)}}}function I(e){return{id:e.id,status:Ye(e),timing:Be(e),competitorOne:N(e.home_team),competitorTwo:N(e.away_team),score:Ge(e.scores),competition:e.context?.competition?$e(e.context.competition):void 0,lineupStatus:e.lineups_confirmed?"CONFIRMED":"NOT_AVAILABLE",updatedAt:e.updated_at?new Date(e.updated_at):void 0,isUndecided:e.undecided??void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function Ve(e){return I(e.data)}function We(e){return e.data.map(I)}function Ke(e){return e.map(I)}async function U(e,t,n){const o=await e.loyalty.getTemplateMatches(t,n?.groupId,n?.disableCache);return Ke(o)}async function je(e,t,n,o){return(await U(e,t,o)).filter(s=>s.competitorOne.id===n||s.competitorTwo.id===n)}async function qe(e,t,n){const o=await e.loyalty.getTemplateById(t,n?.disableCache);return{id:o.id,name:o.name,description:o.description,type:o.type,fromDate:o.fromDate,toDate:o.toDate,markets:o.markets||[],teamIds:o.teamIds||[],matchIds:o.matchIds||[],groups:(o.groups||[]).map(s=>({groupId:s.groupId,label:s.label,flags:s.flags||[],filters:{fromDate:s.filters?.fromDate||"",toDate:s.filters?.toDate||"",matchIds:s.filters?.matchIds||[]}})),gameIds:o.gameIds||[],gameTypes:o.gameTypes||[],competitionIds:o.competitionIds||[],excludedProfileIds:o.excludedProfileIds||[],rules:o.rules||"",labels:o.labels||{},customFields:o.customFields||{},branding:o.branding?JSON.parse(JSON.stringify(o.branding)):{},brandingId:null,flags:o.flags||[],images:{main:o.images?.main||null,cover:o.images?.cover||null,mobile:o.images?.mobile||null},status:o.status,automaticallyChangeStatus:o.automaticallyChangeStatus||!1,createdAt:o.createdAt,updatedAt:o.updatedAt,related:o.related||[],adContent:o.adContent||""}}function Xe(e){return{"1x2":"1X2",12:"12",OVER_UNDER:"OVER_UNDER",DOUBLE_CHANCE:"DOUBLE_CHANCE",BOTH_TO_SCORE:"BOTH_TO_SCORE",DRAW_NO_BET:"DRAW_NO_BET",FIRST_TEAM_TO_SCORE:"FIRST_TEAM_TO_SCORE",CORRECT_SCORE:"CORRECT_SCORE",FIRST_HALF_GOALS:"FIRST_HALF_GOALS",FIRST_PLAYER_TO_SCORE:"FIRST_PLAYER_TO_SCORE",PLAYER_TO_SCORE_DURING_GAME:"PLAYER_TO_SCORE_DURING_GAME",PLAYER_TO_RECEIVE_CARD:"PLAYER_TO_RECEIVE_CARD",FIRST_HALF_AND_FINAL_RESULT:"FIRST_HALF_AND_FINAL_RESULT"}[e]||e.toUpperCase()}function ze(e,t){const n=new Map;return e.forEach((o,a)=>{if(!o||o.length===0)return;const u=(t?o.filter(r=>r.bookmaker&&t.includes(r.bookmaker.id)):o).filter(r=>r.bookmaker&&r.markets&&r.markets.length>0).map(r=>{const d=r.bookmaker,f=d.assets?.[0],l=d.branding?.backgroundColor||f?.backgroundColor,h=d.branding?.textColor||(Je(l)?"#FFFFFF":"#000000"),v=f?.transparentBackgroundUrl||f?.logo,S=d.eventUrls?.find(_=>_.appType==="desktop")?.url||d.links?.find(_=>_.appType==="desktop")?.homepageUrl||d.url||"";return{operator:{id:d.id,name:d.name,url:S,branding:{backgroundColor:l,textColor:h,logo:v}},type:r.type,markets:r.markets.map(_=>({type:{id:_.type.id,code:_.type.code,name:_.type.name},period:{id:_.scope.id,type:_.scope.type,name:_.scope.name},selections:_.selections.map(y=>{const H=y.urls?.find($=>$.appType==="desktop")?.url;let C="NONE";return y.movement==="UP"?C="UP":y.movement==="DOWN"&&(C="DOWN"),{id:y.id,name:y.name,code:y.code,value:y.value,odds:y.odds,oddsOld:y.oddsOld,movement:C,url:H}})}))}});n.set(a,u)}),n}function Je(e){if(!e)return!0;const t=e.replace("#",""),n=parseInt(t.substring(0,2),16),o=parseInt(t.substring(2,4),16),a=parseInt(t.substring(4,6),16);return(.2126*n+.7152*o+.0722*a)/255<.5}async function Qe(e,t,n){if(!t||t.length===0)return new Map;const o={oddType:n?.oddType||"ALL",scopeType:n?.scopeType||"ORDINARY_TIME",oddFormat:n?.oddFormat||"DECIMAL"};n?.marketTypes&&n.marketTypes.length>0&&(o.marketTypes=n.marketTypes.map(s=>Xe(s)));const a=await e.odds.getByMatchIds(t,o);return ze(a,n?.bookmakerIds)}exports.SPORTAL365_BASKETBALL_DOMAIN=V;exports.SPORTAL365_SPORTS_SEARCH_DOMAIN=j;exports.SPORTAL365_STATISTICS_DOMAIN=K;exports.SPORTAL365_TENNIS_DOMAIN=W;exports.addProviderRef=z;exports.createHttpClient=F;exports.footballHttp=m;exports.getBatchMatchOdds=Qe;exports.getConfig=g;exports.getFootballCompetition=De;exports.getFootballLivescore=ve;exports.getFootballMatch=ge;exports.getFootballMatchCommentary=ye;exports.getFootballMatchEvents=me;exports.getFootballMatchLineups=pe;exports.getFootballMatchOdds=fe;exports.getFootballMatchStatistics=_e;exports.getFootballMatches=he;exports.getFootballPlayerSeasonStatistics=M;exports.getFootballSeasonDetails=Ne;exports.getFootballStandings=He;exports.getFootballTeam=Ie;exports.getFootballTeamSquad=Oe;exports.getLeaderboardMatches=U;exports.getLeaderboardTeamMatches=je;exports.getLeaderboardTemplate=qe;exports.getProviderRefId=X;exports.isConfigured=B;exports.setConfig=Y;exports.toProviderRefArray=i;exports.transformMatch=Ve;exports.transformMatches=We;exports.transformOdds=P;