fansunited-data-layer 0.8.3 → 0.8.4

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.
@@ -1 +1 @@
1
- {"version":3,"file":"game.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/api/sportal365-sports/basketball/games/transformers/game.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACR,aAAa,EAQhB,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAmJlD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,iBAAiB,GAAG,aAAa,CAoC7E"}
1
+ {"version":3,"file":"game.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/api/sportal365-sports/basketball/games/transformers/game.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACR,aAAa,EAQhB,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAqKlD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,iBAAiB,GAAG,aAAa,CAoC7E"}
@@ -1 +1 @@
1
- {"version":3,"file":"match.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/api/sportal365-sports/tennis/matches/transformers/match.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACR,aAAa,EAUhB,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,cAAc,EAAwB,MAAM,UAAU,CAAC;AA4MrE;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,cAAc,GAAG,aAAa,CA2CvE"}
1
+ {"version":3,"file":"match.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/api/sportal365-sports/tennis/matches/transformers/match.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACR,aAAa,EAUhB,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,cAAc,EAAwB,MAAM,UAAU,CAAC;AAiNrE;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,cAAc,GAAG,aAAa,CA2CvE"}
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("./matches-B-ZxR-B9.cjs"),L=require("react");function me(e){return{entityType:"tournament",id:e.id.toString(),name:e.name,slug:e.slug,gender:e.gender,type:e.type,region:e.region,country:{id:e.country.id.toString(),name:e.country.name,code:void 0,flag:e.country.url_flag??void 0,providerRef:u.toProviderRefArray(e.country.uuid)},assets:e.url_logo?{logo:e.url_logo}:void 0,providerRef:u.toProviderRefArray(e.uuid)}}function ge(e){return{entityType:"player",id:e.id.toString(),name:e.name,slug:e.slug,position:e.position,gender:e.gender,birthdate:e.birthdate,country:{id:e.country.id.toString(),name:e.country.name,code:void 0,flag:e.country.url_flag??void 0,providerRef:u.toProviderRefArray(e.country.uuid)},assets:e.url_thumb?{photo:e.url_thumb}:void 0,providerRef:u.toProviderRefArray(e.uuid)}}function fe(e){return{entityType:"team",id:e.id.toString(),name:e.name,slug:e.slug,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,type:e.type==="national"?"national":"club",gender:e.gender,country:{id:e.country.id.toString(),name:e.country.name,code:void 0,flag:e.country.url_flag??void 0,providerRef:u.toProviderRefArray(e.country.uuid)},assets:e.url_logo?{logo:e.url_logo}:void 0,providerRef:u.toProviderRefArray(e.uuid)}}function pe(e){return{entityType:"president",id:e.id.toString(),name:e.name,slug:e.slug,birthdate:e.birthdate??void 0,country:{id:e.country.id.toString(),name:e.country.name,code:void 0,flag:e.country.url_flag??void 0,providerRef:u.toProviderRefArray(e.country.uuid)},assets:e.url_thumb?{photo:e.url_thumb}:void 0,providerRef:u.toProviderRefArray(e.uuid)}}function ye(e){return{entityType:"venue",id:e.id.toString(),name:e.name,slug:e.slug,city:{id:e.city.id.toString(),name:e.city.name,country:{id:e.city.country.id.toString(),name:e.city.country.name,code:void 0,flag:e.city.country.url_flag??void 0,providerRef:u.toProviderRefArray(e.city.country.uuid)},providerRef:u.toProviderRefArray(e.city.uuid)},country:{id:e.country.id.toString(),name:e.country.name,code:void 0,flag:e.country.url_flag??void 0,providerRef:u.toProviderRefArray(e.country.uuid)},profile:{latitude:e.profile.lat,longitude:e.profile.lng,capacity:e.profile.capacity},assets:e.url_thumb?{image:e.url_thumb}:void 0,providerRef:u.toProviderRefArray(e.uuid)}}function he(e){return{entityType:"coach",id:e.id.toString(),name:e.name,slug:e.slug,birthdate:e.birthdate??void 0,country:{id:e.country.id.toString(),name:e.country.name,code:void 0,flag:e.country.url_flag??void 0,providerRef:u.toProviderRefArray(e.country.uuid)},assets:e.url_thumb?{photo:e.url_thumb}:void 0,providerRef:u.toProviderRefArray(e.uuid)}}function Te(e){switch(e.entity_type){case"tournament":return me(e);case"player":return ge(e);case"team":return fe(e);case"president":return pe(e);case"venue":return ye(e);case"coach":return he(e);default:throw new Error(`Unknown entity type: ${e.entity_type}`)}}async function ve(e,t){if(!e.query||e.query.trim()==="")return{results:[],query:e.query||""};const o=t||u.getConfig(),{sportal365Sports:n}=o,s=e.entityTypes&&e.entityTypes.length>0?e.entityTypes:["tournament","player","team","president","venue","coach"],i=await u.footballHttp.get({path:"/search",params:{query:e.query.trim(),entity_type:s.join(","),language_code:e.languageCode??n?.languageCode??"en"},headers:{"Accept-Language":e.languageCode??n?.languageCode??"en"},next:e.next,config:o});return!i||i.length===0?{results:[],query:e.query}:{results:i.map(Te),query:e.query}}const Se=u.createHttpClient(u.SPORTAL365_BASKETBALL_DOMAIN);function _e(e){const t={FINISHED:"finished",NOT_STARTED:"not_started",LIVE:"live",INTERRUPTED:"interrupted",CANCELLED:"cancelled",POSTPONED:"postponed",UNKNOWN:"not_started"},o=e.type.toUpperCase();return{code:t[o]??"not_started",name:e.name,shortName:e.short_name,type:o}}function z(e){return{id:e.id,name:e.name,threeLetterCode:e.three_letter_code,slug:e.slug,type:e.type==="national"?"national":"club",gender:e.gender}}function Ce(e){return{kickoffTime:new Date(e.game_time),currentMinute:e.minute}}function Ae(e){if(!e.season?.competition)return;const t=e.season.competition;return{id:t.id,name:t.name,slug:t.slug,type:"LEAGUE",gender:t.gender,region:t.region,country:t.country?{id:t.country.id,name:t.country.name}:void 0,season:{id:e.season.id,name:e.season.name,status:e.season.status},stage:e.stage?{id:e.stage.id,name:e.stage.name,type:e.stage.type}:void 0}}function Fe(e){if(e)return{id:e.id,name:e.name,slug:e.slug}}function Me(e){if(!e||e.length===0)return;const t=e.filter(i=>i.result_type.category==="PERIOD");if(t.length===0)return;let o=0,n=0;const s=[];for(const i of t)o+=i.home,n+=i.away,s.push({competitorOne:String(i.home),competitorTwo:String(i.away)});return{competitorOne:String(o),competitorTwo:String(n),breakdown:{total:{competitorOne:String(o),competitorTwo:String(n)},periods:s}}}function Oe(e){if(e.winner)return{competitorId:e.winner.id}}function Re(e){return{id:e.id,slug:e.slug,status:_e(e.status),timing:Ce(e),competitorOne:z(e.home_team),competitorTwo:z(e.away_team),competition:Ae(e),round:e.round?{id:e.round.id,key:e.round.uuid,name:e.round.name,type:"REGULAR",providerRef:u.toProviderRefArray(e.round.uuid)}:void 0,venue:Fe(e.arena),score:Me(e.score),winner:Oe(e),coverage:e.coverage==="NOT_LIVE"?"UNKNOWN":e.coverage,providerRef:[{provider:"sportal365-basketball",id:e.id}]}}async function Ne(e,t){const o=t||u.getConfig(),{sportal365Sports:n}=o;return(await Se.get({path:"/games",params:{offset:"0",limit:"1000",competition_list:e?.competitionList,status_type:e?.statusTypes,odd_client:e?.oddClient??n?.oddClient,odd_type:e?.oddType,market_types:e?.marketTypes,language_code:e?.languageCode??n?.languageCode??"en"},headers:{"Accept-Language":e?.languageCode??n?.languageCode??"en"},next:e?.next,config:o})).games.map(Re)}const Pe=u.createHttpClient(u.SPORTAL365_TENNIS_DOMAIN);function Ee(e){const t={FINISHED:"finished",NOT_STARTED:"not_started",LIVE:"live",INTERRUPTED:"interrupted",CANCELLED:"cancelled",POSTPONED:"postponed"},o=e.type.toUpperCase();return{code:t[o]??"not_started",name:e.name,shortName:e.short_name,type:o}}function J(e){if(e.type==="PLAYER")return{id:e.id,name:e.name,shortName:e.short_name,threeLetterCode:e.three_letter_code,type:"player",country:e.details?.[0]?.country?{id:e.details[0].country.id,name:e.details[0].country.name}:void 0,gender:e.details?.[0]?.gender};if(e.type==="TEAM_DOUBLE"&&e.details&&e.details.length===2){const t={id:e.details[0].id,name:e.details[0].name,shortName:e.details[0].short_name,threeLetterCode:e.details[0].three_letter_code,type:"player",country:e.details[0].country?{id:e.details[0].country.id,name:e.details[0].country.name}:void 0,gender:e.details[0].gender},o={id:e.details[1].id,name:e.details[1].name,shortName:e.details[1].short_name,threeLetterCode:e.details[1].three_letter_code,type:"player",country:e.details[1].country?{id:e.details[1].country.id,name:e.details[1].country.name}:void 0,gender:e.details[1].gender};return{id:e.id,name:e.name,shortName:e.short_name,threeLetterCode:e.three_letter_code,type:"pair",players:[t,o]}}else return{id:e.id,name:e.name,shortName:e.short_name,threeLetterCode:e.three_letter_code,type:"national",country:e.details?.[0]?.country?{id:e.details[0].country.id,name:e.details[0].country.name}:void 0,gender:e.details?.[0]?.gender}}function be(e){return{kickoffTime:new Date(e.scheduled_start_time),phaseStartedAt:e.started_at?new Date(e.started_at):void 0,finishedAt:e.finished_at?new Date(e.finished_at):void 0}}function Le(e){if(!e.tournament)return;const t=e.tournament;return{id:t.competition?.id??t.id,name:t.competition?.name??t.name,slug:t.competition?.slug??t.slug,type:"TOURNAMENT",gender:t.gender,region:"INTERNATIONAL",country:t.country?{id:t.country.id,name:t.country.name}:void 0}}function Ge(e){if(!e.results||e.results.length===0)return;const t=e.results.filter(i=>/^SET_\d+$/i.test(i.type.code));if(t.length===0)return;const o=[];let n=0,s=0;for(const i of t){const r=i.values.find(m=>m.position==="1"),a=i.values.find(m=>m.position==="2");if(!r||!a||r.value==null||a.value==null)continue;o.push({competitorOne:r.value,competitorTwo:a.value});const d=parseInt(r.value),l=parseInt(a.value);!isNaN(d)&&!isNaN(l)&&(d>l&&n++,l>d&&s++)}if(o.length!==0)return{competitorOne:String(n),competitorTwo:String(s),breakdown:{total:{competitorOne:String(n),competitorTwo:String(s)},periods:o}}}function De(e){const t=e.participants.find(o=>o.winner==="YES");if(t)return{competitorId:t.id}}function Ie(e){const t=e.participants.sort((o,n)=>o.position-n.position);return{id:e.id,slug:e.slug,status:Ee(e.status),timing:be(e),competitorOne:J(t[0]),competitorTwo:J(t[1]),competition:Le(e),round:e.round?{id:e.round.id,key:e.round.uuid,name:e.round.name,type:"REGULAR",providerRef:u.toProviderRefArray(e.round.uuid)}:void 0,score:Ge(e),winner:De(e),coverage:e.coverage?.type==="NOT_LIVE"?"UNKNOWN":e.coverage?.type,metadata:{matchType:e.type,bestOfSets:e.best_of_sets,surface:e.tournament?.surface,indoorOutdoor:e.tournament?.indoor_outdoor},providerRef:[{provider:"sportal365-tennis",id:e.id}]}}async function ke(e,t){const o=t||u.getConfig(),{sportal365Sports:n}=o;return(await Pe.get({path:"/matches/livescore",params:{date:e?.date,utc_offset:e?.utcOffset?.toString(),offset:"0",limit:"1000",type:e?.type,gender:e?.gender,status_type:e?.statusType,competition_list:e?.competitionList,odd_client:e?.oddClient??n?.oddClient,odd_type:e?.oddType,market_types:e?.marketTypes,language_code:e?.languageCode??n?.languageCode??"en"},headers:{"Accept-Language":e?.languageCode??n?.languageCode??"en"},next:e?.next,config:o})).matches.map(Ie)}const He=u.createHttpClient(u.SPORTAL365_SPORTS_SEARCH_DOMAIN);function M(e){return{language:e.language,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0}}function O(e){if(!(!e||!e.url))return{url:e.url}}function b(e){if(e)return{id:e.id,legacyId:e.legacy_id??void 0,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,translations:e.translations.map(M),displayAsset:O(e.display_asset),slug:e.slug,providerRef:e.id}}function j(e){return{entityType:"team",id:e.id,legacyId:e.legacy_id??void 0,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,translations:e.translations.map(M),displayAsset:O(e.display_asset),slug:e.slug,tagScore:e.tag_score??void 0,sport:e.sport,country:b(e.country),gender:e.gender,competitionIds:e.competition_ids,type:e.type,national:e.national,undecided:e.undecided,providerRef:e.id}}function Z(e){return{entityType:"city",id:e.id,legacyId:e.legacy_id??void 0,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,translations:e.translations.map(M),displayAsset:O(e.display_asset),slug:e.slug,tagScore:e.tag_score??void 0,sport:e.sport,country:b(e.country),providerRef:e.id}}function Ue(e){return{entityType:"horse",id:e.id,legacyId:e.legacy_id??void 0,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,translations:e.translations.map(M),displayAsset:O(e.display_asset),slug:e.slug,tagScore:e.tag_score??void 0,sport:e.sport,country:b(e.country),gender:e.gender,providerRef:e.id}}function Be(e){return{entityType:"player",id:e.id,legacyId:e.legacy_id??void 0,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,translations:e.translations.map(M),displayAsset:O(e.display_asset),slug:e.slug,tagScore:e.tag_score??void 0,sport:e.sport,country:b(e.country),gender:e.gender,birthdate:e.birthdate??void 0,position:e.position??void 0,providerRef:e.id}}function $e(e){return{entityType:"coach",id:e.id,legacyId:e.legacy_id??void 0,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,translations:e.translations.map(M),displayAsset:O(e.display_asset),slug:e.slug,tagScore:e.tag_score??void 0,sport:e.sport,country:b(e.country),gender:e.gender,birthdate:e.birthdate??void 0,providerRef:e.id}}function xe(e){return{entityType:"referee",id:e.id,legacyId:e.legacy_id??void 0,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,translations:e.translations.map(M),displayAsset:O(e.display_asset),slug:e.slug,tagScore:e.tag_score??void 0,sport:e.sport,country:b(e.country),gender:e.gender,birthdate:e.birthdate??void 0,providerRef:e.id}}function We(e){return{entityType:"venue",id:e.id,legacyId:e.legacy_id??void 0,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,translations:e.translations.map(M),displayAsset:O(e.display_asset),slug:e.slug,tagScore:e.tag_score??void 0,sport:e.sport,country:b(e.country),city:e.city?Z(e.city):void 0,providerRef:e.id}}function qe(e){return{entityType:e.entity_type,id:e.id,legacyId:e.legacy_id??void 0,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,translations:e.translations.map(M),displayAsset:O(e.display_asset),slug:e.slug,tagScore:e.tag_score??void 0,sport:e.sport,country:b(e.country),gender:e.gender,type:e.type??void 0,region:e.region??void 0,providerRef:e.id}}function Ve(e){return{entityType:"match",id:e.id,legacyId:e.legacy_id??void 0,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,translations:e.translations.map(M),displayAsset:O(e.display_asset),slug:e.slug,tagScore:e.tag_score??void 0,sport:e.sport,competitionId:e.competition_id??void 0,startTime:e.start_time??void 0,homeTeam:e.home_team?j(e.home_team):void 0,awayTeam:e.away_team?j(e.away_team):void 0,providerRef:e.id}}function je(e){return{entityType:"country",id:e.id,legacyId:e.legacy_id??void 0,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,translations:e.translations.map(M),displayAsset:O(e.display_asset),slug:e.slug,tagScore:e.tag_score??void 0,sport:e.sport,providerRef:e.id}}function Ye(e){switch(e.entity_type){case"team":return j(e);case"city":return Z(e);case"horse":return Ue(e);case"player":return Be(e);case"coach":return $e(e);case"referee":return xe(e);case"venue":return We(e);case"tournament":case"competition":return qe(e);case"match":return Ve(e);case"country":return je(e);default:{const t=e;throw new Error(`Unknown entity type: ${t.entity_type}`)}}}async function Ke(e={},t){const o=t??u.getConfig(),n={};e.name&&(n.name=e.name),e.entityTypes&&e.entityTypes.length>0&&(n.entity_type=e.entityTypes.join(",")),e.sports&&e.sports.length>0&&(n.sport=e.sports.join(",")),e.eventStartTime&&(n.event_start_time=e.eventStartTime),e.ids&&e.ids.length>0&&(n.ids=e.ids.join(",")),e.competitionIds&&e.competitionIds.length>0&&(n.competition_ids=e.competitionIds.join(",")),e.domain&&(n.domain=e.domain),e.inputLanguage&&(n.input_language=e.inputLanguage),e.translationLanguage&&(n.translation_language=e.translationLanguage),e.limit!==void 0&&(n.limit=e.limit.toString()),e.offset!==void 0&&(n.offset=e.offset.toString());const s=await He.get({path:"/suggest",params:n,next:e.next,config:o});return!s.results||s.results.length===0?{results:[],query:e.name}:{results:s.results.map(Ye),query:e.name}}const ze=u.createHttpClient(u.SPORTAL365_STATISTICS_DOMAIN);function Je(e,t){return{teamId:e.id,teamName:e.name,seasonId:t,statistics:e.statistics.map(o=>({key:o.id,value:o.value,label:o.name}))}}async function Qe(e,t){const o=t||u.getConfig(),n=e.next??{revalidate:600},s=await ze.get({path:"/statistics/aggregate",params:{participant_ids:e.teamId,season_ids:e.seasonId,participant_type:"TEAM"},next:n,config:o});if(!s.data||s.data.length===0)throw new Error(`No statistics found for team ${e.teamId} in season ${e.seasonId}`);return Je(s.data[0],e.seasonId)}function Xe(e){const t=e.replace(/\/$/,"");function o(n){return`${t}${n}`}return{async get(n){const s=n.config||u.getConfig(),{fansUnited:i}=s;if(!i)throw new Error("Fans United configuration is missing. Add 'fansUnited' with 'apiKey' and 'clientId' to your config.");if(!i.apiKey||!i.clientId)throw new Error("Fans United configuration requires both 'apiKey' and 'clientId'");const r=new URL(o(n.path));if(r.searchParams.set("key",i.apiKey),r.searchParams.set("client_id",i.clientId),n.params)for(const[m,c]of Object.entries(n.params))c!==void 0&&(Array.isArray(c)?c.length>0&&r.searchParams.set(m,c.join(",")):r.searchParams.set(m,c));const a=3e4,d=new URL(r.toString());d.searchParams.delete("key"),d.searchParams.delete("client_id"),console.log("🔗 FansUnited API URL:",d.toString());const l=await fetch(r.toString(),{method:"GET",headers:{Accept:"application/json","Content-Type":"application/json",...n.headers},signal:AbortSignal.timeout(a),...n.next&&{next:n.next}});if(!l.ok){let m=`Fans United API error: ${l.status} ${l.statusText}`;try{const c=await l.text();c&&(m+=` - ${c}`)}catch(c){console.error("[Fans United HTTP] Failed to read error response body:",{error:c instanceof Error?c.message:String(c),status:l.status,statusText:l.statusText})}throw new Error(m)}return l.json()}}}const Ze="https://football.fansunitedapi.com",E=Xe(Ze);function we(e){return{id:String(e.id),name:e.name,active:e.active,providerRef:[{provider:"fansunited",id:String(e.id)}]}}function et(e){const t={id:String(e.id),name:e.name,shortName:e.short_name,slug:e.slug,type:e.type||"LEAGUE",region:e.region,gender:e.gender,providerRef:[{provider:"fansunited",id:String(e.id)}]};return e.country&&(t.country={id:String(e.country.id),name:e.country.name,code:e.country.code,flag:e.country.assets?.flag,providerRef:[{provider:"fansunited",id:String(e.country.id)}]}),e.assets?.logo&&(t.assets={logo:e.assets.logo}),e.seasons&&e.seasons.length>0&&(t.seasons=e.seasons.map(we)),e.current_season&&(t.season={id:String(e.current_season.id),name:e.current_season.name,status:e.current_season.active?"ACTIVE":"INACTIVE"}),t}function tt(e){return e.map(et)}async function ot(e,t){const o={};e?.lang?o.lang=e.lang:o.lang="EN",e?.sortField&&(o.sort_field=e.sortField),e?.sortOrder&&(o.sort_order=e.sortOrder),e?.page!==void 0&&(o.page=String(e.page)),e?.perPage!==void 0&&(o.per_page=String(e.perPage)),e?.countryId!==void 0&&(o.country_id=String(e.countryId)),e?.active!==void 0&&(o.active=e.active?"1":"0");const n=await E.get({path:"/v1/competitions",params:o,config:t,next:e?.next}),s=n.data.map(l=>l.id),i=new Set(s);s.length!==i.size&&console.warn("⚠️ API returned duplicate competitions!");const r=tt(n.data),a=new Set,d=r.filter(l=>a.has(l.id)?!1:(a.add(l.id),!0));return r.length!==d.length&&console.warn(`Removed ${r.length-d.length} duplicate competitions`),d}function nt(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 st(e){return{id:e.id,name:e.name,type:e.type?.toUpperCase()||"LEAGUE",gender:e.gender?.toUpperCase(),country:e.country?nt(e.country):void 0,assets:e.assets?.logo?{logo:e.assets.logo}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function it(e){return st(e.data)}async function rt(e,t,o){const n=o||u.getConfig(),s={};t?.lang&&(s.lang=t.lang);const i=await E.get({path:`/v1/competitions/${e}`,params:s,next:t?.next,config:n});return it(i)}function at(e){return{id:e.id,name:e.name,code:e.country_code,flag:e.assets?.flag,providerRef:[{provider:"fansunited",id:e.id}]}}function w(e){return{id:e.id,name:e.name,shortName:e.short_name||void 0,threeLetterCode:e.code,type:e.national?"national":"club",gender:e.gender?e.gender.toUpperCase():void 0,country:e.country?at(e.country):void 0,assets:e.assets?.logo?{logo:e.assets.logo}:void 0,metadata:e.colors?{shirtColors:e.colors.primary?[{type:"home",colorCode:e.colors.primary}]:void 0}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function ct(e){return w(e.data)}function lt(e){return e.data.map(w)}async function dt(e,t,o){const n=o||u.getConfig(),s={};t?.lang&&(s.lang=t.lang);const i=await E.get({path:`/v1/teams/${e}`,params:s,next:t?.next,config:n});return ct(i)}async function ut(e,t){const o=t||u.getConfig(),n={};e?.lang&&(n.lang=e.lang),e?.teamIds&&(n.team_ids=e.teamIds),e?.countryId&&(n.country_id=e.countryId),e?.name&&(n.name=e.name),e?.scope&&(n.scope=e.scope),e?.national!==void 0&&(n.national=String(e.national)),e?.gender&&(n.gender=e.gender),e?.limit!==void 0&&(n.limit=String(e.limit)),e?.page!==void 0&&(n.page=String(e.page)),e?.sortField&&(n.sort_field=e.sortField),e?.sortOrder&&(n.sort_order=e.sortOrder);const s=await E.get({path:"/v1/teams",params:n,next:e?.next,config:o});return lt(s)}function Y(e){return{id:e.id,name:e.name,code:e.country_code,flag:e.assets?.flag,providerRef:[{provider:"fansunited",id:e.id}]}}function mt(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?Y(e.country):void 0,assets:e.assets?.logo?{logo:e.assets.logo}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function gt(e){return{id:e.id,name:e.name,type:e.type?.toUpperCase()||"LEAGUE",gender:e.gender?.toUpperCase(),country:e.country?Y(e.country):void 0,assets:e.assets?.logo?{logo:e.assets.logo}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function ee(e){return{type:"player",id:e.id,name:e.name,position:e.position,birthdate:e.birth_date,country:e.country?Y(e.country):void 0,assets:e.assets?.headshot?{photo:e.assets.headshot}:void 0,teams:e.teams?.map(mt),competitions:e.competitions?.map(gt),providerRef:[{provider:"fansunited",id:e.id}]}}function ft(e){return ee(e.data)}function pt(e){return e.data.map(ee)}async function yt(e,t,o){const n=o||u.getConfig(),s={};t?.lang&&(s.lang=t.lang);const i=await E.get({path:`/v1/players/${e}`,params:s,next:t?.next,config:n});return ft(i)}async function ht(e,t){const o=t||u.getConfig(),n={};e?.lang&&(n.lang=e.lang),e?.playerIds&&(n.player_ids=e.playerIds),e?.countryId&&(n.country_id=e.countryId),e?.name&&(n.name=e.name),e?.scope&&(n.scope=e.scope),e?.limit!==void 0&&(n.limit=String(e.limit)),e?.page!==void 0&&(n.page=String(e.page)),e?.sortField&&(n.sort_field=e.sortField),e?.sortOrder&&(n.sort_order=e.sortOrder);const s=await E.get({path:"/v1/players",params:n,next:e?.next,config:o});return pt(s)}async function Tt(e,t,o){const n=o||u.getConfig(),s={};t?.lang&&(s.lang=t.lang);const i=await E.get({path:`/v1/matches/${e}`,params:s,next:t?.next,config:n});return u.transformMatch(i)}async function vt(e,t){const o=t||u.getConfig(),n={};e?.lang&&(n.lang=e.lang),e?.competitions&&(n.competitions=e.competitions),e?.countries&&(n.countries=e.countries),e?.fromDate&&(n.from_date=e.fromDate),e?.toDate&&(n.to_date=e.toDate),e?.matches&&(n.matches=e.matches),e?.teams&&(n.teams=e.teams),e?.status&&(n.status=e.status),e?.limit!==void 0&&(n.limit=String(e.limit)),e?.page!==void 0&&(n.page=String(e.page)),e?.sortField&&(n.sort_field=e.sortField),e?.sortOrder&&(n.sort_order=e.sortOrder),e?.showDeleted!==void 0&&(n.show_deleted=e.showDeleted?"true":"false");const s=await E.get({path:"/v1/matches",params:n,next:e?.next,config:o});return u.transformMatches(s)}function K(e){return{id:e.id,name:e.name,code:e.country_code,flag:e.assets?.flag||void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function St(e){return{id:e.id,name:e.name,shortName:e.short_name||void 0,type:e.type||"LEAGUE",region:e.region,gender:e.gender?.toUpperCase(),country:e.country?K(e.country):void 0,assets:e.assets?.logo?{logo:e.assets.logo}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function _t(e){return{type:"player",id:e.id,name:e.name,position:e.position||void 0,gender:e.gender?.toUpperCase(),birthdate:e.birth_date||void 0,country:e.country?K(e.country):void 0,assets:e.assets?.headshot?{photo:e.assets.headshot}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function Ct(e){return{type:e.national?"national":"club",id:e.id,name:e.name,shortName:e.short_name||void 0,threeLetterCode:e.code||void 0,gender:e.gender?.toUpperCase(),country:e.country?K(e.country):void 0,assets:e.assets?.logo?{logo:e.assets.logo}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function V(e){switch(e.entity_type){case"competition":{const t=St(e);return{source:"FOOTBALL",entityType:"competition",entityId:e.id,entityData:t}}case"player":{const t=_t(e);return{source:"FOOTBALL",entityType:"player",entityId:e.id,entityData:t}}case"team":{const t=Ct(e);return{source:"FOOTBALL",entityType:"team",entityId:e.id,entityData:t}}case"venue":case"coach":return null;default:throw new Error(`Unknown entity type: ${e.entity_type}`)}}async function At(e,t){if(!e.query||e.query.trim()==="")return[];const o=t||u.getConfig(),n={q:e.query.trim()},i=(e.entityTypes&&e.entityTypes.length>0?e.entityTypes:["competition","team","player"]).map(d=>{switch(d){case"team":return"teams";case"player":return"players";case"competition":return"competitions";default:return d}});n.entities=i.join(","),e.lang&&(n.lang=e.lang),e.limit&&(n.limit=String(e.limit));const r=await E.get({path:"/v1/search",params:n,next:e.next,config:o}),a=[];return r.data&&(r.data.competitions&&r.data.competitions.forEach(d=>{const l=V({...d,entity_type:"competition"});l&&a.push(l)}),r.data.teams&&r.data.teams.forEach(d=>{const l=V({...d,entity_type:"team"});l&&a.push(l)}),r.data.players&&r.data.players.forEach(d=>{const l=V({...d,entity_type:"player"});l&&a.push(l)})),a}function Ft(e){return!e.seasons||e.seasons.length===0?void 0:e.seasons.find(o=>o.active)??e.seasons[0]}function Mt(e,t){const o=new Date,n=t.filter(s=>{const i=s.competitorOne.id===e||s.competitorTwo.id===e,r=s.status.type==="NOT_STARTED",a=new Date(s.timing.kickoffTime)>=o;return i&&r&&a});return n.sort((s,i)=>new Date(s.timing.kickoffTime).getTime()-new Date(i.timing.kickoffTime).getTime()),n[0]}function Ot(e,t){const o=new Date,n=t.filter(s=>{const i=s.competitorOne.id===e||s.competitorTwo.id===e,r=s.status.type==="FINISHED",a=new Date(s.timing.kickoffTime)<=o;return i&&r&&a});return n.sort((s,i)=>new Date(i.timing.kickoffTime).getTime()-new Date(s.timing.kickoffTime).getTime()),n[0]}function Rt(e,t){const o=new Date;return t.filter(s=>{const i=s.competitorOne.id===e||s.competitorTwo.id===e,r=s.status.type==="NOT_STARTED"||s.status.type==="LIVE",a=new Date(s.timing.kickoffTime)>=o||s.status.type==="LIVE";return i&&r&&a}).sort((s,i)=>new Date(s.timing.kickoffTime).getTime()-new Date(i.timing.kickoffTime).getTime())}function Nt(e,t){const o=new Date;return t.filter(s=>{const i=s.competitorOne.id===e||s.competitorTwo.id===e,r=s.status.type==="FINISHED",a=new Date(s.timing.kickoffTime)<=o;return i&&r&&a}).sort((s,i)=>new Date(i.timing.kickoffTime).getTime()-new Date(s.timing.kickoffTime).getTime())}function Pt(e,t,o){const n=o.filter(r=>r.status.type==="FINISHED"),s=o.filter(r=>r.status.type==="NOT_STARTED"||r.status.type==="POSTPONED"),i=t.entries.map(r=>{const a=r.competitor.id,d=n.filter(g=>g.competitorOne.id===e&&g.competitorTwo.id===a||g.competitorOne.id===a&&g.competitorTwo.id===e),l=s.filter(g=>g.competitorOne.id===e&&g.competitorTwo.id===a||g.competitorOne.id===a&&g.competitorTwo.id===e);let m,c;return d.forEach(g=>{const p=g.competitorOne.id===e,y=parseInt(g.score?.competitorOne??"0"),T=parseInt(g.score?.competitorTwo??"0"),R=p?y:T,C=p?T:y;let F;R>C?F="W":R===C?F="D":F="L";const N={result:F,score:`${y} - ${T}`,date:g.timing.kickoffTime,matchId:g.id,isUpcoming:!1};p?m=N:c=N}),l.forEach(g=>{const p=g.competitorOne.id===e;p&&!m?m={date:g.timing.kickoffTime,matchId:g.id,isUpcoming:!0}:!p&&!c&&(c={date:g.timing.kickoffTime,matchId:g.id,isUpcoming:!0})}),{rank:r.rank,teamId:r.competitor.id,teamName:r.competitor.name,teamShortName:r.competitor.shortName,teamLogo:r.competitor.logo,gamesPlayed:r.stats.played??0,points:r.stats.points??0,homeResult:m,awayResult:c}});return{teamId:e,rows:i}}function Et(e,t=10){return e.players.filter(o=>(o.seasonStatistics?.goals??0)>0).sort((o,n)=>{const s=o.seasonStatistics?.goals??0,i=n.seasonStatistics?.goals??0;if(i!==s)return i-s;const r=o.seasonStatistics?.assists??0;return(n.seasonStatistics?.assists??0)-r}).slice(0,t)}function bt(e,t=10){return e.players.filter(o=>(o.seasonStatistics?.assists??0)>0).sort((o,n)=>{const s=o.seasonStatistics?.assists??0,i=n.seasonStatistics?.assists??0;if(i!==s)return i-s;const r=o.seasonStatistics?.goals??0;return(n.seasonStatistics?.goals??0)-r}).slice(0,t)}function Lt(e,t=10){return e.players.filter(o=>(o.seasonStatistics?.appearances??0)>0).sort((o,n)=>{const s=o.seasonStatistics?.appearances??0,i=n.seasonStatistics?.appearances??0;if(i!==s)return i-s;const r=o.seasonStatistics?.minutes??0;return(n.seasonStatistics?.minutes??0)-r}).slice(0,t)}function Gt(e,t=10){return e.players.filter(o=>(o.seasonStatistics?.minutes??0)>0).sort((o,n)=>{const s=o.seasonStatistics?.minutes??0,i=n.seasonStatistics?.minutes??0;if(i!==s)return i-s;const r=o.seasonStatistics?.appearances??0;return(n.seasonStatistics?.appearances??0)-r}).slice(0,t)}function Dt(e,t=10){return e.players.filter(o=>(o.seasonStatistics?.cleansheets??0)>0).sort((o,n)=>{const s=o.seasonStatistics?.cleansheets??0,i=n.seasonStatistics?.cleansheets??0;if(i!==s)return i-s;const r=o.seasonStatistics?.appearances??0;return(n.seasonStatistics?.appearances??0)-r}).slice(0,t)}function It(e,t=10){return e.players.filter(o=>{const n=o.seasonStatistics?.yellowCards??0,s=o.seasonStatistics?.redCards??0;return n+s>0}).sort((o,n)=>{const s=o.seasonStatistics?.yellowCards??0,i=o.seasonStatistics?.redCards??0,r=n.seasonStatistics?.yellowCards??0,a=n.seasonStatistics?.redCards??0,d=s+i*3,l=r+a*3;return l!==d?l-d:a!==i?a-i:r-s}).slice(0,t)}function G(e){const t=new Map,o=new Map;return e.forEach(n=>{!n.mainEvents||n.mainEvents.length===0||n.mainEvents.forEach(s=>{if(s.primaryPlayer){const i=s.primaryPlayer.id;t.has(i)||t.set(i,{playerId:s.primaryPlayer.id,seasonId:"",teamId:"",goals:0,assists:0,yellowCards:0,redCards:0,appearances:0});const r=t.get(i);o.has(i)||o.set(i,new Set),o.get(i).add(n.id),(s.type==="GOAL"||s.type==="PENALTY_GOAL")&&(r.goals=(r.goals??0)+1),s.type==="YELLOW_CARD"&&(r.yellowCards=(r.yellowCards??0)+1),(s.type==="RED_CARD"||s.type==="YELLOW_RED_CARD")&&(r.redCards=(r.redCards??0)+1)}if(s.secondaryPlayer&&(s.type==="GOAL"||s.type==="PENALTY_GOAL")){const i=s.secondaryPlayer.id;t.has(i)||t.set(i,{playerId:s.secondaryPlayer.id,seasonId:"",teamId:"",goals:0,assists:0,yellowCards:0,redCards:0,appearances:0});const r=t.get(i);r.assists=(r.assists??0)+1,o.has(i)||o.set(i,new Set),o.get(i).add(n.id)}})}),o.forEach((n,s)=>{const i=t.get(s);i&&i.appearances!==void 0&&(i.appearances=n.size)}),t}function U(e){return Array.from(e.values()).map(t=>({...t,totalCards:(t.yellowCards??0)+(t.redCards??0)}))}function te(e,t=10){const o=G(e);return U(o).filter(s=>(s.goals??0)>0).sort((s,i)=>{const r=s.goals??0,a=i.goals??0;if(a!==r)return a-r;const d=s.assists??0;return(i.assists??0)-d}).slice(0,t)}function oe(e,t=10){const o=G(e);return U(o).filter(s=>(s.assists??0)>0).sort((s,i)=>{const r=s.assists??0,a=i.assists??0;if(a!==r)return a-r;const d=s.goals??0;return(i.goals??0)-d}).slice(0,t)}function ne(e,t=10){const o=G(e);return U(o).filter(s=>(s.totalCards??0)>0).sort((s,i)=>{const r=(s.yellowCards??0)+(s.redCards??0)*3,a=(i.yellowCards??0)+(i.redCards??0)*3;if(a!==r)return a-r;const d=s.redCards??0,l=i.redCards??0;if(l!==d)return l-d;const m=s.yellowCards??0;return(i.yellowCards??0)-m}).slice(0,t)}function se(e,t=10){const o=G(e);return U(o).filter(s=>(s.goals??0)+(s.assists??0)>0).sort((s,i)=>{const r=(s.goals??0)+(s.assists??0),a=(i.goals??0)+(i.assists??0);if(a!==r)return a-r;const d=s.goals??0,l=i.goals??0;if(l!==d)return l-d;const m=s.assists??0;return(i.assists??0)-m}).slice(0,t)}function ie(e){const t=G(e);return U(t).sort((n,s)=>{const i=n.appearances??0,r=s.appearances??0;if(r!==i)return r-i;const a=(n.goals??0)+(n.assists??0);return(s.goals??0)+(s.assists??0)-a})}function kt(e,t=10){return L.useMemo(()=>te(e,t),[e,t])}function Ht(e,t=10){return L.useMemo(()=>oe(e,t),[e,t])}function Ut(e,t=10){return L.useMemo(()=>ne(e,t),[e,t])}function Bt(e,t=10){return L.useMemo(()=>se(e,t),[e,t])}function $t(e){return L.useMemo(()=>ie(e),[e])}function re(e){return L.useMemo(()=>G(e),[e])}function xt(e,t){const o=re(e);return L.useMemo(()=>o.get(t),[o,t])}const ae=["GOAL","PENALTY_GOAL","OWN_GOAL"];function A(e,t){return t>0?e/t*100:0}function k(e,t){return t>0?e/t:0}function Wt(e,t=!1,o=2){return t?`${Math.round(e)}%`:Number.isInteger(e)?e.toString():e.toFixed(o)}function qt(e,t){const o=typeof e=="string"?parseFloat(e):e;if(isNaN(o)||t===0)return"0";const n=(o/t).toFixed(1);return`${o} (${n} avg)`}function Vt(e,t){const o=typeof e=="string"?parseFloat(e):e;return isNaN(o)||t===0?"0.0":(o/t).toFixed(1)}function jt(e){const t=parseFloat(e);return isNaN(t)?"0%":`${Math.round(t)}%`}function ce(e,t,o){if(e.status?.type!=="FINISHED"||!e.score)return null;const n=parseInt(e.score.competitorOne||"0"),s=parseInt(e.score.competitorTwo||"0"),i=o?n:s,r=o?s:n;let a=null,d=null;const l=e.score.breakdown?.halfTime;if(l){const p=parseInt(l.competitorOne||"0"),y=parseInt(l.competitorTwo||"0");a=o?p:y,d=o?y:p}const m=e.statistics;let c=null,g=null;if(m){const p=m.find?.(y=>y.type==="CORNERS");p&&(c=o?p.competitorOne:p.competitorTwo,g=o?p.competitorTwo:p.competitorOne)}return{goalsFor:i,goalsAgainst:r,halfTimeGoalsFor:a,halfTimeGoalsAgainst:d,cornersFor:c,cornersAgainst:g,isWin:i>r,isDraw:i===r,isLoss:i<r}}function q(e,t){return e.competitorOne.id===t}function le(e,t){return e.competitorTwo.id===t}function Yt(e,t){return q(e,t)||le(e,t)}function Kt(e){return e.status?.type==="FINISHED"}function zt(e,t){const o=q(e,t);return parseInt(o?e.score?.competitorOne||"0":e.score?.competitorTwo||"0")}function Jt(e,t){const o=q(e,t);return parseInt(o?e.score?.competitorTwo||"0":e.score?.competitorOne||"0")}function Qt(e,t,o){const n=e.filter(m=>{if(m.status?.type!=="FINISHED"||!m.score)return!1;const c=m.competitorOne.id===t||m.competitorTwo.id===t,g=m.competitorOne.id===o||m.competitorTwo.id===o;return c&&g});let s=0,i=0,r=0,a=0,d=0;n.forEach(m=>{const c=parseInt(m.score?.competitorOne||"0"),g=parseInt(m.score?.competitorTwo||"0"),p=m.competitorOne.id===t,y=p?c:g,T=p?g:c;a+=y,d+=T,y>T?s++:T>y?i++:r++});const l=n.length;return{totalMatches:l,homeTeamWins:s,awayTeamWins:i,draws:r,homeTeamGoals:a,awayTeamGoals:d,homeTeamWinPercentage:l>0?s/l*100:0,awayTeamWinPercentage:l>0?i/l*100:0,drawPercentage:l>0?r/l*100:0,homeTeamAvgGoals:l>0?a/l:0,awayTeamAvgGoals:l>0?d/l:0}}function Xt(e,t,o,n=5){return e.filter(i=>{if(i.status?.type!=="FINISHED"||!i.score)return!1;const r=i.competitorOne.id===t||i.competitorTwo.id===t,a=i.competitorOne.id===o||i.competitorTwo.id===o;return r&&a}).sort((i,r)=>new Date(r.timing.kickoffTime).getTime()-new Date(i.timing.kickoffTime).getTime()).slice(0,n).map(i=>{const r=parseInt(i.score?.competitorOne||"0"),a=parseInt(i.score?.competitorTwo||"0"),d=i.competitorOne.id===t,l=d?r:a,m=d?a:r;let c;return l>m?c="home":m>l?c="away":c="draw",{id:i.id,date:new Date(i.timing.kickoffTime).toLocaleDateString("en-GB",{day:"numeric",month:"short",year:"numeric"}),homeTeamName:i.competitorOne.name,awayTeamName:i.competitorTwo.name,homeTeamLogo:i.competitorOne.assets?.logo,awayTeamLogo:i.competitorTwo.assets?.logo,homeScore:r,awayScore:a,venue:i.venue?.name,winner:c}})}function Zt(e,t,o){return e.filter(n=>{const s=n.competitorOne.id===t,i=n.competitorTwo.id===t;return!s&&!i?!1:o==="home"?s:i}).map(n=>{const s=n.competitorOne.id===t;return ce(n,t,s)}).filter(n=>n!==null)}function Q(e,t,o,n){let s=0;for(const i of e){const r=i.competitorOne.id===t,a=i.competitorTwo.id===t;if(!r&&!a||o==="home"&&!r||o==="away"&&!a||i.status?.type!=="FINISHED")continue;const d=i.mainEvents;if(!d||!Array.isArray(d))continue;const l=d.filter(y=>y.type&&ae.includes(y.type)).sort((y,T)=>{const R=y.minute??0,C=T.minute??0;return R!==C?R-C:(y.injuryMinute??0)-(T.injuryMinute??0)});if(l.length===0)continue;const m=l[0],c=r?"ONE":"TWO",g=m.type==="OWN_GOAL";let p;g?p=m.competitorPosition!==c:p=m.competitorPosition===c,(n==="scored"&&p||n==="conceded"&&!p)&&s++}return s}function wt(e,t,o){let n=0;for(const s of e){const i=s.competitorOne.id===t,r=s.competitorTwo.id===t;if(!i&&!r||o==="home"&&!i||o==="away"&&!r||s.status?.type!=="FINISHED")continue;const a=s.mainEvents;a&&Array.isArray(a)&&n++}return n}function eo(e,t,o){const n=Zt(e,t,o),s=n.length;if(s===0)return{played:0,goalsForPerMatch:0,cleanSheets:0,wonToNil:0,scoringRate:0,scoredInBothHalves:0,scoredFirst:0,leadingAtHalfTime:0,goalsAgainstPerMatch:0,failedToScore:0,lostToNil:0,concedingRate:0,concededInBothHalves:0,concededFirst:0,losingAtHalfTime:0,avgCornersFor:0,avgCornersAgainst:0};const i=n.reduce((f,S)=>f+S.goalsFor,0),r=n.reduce((f,S)=>f+S.goalsAgainst,0),a=n.filter(f=>f.goalsAgainst===0).length,d=n.filter(f=>f.isWin&&f.goalsAgainst===0).length,l=n.filter(f=>f.goalsFor>0).length,m=n.filter(f=>f.goalsFor===0).length,c=n.filter(f=>f.isLoss&&f.goalsFor===0).length,g=n.filter(f=>f.goalsAgainst>0).length,p=n.filter(f=>f.halfTimeGoalsFor!==null),y=p.length,T=p.filter(f=>{const S=f.halfTimeGoalsFor,I=f.goalsFor-S;return S>0&&I>0}).length,R=Q(e,t,o,"scored"),C=wt(e,t,o),F=p.filter(f=>f.halfTimeGoalsFor>f.halfTimeGoalsAgainst).length,N=p.filter(f=>{const S=f.halfTimeGoalsAgainst,I=f.goalsAgainst-S;return S>0&&I>0}).length,B=Q(e,t,o,"conceded"),$=p.filter(f=>f.halfTimeGoalsAgainst>f.halfTimeGoalsFor).length,D=n.filter(f=>f.cornersFor!==null),x=D.reduce((f,S)=>f+(S.cornersFor||0),0),W=D.reduce((f,S)=>f+(S.cornersAgainst||0),0);return{played:s,goalsForPerMatch:k(i,s),cleanSheets:A(a,s),wonToNil:A(d,s),scoringRate:A(l,s),scoredInBothHalves:A(T,y),scoredFirst:A(R,C),leadingAtHalfTime:A(F,y),goalsAgainstPerMatch:k(r,s),failedToScore:A(m,s),lostToNil:A(c,s),concedingRate:A(g,s),concededInBothHalves:A(N,y),concededFirst:A(B,C),losingAtHalfTime:A($,y),avgCornersFor:k(x,D.length),avgCornersAgainst:k(W,D.length)}}function to(e,t){return e.filter(o=>o.status?.type!=="FINISHED"?!1:o.competitorOne.id===t||o.competitorTwo.id===t).map(o=>{const n=o.competitorOne.id===t,s=parseInt(o.score?.competitorOne||"0"),i=parseInt(o.score?.competitorTwo||"0"),r=s+i,a=o.periods;let d=null;if(a&&Array.isArray(a)){const l=a.find(m=>m.type==="FIRST_HALF"||m.type==="1ST_HALF");if(l?.score){const m=parseInt(l.score.competitorOne||"0"),c=parseInt(l.score.competitorTwo||"0");d=m+c}}return{totalGoals:r,halfTimeGoals:d,isHome:n}})}function h(e,t){return e.length===0?0:e.filter(n=>n>t).length/e.length*100}function oo(e,t){const o=to(e,t),n=o.filter(c=>c.isHome),s=o.filter(c=>!c.isHome),i=o.map(c=>c.totalGoals),r=n.map(c=>c.totalGoals),a=s.map(c=>c.totalGoals),d=o.filter(c=>c.halfTimeGoals!==null).map(c=>c.halfTimeGoals),l=n.filter(c=>c.halfTimeGoals!==null).map(c=>c.halfTimeGoals),m=s.filter(c=>c.halfTimeGoals!==null).map(c=>c.halfTimeGoals);return{over05:{home:h(r,.5),total:h(i,.5),away:h(a,.5)},over15:{home:h(r,1.5),total:h(i,1.5),away:h(a,1.5)},over25:{home:h(r,2.5),total:h(i,2.5),away:h(a,2.5)},over35:{home:h(r,3.5),total:h(i,3.5),away:h(a,3.5)},over45:{home:h(r,4.5),total:h(i,4.5),away:h(a,4.5)},over55:{home:h(r,5.5),total:h(i,5.5),away:h(a,5.5)},over05HT:{home:h(l,.5),total:h(d,.5),away:h(m,.5)},over15HT:{home:h(l,1.5),total:h(d,1.5),away:h(m,1.5)},over25HT:{home:h(l,2.5),total:h(d,2.5),away:h(m,2.5)}}}function de(e,t){const o=e.competitorOne.id===t,n=e.competitorTwo.id===t;if(!o&&!n||!e.score)return null;const s=parseInt(o?e.score.competitorOne||"0":e.score.competitorTwo||"0"),i=parseInt(o?e.score.competitorTwo||"0":e.score.competitorOne||"0");let r;return s>i?r="W":s<i?r="L":r="D",{result:{score:`${s}:${i}`,result:r,isHome:o},isHome:o}}function no(e,t,o,n,s,i){const r=t?.entries.find(P=>P.competitor.id===e),a=o?.entries.find(P=>P.competitor.id===e),d=n?.entries.find(P=>P.competitor.id===e),l=s?.entries.find(P=>P.competitor.id===e),m=i?.entries.find(P=>P.competitor.id===e);if(!r)return null;const c=a?.stats?.goalsFor??0,g=d?.stats?.goalsFor??0,p=r?.stats?.goalsFor??0,y=l?.stats?.goalsAgainst??0,T=m?.stats?.goalsAgainst??0,R=r?.stats?.goalsAgainst??0,C=a?.stats?.played??0,F=d?.stats?.played??0,N=r?.stats?.played??0,B=N>0?p/N:0,$=N>0?R/N:0,D=B+$,x=C>0?c/C:0,W=F>0?g/F:0,f=C>0?y/C:0,S=F>0?T/F:0,I=x+f,ue=W+S;return{homeGoals:c,totalGoals:p,awayGoals:g,homeGamesPlayed:C,awayGamesPlayed:F,totalGamesPlayed:N,homeGoalsConceded:y,totalGoalsConceded:R,awayGoalsConceded:T,gfPerMatch:B,gaPerMatch:$,gfGaPerMatch:D,homeGfPerMatch:x,awayGfPerMatch:W,homeGaPerMatch:f,awayGaPerMatch:S,homeGfGaPerMatch:I,awayGfGaPerMatch:ue}}function _(e,t,o,n){const s=e.filter(r=>{const a=r.competitorOne.id===t,d=r.competitorTwo.id===t;return!(!a&&!d||r.status?.type!=="FINISHED"||n==="home"&&!a||n==="away"&&!d)}).sort((r,a)=>new Date(a.timing.kickoffTime).getTime()-new Date(r.timing.kickoffTime).getTime());if(s.length===0)return null;let i=0;for(const r of s){const a=r.competitorOne.id===t;if(o(r,t,a))i++;else break}return i>0?i:null}const v={win:(e,t,o)=>{const n=parseInt(o?e.score?.competitorOne||"0":e.score?.competitorTwo||"0"),s=parseInt(o?e.score?.competitorTwo||"0":e.score?.competitorOne||"0");return n>s},draw:e=>e.score?.competitorOne===e.score?.competitorTwo,loss:(e,t,o)=>{const n=parseInt(o?e.score?.competitorOne||"0":e.score?.competitorTwo||"0"),s=parseInt(o?e.score?.competitorTwo||"0":e.score?.competitorOne||"0");return n<s},noWin:(e,t,o)=>!v.win(e,t,o),noDraw:e=>!v.draw(e),noDefeat:(e,t,o)=>!v.loss(e,t,o),scored:(e,t,o)=>parseInt(o?e.score?.competitorOne||"0":e.score?.competitorTwo||"0")>=1,conceded:(e,t,o)=>parseInt(o?e.score?.competitorTwo||"0":e.score?.competitorOne||"0")>=1,noGoalScored:(e,t,o)=>!v.scored(e,t,o),noGoalConceded:(e,t,o)=>!v.conceded(e,t,o),over25:e=>parseInt(e.score?.competitorOne||"0")+parseInt(e.score?.competitorTwo||"0")>2,under25:e=>parseInt(e.score?.competitorOne||"0")+parseInt(e.score?.competitorTwo||"0")<3,scoredTwice:(e,t,o)=>parseInt(o?e.score?.competitorOne||"0":e.score?.competitorTwo||"0")>=2,concededTwice:(e,t,o)=>parseInt(o?e.score?.competitorTwo||"0":e.score?.competitorOne||"0")>=2};function H(e,t,o){return{win:_(e,t,v.win,o),draw:_(e,t,v.draw,o),loss:_(e,t,v.loss,o),noWin:_(e,t,v.noWin,o),noDraw:_(e,t,v.noDraw,o),noDefeat:_(e,t,v.noDefeat,o),scored:_(e,t,v.scored,o),conceded:_(e,t,v.conceded,o),noGoalScored:_(e,t,v.noGoalScored,o),noGoalConceded:_(e,t,v.noGoalConceded,o),over25:_(e,t,v.over25,o),under25:_(e,t,v.under25,o),scoredTwice:_(e,t,v.scoredTwice,o),concededTwice:_(e,t,v.concededTwice,o)}}function so(e,t,o){const n=H(e,t,"home"),s=H(e,t),i=H(e,o,"away"),r=H(e,o);return[{label:"Consecutive wins",homeTeam:{home:n.win,total:s.win},awayTeam:{total:r.win,home:i.win},colorType:"neutral"},{label:"Consecutive draws",homeTeam:{home:n.draw,total:s.draw},awayTeam:{total:r.draw,home:i.draw},colorType:"neutral"},{label:"Consecutive defeats",homeTeam:{home:n.loss,total:s.loss},awayTeam:{total:r.loss,home:i.loss},colorType:"neutral"},{label:"No win",homeTeam:{home:n.noWin,total:s.noWin},awayTeam:{total:r.noWin,home:i.noWin},colorType:"negative"},{label:"No draw",homeTeam:{home:n.noDraw,total:s.noDraw},awayTeam:{total:r.noDraw,home:i.noDraw},colorType:"neutral"},{label:"No defeat",homeTeam:{home:n.noDefeat,total:s.noDefeat},awayTeam:{total:r.noDefeat,home:i.noDefeat},colorType:"positive"},{label:"Scored at least once",homeTeam:{home:n.scored,total:s.scored},awayTeam:{total:r.scored,home:i.scored},colorType:"positive"},{label:"Conceded at least once",homeTeam:{home:n.conceded,total:s.conceded},awayTeam:{total:r.conceded,home:i.conceded},colorType:"negative"},{label:"No goal scored",homeTeam:{home:n.noGoalScored,total:s.noGoalScored},awayTeam:{total:r.noGoalScored,home:i.noGoalScored},colorType:"neutral"},{label:"No goal conceded",homeTeam:{home:n.noGoalConceded,total:s.noGoalConceded},awayTeam:{total:r.noGoalConceded,home:i.noGoalConceded},colorType:"neutral"},{label:"GS + GC over 2.5",homeTeam:{home:n.over25,total:s.over25},awayTeam:{total:r.over25,home:i.over25},colorType:"neutral"},{label:"GS + GC under 2.5",homeTeam:{home:n.under25,total:s.under25},awayTeam:{total:r.under25,home:i.under25},colorType:"neutral"},{label:"Scored at least twice",homeTeam:{home:n.scoredTwice,total:s.scoredTwice},awayTeam:{total:r.scoredTwice,home:i.scoredTwice},colorType:"positive"},{label:"Conceded at least twice",homeTeam:{home:n.concededTwice,total:s.concededTwice},awayTeam:{total:r.concededTwice,home:i.concededTwice},colorType:"negative"}]}function X(e,t){const o=new Map;return e.forEach(n=>{if(n.status?.type!=="FINISHED")return;const s=de(n,t);if(!s)return;const i=s.isHome?n.competitorTwo.id:n.competitorOne.id,r=s.isHome?n.competitorTwo:n.competitorOne,a=o.get(i)||{opponentId:i,opponentName:r.name,opponentLogo:r.assets?.logo};s.isHome?a.homeResult=s.result:a.awayResult=s.result,o.set(i,a)}),o}function io(e,t,o,n,s,i,r){const a=X(e,t),d=X(e,o),l=new Set([...a.keys(),...d.keys(),t,o]),m=[];return l.forEach(c=>{const g=a.get(c),p=d.get(c);if(!g&&!p&&c!==t&&c!==o)return;let y,T;c===t?(y=n,T=i):c===o?(y=s,T=r):(y=g?.opponentName||p?.opponentName||"",T=g?.opponentLogo||p?.opponentLogo),m.push({opponentId:c,opponentName:y,opponentLogo:T,homeTeamHome:g?.homeResult,homeTeamAway:g?.awayResult,awayTeamHome:p?.homeResult,awayTeamAway:p?.awayResult,isHomeTeamRow:c===t,isAwayTeamRow:c===o})}),m.sort((c,g)=>c.isHomeTeamRow?-1:g.isHomeTeamRow?1:c.isAwayTeamRow?-1:g.isAwayTeamRow?1:c.opponentName.localeCompare(g.opponentName))}exports.addProviderRef=u.addProviderRef;exports.getBatchMatchOdds=u.getBatchMatchOdds;exports.getConfig=u.getConfig;exports.getFootballCompetition=u.getFootballCompetition;exports.getFootballLivescore=u.getFootballLivescore;exports.getFootballMatch=u.getFootballMatch;exports.getFootballMatchCommentary=u.getFootballMatchCommentary;exports.getFootballMatchEvents=u.getFootballMatchEvents;exports.getFootballMatchLineups=u.getFootballMatchLineups;exports.getFootballMatchOdds=u.getFootballMatchOdds;exports.getFootballMatchStatistics=u.getFootballMatchStatistics;exports.getFootballMatches=u.getFootballMatches;exports.getFootballPlayerSeasonStatistics=u.getFootballPlayerSeasonStatistics;exports.getFootballSeasonDetails=u.getFootballSeasonDetails;exports.getFootballStandings=u.getFootballStandings;exports.getFootballTeam=u.getFootballTeam;exports.getFootballTeamSquad=u.getFootballTeamSquad;exports.getLeaderboardMatches=u.getLeaderboardMatches;exports.getLeaderboardTeamMatches=u.getLeaderboardTeamMatches;exports.getLeaderboardTemplate=u.getLeaderboardTemplate;exports.getProviderRefId=u.getProviderRefId;exports.isConfigured=u.isConfigured;exports.setConfig=u.setConfig;exports.toProviderRefArray=u.toProviderRefArray;exports.GOAL_EVENT_TYPES=ae;exports.aggregatePlayerStatisticsFromMatches=G;exports.analyzeMatch=ce;exports.calcAverage=k;exports.calcPercentage=A;exports.calculateH2HStats=Qt;exports.calculateStreak=_;exports.formatAsAverage=Vt;exports.formatPossessionPercentage=jt;exports.formatStatValue=Wt;exports.formatWithAverage=qt;exports.getActiveSeason=Ft;exports.getAllPlayerStatisticsFromMatches=ie;exports.getBasketballLivescore=Ne;exports.getFansUnitedFootballCompetition=rt;exports.getFansUnitedFootballCompetitions=ot;exports.getFansUnitedFootballMatch=Tt;exports.getFansUnitedFootballMatches=vt;exports.getFansUnitedFootballPlayer=yt;exports.getFansUnitedFootballPlayers=ht;exports.getFansUnitedFootballSearch=At;exports.getFansUnitedFootballTeam=dt;exports.getFansUnitedFootballTeams=ut;exports.getMatchResult=de;exports.getMostCardedPlayersFromMatches=ne;exports.getOpponentScore=Jt;exports.getRecentH2HMeetings=Xt;exports.getTeamFinishedMatches=Nt;exports.getTeamGoalStats=no;exports.getTeamHomeAwayStats=eo;exports.getTeamMostDecorated=It;exports.getTeamNextMatch=Mt;exports.getTeamOverUnderStats=oo;exports.getTeamPreviousMatch=Ot;exports.getTeamResultsTable=Pt;exports.getTeamScore=zt;exports.getTeamSeasonStatistics=Qe;exports.getTeamStreaks=H;exports.getTeamStreaksComparison=so;exports.getTeamTopAppearances=Lt;exports.getTeamTopAssisters=bt;exports.getTeamTopCleanSheets=Dt;exports.getTeamTopMinutesPlayed=Gt;exports.getTeamTopScorers=Et;exports.getTeamUpcomingMatches=Rt;exports.getTeamsCommonOpponents=io;exports.getTennisLivescore=ke;exports.getTopAssistersFromMatches=oe;exports.getTopGoalContributorsFromMatches=se;exports.getTopScorersFromMatches=te;exports.isMatchFinished=Kt;exports.isTeamAway=le;exports.isTeamHome=q;exports.isTeamInMatch=Yt;exports.search=Ke;exports.searchFootball=ve;exports.streakFilters=v;exports.useAllPlayerStatisticsFromMatches=$t;exports.useMostCardedPlayersFromMatches=Ut;exports.usePlayerStatistics=xt;exports.usePlayerStatisticsMap=re;exports.useTopAssistersFromMatches=Ht;exports.useTopGoalContributorsFromMatches=Bt;exports.useTopScorersFromMatches=kt;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("./matches-B-ZxR-B9.cjs"),L=require("react");function me(e){return{entityType:"tournament",id:e.id.toString(),name:e.name,slug:e.slug,gender:e.gender,type:e.type,region:e.region,country:{id:e.country.id.toString(),name:e.country.name,code:void 0,flag:e.country.url_flag??void 0,providerRef:u.toProviderRefArray(e.country.uuid)},assets:e.url_logo?{logo:e.url_logo}:void 0,providerRef:u.toProviderRefArray(e.uuid)}}function ge(e){return{entityType:"player",id:e.id.toString(),name:e.name,slug:e.slug,position:e.position,gender:e.gender,birthdate:e.birthdate,country:{id:e.country.id.toString(),name:e.country.name,code:void 0,flag:e.country.url_flag??void 0,providerRef:u.toProviderRefArray(e.country.uuid)},assets:e.url_thumb?{photo:e.url_thumb}:void 0,providerRef:u.toProviderRefArray(e.uuid)}}function fe(e){return{entityType:"team",id:e.id.toString(),name:e.name,slug:e.slug,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,type:e.type==="national"?"national":"club",gender:e.gender,country:{id:e.country.id.toString(),name:e.country.name,code:void 0,flag:e.country.url_flag??void 0,providerRef:u.toProviderRefArray(e.country.uuid)},assets:e.url_logo?{logo:e.url_logo}:void 0,providerRef:u.toProviderRefArray(e.uuid)}}function pe(e){return{entityType:"president",id:e.id.toString(),name:e.name,slug:e.slug,birthdate:e.birthdate??void 0,country:{id:e.country.id.toString(),name:e.country.name,code:void 0,flag:e.country.url_flag??void 0,providerRef:u.toProviderRefArray(e.country.uuid)},assets:e.url_thumb?{photo:e.url_thumb}:void 0,providerRef:u.toProviderRefArray(e.uuid)}}function ye(e){return{entityType:"venue",id:e.id.toString(),name:e.name,slug:e.slug,city:{id:e.city.id.toString(),name:e.city.name,country:{id:e.city.country.id.toString(),name:e.city.country.name,code:void 0,flag:e.city.country.url_flag??void 0,providerRef:u.toProviderRefArray(e.city.country.uuid)},providerRef:u.toProviderRefArray(e.city.uuid)},country:{id:e.country.id.toString(),name:e.country.name,code:void 0,flag:e.country.url_flag??void 0,providerRef:u.toProviderRefArray(e.country.uuid)},profile:{latitude:e.profile.lat,longitude:e.profile.lng,capacity:e.profile.capacity},assets:e.url_thumb?{image:e.url_thumb}:void 0,providerRef:u.toProviderRefArray(e.uuid)}}function he(e){return{entityType:"coach",id:e.id.toString(),name:e.name,slug:e.slug,birthdate:e.birthdate??void 0,country:{id:e.country.id.toString(),name:e.country.name,code:void 0,flag:e.country.url_flag??void 0,providerRef:u.toProviderRefArray(e.country.uuid)},assets:e.url_thumb?{photo:e.url_thumb}:void 0,providerRef:u.toProviderRefArray(e.uuid)}}function Te(e){switch(e.entity_type){case"tournament":return me(e);case"player":return ge(e);case"team":return fe(e);case"president":return pe(e);case"venue":return ye(e);case"coach":return he(e);default:throw new Error(`Unknown entity type: ${e.entity_type}`)}}async function ve(e,t){if(!e.query||e.query.trim()==="")return{results:[],query:e.query||""};const o=t||u.getConfig(),{sportal365Sports:n}=o,s=e.entityTypes&&e.entityTypes.length>0?e.entityTypes:["tournament","player","team","president","venue","coach"],i=await u.footballHttp.get({path:"/search",params:{query:e.query.trim(),entity_type:s.join(","),language_code:e.languageCode??n?.languageCode??"en"},headers:{"Accept-Language":e.languageCode??n?.languageCode??"en"},next:e.next,config:o});return!i||i.length===0?{results:[],query:e.query}:{results:i.map(Te),query:e.query}}const Se=u.createHttpClient(u.SPORTAL365_BASKETBALL_DOMAIN);function _e(e){const t={FINISHED:"finished",NOT_STARTED:"not_started",LIVE:"live",INTERRUPTED:"interrupted",CANCELLED:"cancelled",POSTPONED:"postponed",UNKNOWN:"not_started"},o=e.type.toUpperCase();return{code:t[o]??"not_started",name:e.name,shortName:e.short_name,type:o}}function z(e){return{id:e.id,name:e.name,threeLetterCode:e.three_letter_code,slug:e.slug,type:e.type==="national"?"national":"club",gender:e.gender}}function Ce(e){return{kickoffTime:new Date(e.game_time),currentMinute:e.minute}}function Ae(e){if(!e.season?.competition)return;const t=e.season.competition;return{id:t.id,name:t.name,slug:t.slug,type:"LEAGUE",gender:t.gender,region:t.region,country:t.country?{id:t.country.id,name:t.country.name}:void 0,season:{id:e.season.id,name:e.season.name,status:e.season.status},stage:e.stage?{id:e.stage.id,name:e.stage.name,type:e.stage.type}:void 0}}function Fe(e){if(e)return{id:e.id,name:e.name,slug:e.slug}}function Oe(e){if(!e||e.length===0)return;console.log("[livescore:basketball] raw score entries:",JSON.stringify(e,null,2));const t=e.filter(i=>i.result_type.category==="PERIOD");if(t.length===0){const i=e[0];return console.warn("[livescore:basketball] no PERIOD entries found in score, falling back to first entry:",JSON.stringify(i,null,2)),{competitorOne:String(i.home),competitorTwo:String(i.away),breakdown:{total:{competitorOne:String(i.home),competitorTwo:String(i.away)},periods:[]}}}let o=0,n=0;const s=[];for(const i of t)o+=i.home,n+=i.away,s.push({competitorOne:String(i.home),competitorTwo:String(i.away)});return{competitorOne:String(o),competitorTwo:String(n),breakdown:{total:{competitorOne:String(o),competitorTwo:String(n)},periods:s}}}function Me(e){if(e.winner)return{competitorId:e.winner.id}}function Re(e){return{id:e.id,slug:e.slug,status:_e(e.status),timing:Ce(e),competitorOne:z(e.home_team),competitorTwo:z(e.away_team),competition:Ae(e),round:e.round?{id:e.round.id,key:e.round.uuid,name:e.round.name,type:"REGULAR",providerRef:u.toProviderRefArray(e.round.uuid)}:void 0,venue:Fe(e.arena),score:Oe(e.score),winner:Me(e),coverage:e.coverage==="NOT_LIVE"?"UNKNOWN":e.coverage,providerRef:[{provider:"sportal365-basketball",id:e.id}]}}async function Ne(e,t){const o=t||u.getConfig(),{sportal365Sports:n}=o;return(await Se.get({path:"/games",params:{offset:"0",limit:"1000",competition_list:e?.competitionList,status_type:e?.statusTypes,odd_client:e?.oddClient??n?.oddClient,odd_type:e?.oddType,market_types:e?.marketTypes,language_code:e?.languageCode??n?.languageCode??"en"},headers:{"Accept-Language":e?.languageCode??n?.languageCode??"en"},next:e?.next,config:o})).games.map(Re)}const Pe=u.createHttpClient(u.SPORTAL365_TENNIS_DOMAIN);function be(e){const t={FINISHED:"finished",NOT_STARTED:"not_started",LIVE:"live",INTERRUPTED:"interrupted",CANCELLED:"cancelled",POSTPONED:"postponed"},o=e.type.toUpperCase();return{code:t[o]??"not_started",name:e.name,shortName:e.short_name,type:o}}function J(e){if(e.type==="PLAYER")return{id:e.id,name:e.name,shortName:e.short_name,threeLetterCode:e.three_letter_code,type:"player",country:e.details?.[0]?.country?{id:e.details[0].country.id,name:e.details[0].country.name}:void 0,gender:e.details?.[0]?.gender};if(e.type==="TEAM_DOUBLE"&&e.details&&e.details.length===2){const t={id:e.details[0].id,name:e.details[0].name,shortName:e.details[0].short_name,threeLetterCode:e.details[0].three_letter_code,type:"player",country:e.details[0].country?{id:e.details[0].country.id,name:e.details[0].country.name}:void 0,gender:e.details[0].gender},o={id:e.details[1].id,name:e.details[1].name,shortName:e.details[1].short_name,threeLetterCode:e.details[1].three_letter_code,type:"player",country:e.details[1].country?{id:e.details[1].country.id,name:e.details[1].country.name}:void 0,gender:e.details[1].gender};return{id:e.id,name:e.name,shortName:e.short_name,threeLetterCode:e.three_letter_code,type:"pair",players:[t,o]}}else return{id:e.id,name:e.name,shortName:e.short_name,threeLetterCode:e.three_letter_code,type:"national",country:e.details?.[0]?.country?{id:e.details[0].country.id,name:e.details[0].country.name}:void 0,gender:e.details?.[0]?.gender}}function Ee(e){return{kickoffTime:new Date(e.scheduled_start_time),phaseStartedAt:e.started_at?new Date(e.started_at):void 0,finishedAt:e.finished_at?new Date(e.finished_at):void 0}}function Le(e){if(!e.tournament)return;const t=e.tournament;return{id:t.competition?.id??t.id,name:t.competition?.name??t.name,slug:t.competition?.slug??t.slug,type:"TOURNAMENT",gender:t.gender,region:"INTERNATIONAL",country:t.country?{id:t.country.id,name:t.country.name}:void 0}}function De(e){if(!e.results||e.results.length===0)return;console.log("[livescore:tennis] raw results entries:",JSON.stringify(e.results,null,2));const t=e.results.filter(i=>/^SET_\d+$/i.test(i.type.code));if(t.length===0){console.warn("[livescore:tennis] no SET_n entries found in results, result_type codes:",e.results.map(i=>i.type.code));return}const o=[];let n=0,s=0;for(const i of t){const r=i.values.find(m=>m.position==="1"),a=i.values.find(m=>m.position==="2");if(!r||!a||r.value==null||a.value==null)continue;o.push({competitorOne:r.value,competitorTwo:a.value});const d=parseInt(r.value),l=parseInt(a.value);!isNaN(d)&&!isNaN(l)&&(d>l&&n++,l>d&&s++)}if(o.length!==0)return{competitorOne:String(n),competitorTwo:String(s),breakdown:{total:{competitorOne:String(n),competitorTwo:String(s)},periods:o}}}function Ge(e){const t=e.participants.find(o=>o.winner==="YES");if(t)return{competitorId:t.id}}function Ie(e){const t=e.participants.sort((o,n)=>o.position-n.position);return{id:e.id,slug:e.slug,status:be(e.status),timing:Ee(e),competitorOne:J(t[0]),competitorTwo:J(t[1]),competition:Le(e),round:e.round?{id:e.round.id,key:e.round.uuid,name:e.round.name,type:"REGULAR",providerRef:u.toProviderRefArray(e.round.uuid)}:void 0,score:De(e),winner:Ge(e),coverage:e.coverage?.type==="NOT_LIVE"?"UNKNOWN":e.coverage?.type,metadata:{matchType:e.type,bestOfSets:e.best_of_sets,surface:e.tournament?.surface,indoorOutdoor:e.tournament?.indoor_outdoor},providerRef:[{provider:"sportal365-tennis",id:e.id}]}}async function ke(e,t){const o=t||u.getConfig(),{sportal365Sports:n}=o;return(await Pe.get({path:"/matches/livescore",params:{date:e?.date,utc_offset:e?.utcOffset?.toString(),offset:"0",limit:"1000",type:e?.type,gender:e?.gender,status_type:e?.statusType,competition_list:e?.competitionList,odd_client:e?.oddClient??n?.oddClient,odd_type:e?.oddType,market_types:e?.marketTypes,language_code:e?.languageCode??n?.languageCode??"en"},headers:{"Accept-Language":e?.languageCode??n?.languageCode??"en"},next:e?.next,config:o})).matches.map(Ie)}const He=u.createHttpClient(u.SPORTAL365_SPORTS_SEARCH_DOMAIN);function O(e){return{language:e.language,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0}}function M(e){if(!(!e||!e.url))return{url:e.url}}function E(e){if(e)return{id:e.id,legacyId:e.legacy_id??void 0,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,translations:e.translations.map(O),displayAsset:M(e.display_asset),slug:e.slug,providerRef:e.id}}function j(e){return{entityType:"team",id:e.id,legacyId:e.legacy_id??void 0,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,translations:e.translations.map(O),displayAsset:M(e.display_asset),slug:e.slug,tagScore:e.tag_score??void 0,sport:e.sport,country:E(e.country),gender:e.gender,competitionIds:e.competition_ids,type:e.type,national:e.national,undecided:e.undecided,providerRef:e.id}}function Z(e){return{entityType:"city",id:e.id,legacyId:e.legacy_id??void 0,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,translations:e.translations.map(O),displayAsset:M(e.display_asset),slug:e.slug,tagScore:e.tag_score??void 0,sport:e.sport,country:E(e.country),providerRef:e.id}}function Ue(e){return{entityType:"horse",id:e.id,legacyId:e.legacy_id??void 0,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,translations:e.translations.map(O),displayAsset:M(e.display_asset),slug:e.slug,tagScore:e.tag_score??void 0,sport:e.sport,country:E(e.country),gender:e.gender,providerRef:e.id}}function Be(e){return{entityType:"player",id:e.id,legacyId:e.legacy_id??void 0,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,translations:e.translations.map(O),displayAsset:M(e.display_asset),slug:e.slug,tagScore:e.tag_score??void 0,sport:e.sport,country:E(e.country),gender:e.gender,birthdate:e.birthdate??void 0,position:e.position??void 0,providerRef:e.id}}function $e(e){return{entityType:"coach",id:e.id,legacyId:e.legacy_id??void 0,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,translations:e.translations.map(O),displayAsset:M(e.display_asset),slug:e.slug,tagScore:e.tag_score??void 0,sport:e.sport,country:E(e.country),gender:e.gender,birthdate:e.birthdate??void 0,providerRef:e.id}}function xe(e){return{entityType:"referee",id:e.id,legacyId:e.legacy_id??void 0,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,translations:e.translations.map(O),displayAsset:M(e.display_asset),slug:e.slug,tagScore:e.tag_score??void 0,sport:e.sport,country:E(e.country),gender:e.gender,birthdate:e.birthdate??void 0,providerRef:e.id}}function We(e){return{entityType:"venue",id:e.id,legacyId:e.legacy_id??void 0,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,translations:e.translations.map(O),displayAsset:M(e.display_asset),slug:e.slug,tagScore:e.tag_score??void 0,sport:e.sport,country:E(e.country),city:e.city?Z(e.city):void 0,providerRef:e.id}}function qe(e){return{entityType:e.entity_type,id:e.id,legacyId:e.legacy_id??void 0,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,translations:e.translations.map(O),displayAsset:M(e.display_asset),slug:e.slug,tagScore:e.tag_score??void 0,sport:e.sport,country:E(e.country),gender:e.gender,type:e.type??void 0,region:e.region??void 0,providerRef:e.id}}function Ve(e){return{entityType:"match",id:e.id,legacyId:e.legacy_id??void 0,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,translations:e.translations.map(O),displayAsset:M(e.display_asset),slug:e.slug,tagScore:e.tag_score??void 0,sport:e.sport,competitionId:e.competition_id??void 0,startTime:e.start_time??void 0,homeTeam:e.home_team?j(e.home_team):void 0,awayTeam:e.away_team?j(e.away_team):void 0,providerRef:e.id}}function je(e){return{entityType:"country",id:e.id,legacyId:e.legacy_id??void 0,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,translations:e.translations.map(O),displayAsset:M(e.display_asset),slug:e.slug,tagScore:e.tag_score??void 0,sport:e.sport,providerRef:e.id}}function Ye(e){switch(e.entity_type){case"team":return j(e);case"city":return Z(e);case"horse":return Ue(e);case"player":return Be(e);case"coach":return $e(e);case"referee":return xe(e);case"venue":return We(e);case"tournament":case"competition":return qe(e);case"match":return Ve(e);case"country":return je(e);default:{const t=e;throw new Error(`Unknown entity type: ${t.entity_type}`)}}}async function Ke(e={},t){const o=t??u.getConfig(),n={};e.name&&(n.name=e.name),e.entityTypes&&e.entityTypes.length>0&&(n.entity_type=e.entityTypes.join(",")),e.sports&&e.sports.length>0&&(n.sport=e.sports.join(",")),e.eventStartTime&&(n.event_start_time=e.eventStartTime),e.ids&&e.ids.length>0&&(n.ids=e.ids.join(",")),e.competitionIds&&e.competitionIds.length>0&&(n.competition_ids=e.competitionIds.join(",")),e.domain&&(n.domain=e.domain),e.inputLanguage&&(n.input_language=e.inputLanguage),e.translationLanguage&&(n.translation_language=e.translationLanguage),e.limit!==void 0&&(n.limit=e.limit.toString()),e.offset!==void 0&&(n.offset=e.offset.toString());const s=await He.get({path:"/suggest",params:n,next:e.next,config:o});return!s.results||s.results.length===0?{results:[],query:e.name}:{results:s.results.map(Ye),query:e.name}}const ze=u.createHttpClient(u.SPORTAL365_STATISTICS_DOMAIN);function Je(e,t){return{teamId:e.id,teamName:e.name,seasonId:t,statistics:e.statistics.map(o=>({key:o.id,value:o.value,label:o.name}))}}async function Qe(e,t){const o=t||u.getConfig(),n=e.next??{revalidate:600},s=await ze.get({path:"/statistics/aggregate",params:{participant_ids:e.teamId,season_ids:e.seasonId,participant_type:"TEAM"},next:n,config:o});if(!s.data||s.data.length===0)throw new Error(`No statistics found for team ${e.teamId} in season ${e.seasonId}`);return Je(s.data[0],e.seasonId)}function Xe(e){const t=e.replace(/\/$/,"");function o(n){return`${t}${n}`}return{async get(n){const s=n.config||u.getConfig(),{fansUnited:i}=s;if(!i)throw new Error("Fans United configuration is missing. Add 'fansUnited' with 'apiKey' and 'clientId' to your config.");if(!i.apiKey||!i.clientId)throw new Error("Fans United configuration requires both 'apiKey' and 'clientId'");const r=new URL(o(n.path));if(r.searchParams.set("key",i.apiKey),r.searchParams.set("client_id",i.clientId),n.params)for(const[m,c]of Object.entries(n.params))c!==void 0&&(Array.isArray(c)?c.length>0&&r.searchParams.set(m,c.join(",")):r.searchParams.set(m,c));const a=3e4,d=new URL(r.toString());d.searchParams.delete("key"),d.searchParams.delete("client_id"),console.log("🔗 FansUnited API URL:",d.toString());const l=await fetch(r.toString(),{method:"GET",headers:{Accept:"application/json","Content-Type":"application/json",...n.headers},signal:AbortSignal.timeout(a),...n.next&&{next:n.next}});if(!l.ok){let m=`Fans United API error: ${l.status} ${l.statusText}`;try{const c=await l.text();c&&(m+=` - ${c}`)}catch(c){console.error("[Fans United HTTP] Failed to read error response body:",{error:c instanceof Error?c.message:String(c),status:l.status,statusText:l.statusText})}throw new Error(m)}return l.json()}}}const Ze="https://football.fansunitedapi.com",b=Xe(Ze);function we(e){return{id:String(e.id),name:e.name,active:e.active,providerRef:[{provider:"fansunited",id:String(e.id)}]}}function et(e){const t={id:String(e.id),name:e.name,shortName:e.short_name,slug:e.slug,type:e.type||"LEAGUE",region:e.region,gender:e.gender,providerRef:[{provider:"fansunited",id:String(e.id)}]};return e.country&&(t.country={id:String(e.country.id),name:e.country.name,code:e.country.code,flag:e.country.assets?.flag,providerRef:[{provider:"fansunited",id:String(e.country.id)}]}),e.assets?.logo&&(t.assets={logo:e.assets.logo}),e.seasons&&e.seasons.length>0&&(t.seasons=e.seasons.map(we)),e.current_season&&(t.season={id:String(e.current_season.id),name:e.current_season.name,status:e.current_season.active?"ACTIVE":"INACTIVE"}),t}function tt(e){return e.map(et)}async function ot(e,t){const o={};e?.lang?o.lang=e.lang:o.lang="EN",e?.sortField&&(o.sort_field=e.sortField),e?.sortOrder&&(o.sort_order=e.sortOrder),e?.page!==void 0&&(o.page=String(e.page)),e?.perPage!==void 0&&(o.per_page=String(e.perPage)),e?.countryId!==void 0&&(o.country_id=String(e.countryId)),e?.active!==void 0&&(o.active=e.active?"1":"0");const n=await b.get({path:"/v1/competitions",params:o,config:t,next:e?.next}),s=n.data.map(l=>l.id),i=new Set(s);s.length!==i.size&&console.warn("⚠️ API returned duplicate competitions!");const r=tt(n.data),a=new Set,d=r.filter(l=>a.has(l.id)?!1:(a.add(l.id),!0));return r.length!==d.length&&console.warn(`Removed ${r.length-d.length} duplicate competitions`),d}function nt(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 st(e){return{id:e.id,name:e.name,type:e.type?.toUpperCase()||"LEAGUE",gender:e.gender?.toUpperCase(),country:e.country?nt(e.country):void 0,assets:e.assets?.logo?{logo:e.assets.logo}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function it(e){return st(e.data)}async function rt(e,t,o){const n=o||u.getConfig(),s={};t?.lang&&(s.lang=t.lang);const i=await b.get({path:`/v1/competitions/${e}`,params:s,next:t?.next,config:n});return it(i)}function at(e){return{id:e.id,name:e.name,code:e.country_code,flag:e.assets?.flag,providerRef:[{provider:"fansunited",id:e.id}]}}function w(e){return{id:e.id,name:e.name,shortName:e.short_name||void 0,threeLetterCode:e.code,type:e.national?"national":"club",gender:e.gender?e.gender.toUpperCase():void 0,country:e.country?at(e.country):void 0,assets:e.assets?.logo?{logo:e.assets.logo}:void 0,metadata:e.colors?{shirtColors:e.colors.primary?[{type:"home",colorCode:e.colors.primary}]:void 0}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function ct(e){return w(e.data)}function lt(e){return e.data.map(w)}async function dt(e,t,o){const n=o||u.getConfig(),s={};t?.lang&&(s.lang=t.lang);const i=await b.get({path:`/v1/teams/${e}`,params:s,next:t?.next,config:n});return ct(i)}async function ut(e,t){const o=t||u.getConfig(),n={};e?.lang&&(n.lang=e.lang),e?.teamIds&&(n.team_ids=e.teamIds),e?.countryId&&(n.country_id=e.countryId),e?.name&&(n.name=e.name),e?.scope&&(n.scope=e.scope),e?.national!==void 0&&(n.national=String(e.national)),e?.gender&&(n.gender=e.gender),e?.limit!==void 0&&(n.limit=String(e.limit)),e?.page!==void 0&&(n.page=String(e.page)),e?.sortField&&(n.sort_field=e.sortField),e?.sortOrder&&(n.sort_order=e.sortOrder);const s=await b.get({path:"/v1/teams",params:n,next:e?.next,config:o});return lt(s)}function Y(e){return{id:e.id,name:e.name,code:e.country_code,flag:e.assets?.flag,providerRef:[{provider:"fansunited",id:e.id}]}}function mt(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?Y(e.country):void 0,assets:e.assets?.logo?{logo:e.assets.logo}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function gt(e){return{id:e.id,name:e.name,type:e.type?.toUpperCase()||"LEAGUE",gender:e.gender?.toUpperCase(),country:e.country?Y(e.country):void 0,assets:e.assets?.logo?{logo:e.assets.logo}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function ee(e){return{type:"player",id:e.id,name:e.name,position:e.position,birthdate:e.birth_date,country:e.country?Y(e.country):void 0,assets:e.assets?.headshot?{photo:e.assets.headshot}:void 0,teams:e.teams?.map(mt),competitions:e.competitions?.map(gt),providerRef:[{provider:"fansunited",id:e.id}]}}function ft(e){return ee(e.data)}function pt(e){return e.data.map(ee)}async function yt(e,t,o){const n=o||u.getConfig(),s={};t?.lang&&(s.lang=t.lang);const i=await b.get({path:`/v1/players/${e}`,params:s,next:t?.next,config:n});return ft(i)}async function ht(e,t){const o=t||u.getConfig(),n={};e?.lang&&(n.lang=e.lang),e?.playerIds&&(n.player_ids=e.playerIds),e?.countryId&&(n.country_id=e.countryId),e?.name&&(n.name=e.name),e?.scope&&(n.scope=e.scope),e?.limit!==void 0&&(n.limit=String(e.limit)),e?.page!==void 0&&(n.page=String(e.page)),e?.sortField&&(n.sort_field=e.sortField),e?.sortOrder&&(n.sort_order=e.sortOrder);const s=await b.get({path:"/v1/players",params:n,next:e?.next,config:o});return pt(s)}async function Tt(e,t,o){const n=o||u.getConfig(),s={};t?.lang&&(s.lang=t.lang);const i=await b.get({path:`/v1/matches/${e}`,params:s,next:t?.next,config:n});return u.transformMatch(i)}async function vt(e,t){const o=t||u.getConfig(),n={};e?.lang&&(n.lang=e.lang),e?.competitions&&(n.competitions=e.competitions),e?.countries&&(n.countries=e.countries),e?.fromDate&&(n.from_date=e.fromDate),e?.toDate&&(n.to_date=e.toDate),e?.matches&&(n.matches=e.matches),e?.teams&&(n.teams=e.teams),e?.status&&(n.status=e.status),e?.limit!==void 0&&(n.limit=String(e.limit)),e?.page!==void 0&&(n.page=String(e.page)),e?.sortField&&(n.sort_field=e.sortField),e?.sortOrder&&(n.sort_order=e.sortOrder),e?.showDeleted!==void 0&&(n.show_deleted=e.showDeleted?"true":"false");const s=await b.get({path:"/v1/matches",params:n,next:e?.next,config:o});return u.transformMatches(s)}function K(e){return{id:e.id,name:e.name,code:e.country_code,flag:e.assets?.flag||void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function St(e){return{id:e.id,name:e.name,shortName:e.short_name||void 0,type:e.type||"LEAGUE",region:e.region,gender:e.gender?.toUpperCase(),country:e.country?K(e.country):void 0,assets:e.assets?.logo?{logo:e.assets.logo}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function _t(e){return{type:"player",id:e.id,name:e.name,position:e.position||void 0,gender:e.gender?.toUpperCase(),birthdate:e.birth_date||void 0,country:e.country?K(e.country):void 0,assets:e.assets?.headshot?{photo:e.assets.headshot}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function Ct(e){return{type:e.national?"national":"club",id:e.id,name:e.name,shortName:e.short_name||void 0,threeLetterCode:e.code||void 0,gender:e.gender?.toUpperCase(),country:e.country?K(e.country):void 0,assets:e.assets?.logo?{logo:e.assets.logo}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function V(e){switch(e.entity_type){case"competition":{const t=St(e);return{source:"FOOTBALL",entityType:"competition",entityId:e.id,entityData:t}}case"player":{const t=_t(e);return{source:"FOOTBALL",entityType:"player",entityId:e.id,entityData:t}}case"team":{const t=Ct(e);return{source:"FOOTBALL",entityType:"team",entityId:e.id,entityData:t}}case"venue":case"coach":return null;default:throw new Error(`Unknown entity type: ${e.entity_type}`)}}async function At(e,t){if(!e.query||e.query.trim()==="")return[];const o=t||u.getConfig(),n={q:e.query.trim()},i=(e.entityTypes&&e.entityTypes.length>0?e.entityTypes:["competition","team","player"]).map(d=>{switch(d){case"team":return"teams";case"player":return"players";case"competition":return"competitions";default:return d}});n.entities=i.join(","),e.lang&&(n.lang=e.lang),e.limit&&(n.limit=String(e.limit));const r=await b.get({path:"/v1/search",params:n,next:e.next,config:o}),a=[];return r.data&&(r.data.competitions&&r.data.competitions.forEach(d=>{const l=V({...d,entity_type:"competition"});l&&a.push(l)}),r.data.teams&&r.data.teams.forEach(d=>{const l=V({...d,entity_type:"team"});l&&a.push(l)}),r.data.players&&r.data.players.forEach(d=>{const l=V({...d,entity_type:"player"});l&&a.push(l)})),a}function Ft(e){return!e.seasons||e.seasons.length===0?void 0:e.seasons.find(o=>o.active)??e.seasons[0]}function Ot(e,t){const o=new Date,n=t.filter(s=>{const i=s.competitorOne.id===e||s.competitorTwo.id===e,r=s.status.type==="NOT_STARTED",a=new Date(s.timing.kickoffTime)>=o;return i&&r&&a});return n.sort((s,i)=>new Date(s.timing.kickoffTime).getTime()-new Date(i.timing.kickoffTime).getTime()),n[0]}function Mt(e,t){const o=new Date,n=t.filter(s=>{const i=s.competitorOne.id===e||s.competitorTwo.id===e,r=s.status.type==="FINISHED",a=new Date(s.timing.kickoffTime)<=o;return i&&r&&a});return n.sort((s,i)=>new Date(i.timing.kickoffTime).getTime()-new Date(s.timing.kickoffTime).getTime()),n[0]}function Rt(e,t){const o=new Date;return t.filter(s=>{const i=s.competitorOne.id===e||s.competitorTwo.id===e,r=s.status.type==="NOT_STARTED"||s.status.type==="LIVE",a=new Date(s.timing.kickoffTime)>=o||s.status.type==="LIVE";return i&&r&&a}).sort((s,i)=>new Date(s.timing.kickoffTime).getTime()-new Date(i.timing.kickoffTime).getTime())}function Nt(e,t){const o=new Date;return t.filter(s=>{const i=s.competitorOne.id===e||s.competitorTwo.id===e,r=s.status.type==="FINISHED",a=new Date(s.timing.kickoffTime)<=o;return i&&r&&a}).sort((s,i)=>new Date(i.timing.kickoffTime).getTime()-new Date(s.timing.kickoffTime).getTime())}function Pt(e,t,o){const n=o.filter(r=>r.status.type==="FINISHED"),s=o.filter(r=>r.status.type==="NOT_STARTED"||r.status.type==="POSTPONED"),i=t.entries.map(r=>{const a=r.competitor.id,d=n.filter(g=>g.competitorOne.id===e&&g.competitorTwo.id===a||g.competitorOne.id===a&&g.competitorTwo.id===e),l=s.filter(g=>g.competitorOne.id===e&&g.competitorTwo.id===a||g.competitorOne.id===a&&g.competitorTwo.id===e);let m,c;return d.forEach(g=>{const p=g.competitorOne.id===e,y=parseInt(g.score?.competitorOne??"0"),T=parseInt(g.score?.competitorTwo??"0"),R=p?y:T,C=p?T:y;let F;R>C?F="W":R===C?F="D":F="L";const N={result:F,score:`${y} - ${T}`,date:g.timing.kickoffTime,matchId:g.id,isUpcoming:!1};p?m=N:c=N}),l.forEach(g=>{const p=g.competitorOne.id===e;p&&!m?m={date:g.timing.kickoffTime,matchId:g.id,isUpcoming:!0}:!p&&!c&&(c={date:g.timing.kickoffTime,matchId:g.id,isUpcoming:!0})}),{rank:r.rank,teamId:r.competitor.id,teamName:r.competitor.name,teamShortName:r.competitor.shortName,teamLogo:r.competitor.logo,gamesPlayed:r.stats.played??0,points:r.stats.points??0,homeResult:m,awayResult:c}});return{teamId:e,rows:i}}function bt(e,t=10){return e.players.filter(o=>(o.seasonStatistics?.goals??0)>0).sort((o,n)=>{const s=o.seasonStatistics?.goals??0,i=n.seasonStatistics?.goals??0;if(i!==s)return i-s;const r=o.seasonStatistics?.assists??0;return(n.seasonStatistics?.assists??0)-r}).slice(0,t)}function Et(e,t=10){return e.players.filter(o=>(o.seasonStatistics?.assists??0)>0).sort((o,n)=>{const s=o.seasonStatistics?.assists??0,i=n.seasonStatistics?.assists??0;if(i!==s)return i-s;const r=o.seasonStatistics?.goals??0;return(n.seasonStatistics?.goals??0)-r}).slice(0,t)}function Lt(e,t=10){return e.players.filter(o=>(o.seasonStatistics?.appearances??0)>0).sort((o,n)=>{const s=o.seasonStatistics?.appearances??0,i=n.seasonStatistics?.appearances??0;if(i!==s)return i-s;const r=o.seasonStatistics?.minutes??0;return(n.seasonStatistics?.minutes??0)-r}).slice(0,t)}function Dt(e,t=10){return e.players.filter(o=>(o.seasonStatistics?.minutes??0)>0).sort((o,n)=>{const s=o.seasonStatistics?.minutes??0,i=n.seasonStatistics?.minutes??0;if(i!==s)return i-s;const r=o.seasonStatistics?.appearances??0;return(n.seasonStatistics?.appearances??0)-r}).slice(0,t)}function Gt(e,t=10){return e.players.filter(o=>(o.seasonStatistics?.cleansheets??0)>0).sort((o,n)=>{const s=o.seasonStatistics?.cleansheets??0,i=n.seasonStatistics?.cleansheets??0;if(i!==s)return i-s;const r=o.seasonStatistics?.appearances??0;return(n.seasonStatistics?.appearances??0)-r}).slice(0,t)}function It(e,t=10){return e.players.filter(o=>{const n=o.seasonStatistics?.yellowCards??0,s=o.seasonStatistics?.redCards??0;return n+s>0}).sort((o,n)=>{const s=o.seasonStatistics?.yellowCards??0,i=o.seasonStatistics?.redCards??0,r=n.seasonStatistics?.yellowCards??0,a=n.seasonStatistics?.redCards??0,d=s+i*3,l=r+a*3;return l!==d?l-d:a!==i?a-i:r-s}).slice(0,t)}function D(e){const t=new Map,o=new Map;return e.forEach(n=>{!n.mainEvents||n.mainEvents.length===0||n.mainEvents.forEach(s=>{if(s.primaryPlayer){const i=s.primaryPlayer.id;t.has(i)||t.set(i,{playerId:s.primaryPlayer.id,seasonId:"",teamId:"",goals:0,assists:0,yellowCards:0,redCards:0,appearances:0});const r=t.get(i);o.has(i)||o.set(i,new Set),o.get(i).add(n.id),(s.type==="GOAL"||s.type==="PENALTY_GOAL")&&(r.goals=(r.goals??0)+1),s.type==="YELLOW_CARD"&&(r.yellowCards=(r.yellowCards??0)+1),(s.type==="RED_CARD"||s.type==="YELLOW_RED_CARD")&&(r.redCards=(r.redCards??0)+1)}if(s.secondaryPlayer&&(s.type==="GOAL"||s.type==="PENALTY_GOAL")){const i=s.secondaryPlayer.id;t.has(i)||t.set(i,{playerId:s.secondaryPlayer.id,seasonId:"",teamId:"",goals:0,assists:0,yellowCards:0,redCards:0,appearances:0});const r=t.get(i);r.assists=(r.assists??0)+1,o.has(i)||o.set(i,new Set),o.get(i).add(n.id)}})}),o.forEach((n,s)=>{const i=t.get(s);i&&i.appearances!==void 0&&(i.appearances=n.size)}),t}function U(e){return Array.from(e.values()).map(t=>({...t,totalCards:(t.yellowCards??0)+(t.redCards??0)}))}function te(e,t=10){const o=D(e);return U(o).filter(s=>(s.goals??0)>0).sort((s,i)=>{const r=s.goals??0,a=i.goals??0;if(a!==r)return a-r;const d=s.assists??0;return(i.assists??0)-d}).slice(0,t)}function oe(e,t=10){const o=D(e);return U(o).filter(s=>(s.assists??0)>0).sort((s,i)=>{const r=s.assists??0,a=i.assists??0;if(a!==r)return a-r;const d=s.goals??0;return(i.goals??0)-d}).slice(0,t)}function ne(e,t=10){const o=D(e);return U(o).filter(s=>(s.totalCards??0)>0).sort((s,i)=>{const r=(s.yellowCards??0)+(s.redCards??0)*3,a=(i.yellowCards??0)+(i.redCards??0)*3;if(a!==r)return a-r;const d=s.redCards??0,l=i.redCards??0;if(l!==d)return l-d;const m=s.yellowCards??0;return(i.yellowCards??0)-m}).slice(0,t)}function se(e,t=10){const o=D(e);return U(o).filter(s=>(s.goals??0)+(s.assists??0)>0).sort((s,i)=>{const r=(s.goals??0)+(s.assists??0),a=(i.goals??0)+(i.assists??0);if(a!==r)return a-r;const d=s.goals??0,l=i.goals??0;if(l!==d)return l-d;const m=s.assists??0;return(i.assists??0)-m}).slice(0,t)}function ie(e){const t=D(e);return U(t).sort((n,s)=>{const i=n.appearances??0,r=s.appearances??0;if(r!==i)return r-i;const a=(n.goals??0)+(n.assists??0);return(s.goals??0)+(s.assists??0)-a})}function kt(e,t=10){return L.useMemo(()=>te(e,t),[e,t])}function Ht(e,t=10){return L.useMemo(()=>oe(e,t),[e,t])}function Ut(e,t=10){return L.useMemo(()=>ne(e,t),[e,t])}function Bt(e,t=10){return L.useMemo(()=>se(e,t),[e,t])}function $t(e){return L.useMemo(()=>ie(e),[e])}function re(e){return L.useMemo(()=>D(e),[e])}function xt(e,t){const o=re(e);return L.useMemo(()=>o.get(t),[o,t])}const ae=["GOAL","PENALTY_GOAL","OWN_GOAL"];function A(e,t){return t>0?e/t*100:0}function k(e,t){return t>0?e/t:0}function Wt(e,t=!1,o=2){return t?`${Math.round(e)}%`:Number.isInteger(e)?e.toString():e.toFixed(o)}function qt(e,t){const o=typeof e=="string"?parseFloat(e):e;if(isNaN(o)||t===0)return"0";const n=(o/t).toFixed(1);return`${o} (${n} avg)`}function Vt(e,t){const o=typeof e=="string"?parseFloat(e):e;return isNaN(o)||t===0?"0.0":(o/t).toFixed(1)}function jt(e){const t=parseFloat(e);return isNaN(t)?"0%":`${Math.round(t)}%`}function ce(e,t,o){if(e.status?.type!=="FINISHED"||!e.score)return null;const n=parseInt(e.score.competitorOne||"0"),s=parseInt(e.score.competitorTwo||"0"),i=o?n:s,r=o?s:n;let a=null,d=null;const l=e.score.breakdown?.halfTime;if(l){const p=parseInt(l.competitorOne||"0"),y=parseInt(l.competitorTwo||"0");a=o?p:y,d=o?y:p}const m=e.statistics;let c=null,g=null;if(m){const p=m.find?.(y=>y.type==="CORNERS");p&&(c=o?p.competitorOne:p.competitorTwo,g=o?p.competitorTwo:p.competitorOne)}return{goalsFor:i,goalsAgainst:r,halfTimeGoalsFor:a,halfTimeGoalsAgainst:d,cornersFor:c,cornersAgainst:g,isWin:i>r,isDraw:i===r,isLoss:i<r}}function q(e,t){return e.competitorOne.id===t}function le(e,t){return e.competitorTwo.id===t}function Yt(e,t){return q(e,t)||le(e,t)}function Kt(e){return e.status?.type==="FINISHED"}function zt(e,t){const o=q(e,t);return parseInt(o?e.score?.competitorOne||"0":e.score?.competitorTwo||"0")}function Jt(e,t){const o=q(e,t);return parseInt(o?e.score?.competitorTwo||"0":e.score?.competitorOne||"0")}function Qt(e,t,o){const n=e.filter(m=>{if(m.status?.type!=="FINISHED"||!m.score)return!1;const c=m.competitorOne.id===t||m.competitorTwo.id===t,g=m.competitorOne.id===o||m.competitorTwo.id===o;return c&&g});let s=0,i=0,r=0,a=0,d=0;n.forEach(m=>{const c=parseInt(m.score?.competitorOne||"0"),g=parseInt(m.score?.competitorTwo||"0"),p=m.competitorOne.id===t,y=p?c:g,T=p?g:c;a+=y,d+=T,y>T?s++:T>y?i++:r++});const l=n.length;return{totalMatches:l,homeTeamWins:s,awayTeamWins:i,draws:r,homeTeamGoals:a,awayTeamGoals:d,homeTeamWinPercentage:l>0?s/l*100:0,awayTeamWinPercentage:l>0?i/l*100:0,drawPercentage:l>0?r/l*100:0,homeTeamAvgGoals:l>0?a/l:0,awayTeamAvgGoals:l>0?d/l:0}}function Xt(e,t,o,n=5){return e.filter(i=>{if(i.status?.type!=="FINISHED"||!i.score)return!1;const r=i.competitorOne.id===t||i.competitorTwo.id===t,a=i.competitorOne.id===o||i.competitorTwo.id===o;return r&&a}).sort((i,r)=>new Date(r.timing.kickoffTime).getTime()-new Date(i.timing.kickoffTime).getTime()).slice(0,n).map(i=>{const r=parseInt(i.score?.competitorOne||"0"),a=parseInt(i.score?.competitorTwo||"0"),d=i.competitorOne.id===t,l=d?r:a,m=d?a:r;let c;return l>m?c="home":m>l?c="away":c="draw",{id:i.id,date:new Date(i.timing.kickoffTime).toLocaleDateString("en-GB",{day:"numeric",month:"short",year:"numeric"}),homeTeamName:i.competitorOne.name,awayTeamName:i.competitorTwo.name,homeTeamLogo:i.competitorOne.assets?.logo,awayTeamLogo:i.competitorTwo.assets?.logo,homeScore:r,awayScore:a,venue:i.venue?.name,winner:c}})}function Zt(e,t,o){return e.filter(n=>{const s=n.competitorOne.id===t,i=n.competitorTwo.id===t;return!s&&!i?!1:o==="home"?s:i}).map(n=>{const s=n.competitorOne.id===t;return ce(n,t,s)}).filter(n=>n!==null)}function Q(e,t,o,n){let s=0;for(const i of e){const r=i.competitorOne.id===t,a=i.competitorTwo.id===t;if(!r&&!a||o==="home"&&!r||o==="away"&&!a||i.status?.type!=="FINISHED")continue;const d=i.mainEvents;if(!d||!Array.isArray(d))continue;const l=d.filter(y=>y.type&&ae.includes(y.type)).sort((y,T)=>{const R=y.minute??0,C=T.minute??0;return R!==C?R-C:(y.injuryMinute??0)-(T.injuryMinute??0)});if(l.length===0)continue;const m=l[0],c=r?"ONE":"TWO",g=m.type==="OWN_GOAL";let p;g?p=m.competitorPosition!==c:p=m.competitorPosition===c,(n==="scored"&&p||n==="conceded"&&!p)&&s++}return s}function wt(e,t,o){let n=0;for(const s of e){const i=s.competitorOne.id===t,r=s.competitorTwo.id===t;if(!i&&!r||o==="home"&&!i||o==="away"&&!r||s.status?.type!=="FINISHED")continue;const a=s.mainEvents;a&&Array.isArray(a)&&n++}return n}function eo(e,t,o){const n=Zt(e,t,o),s=n.length;if(s===0)return{played:0,goalsForPerMatch:0,cleanSheets:0,wonToNil:0,scoringRate:0,scoredInBothHalves:0,scoredFirst:0,leadingAtHalfTime:0,goalsAgainstPerMatch:0,failedToScore:0,lostToNil:0,concedingRate:0,concededInBothHalves:0,concededFirst:0,losingAtHalfTime:0,avgCornersFor:0,avgCornersAgainst:0};const i=n.reduce((f,S)=>f+S.goalsFor,0),r=n.reduce((f,S)=>f+S.goalsAgainst,0),a=n.filter(f=>f.goalsAgainst===0).length,d=n.filter(f=>f.isWin&&f.goalsAgainst===0).length,l=n.filter(f=>f.goalsFor>0).length,m=n.filter(f=>f.goalsFor===0).length,c=n.filter(f=>f.isLoss&&f.goalsFor===0).length,g=n.filter(f=>f.goalsAgainst>0).length,p=n.filter(f=>f.halfTimeGoalsFor!==null),y=p.length,T=p.filter(f=>{const S=f.halfTimeGoalsFor,I=f.goalsFor-S;return S>0&&I>0}).length,R=Q(e,t,o,"scored"),C=wt(e,t,o),F=p.filter(f=>f.halfTimeGoalsFor>f.halfTimeGoalsAgainst).length,N=p.filter(f=>{const S=f.halfTimeGoalsAgainst,I=f.goalsAgainst-S;return S>0&&I>0}).length,B=Q(e,t,o,"conceded"),$=p.filter(f=>f.halfTimeGoalsAgainst>f.halfTimeGoalsFor).length,G=n.filter(f=>f.cornersFor!==null),x=G.reduce((f,S)=>f+(S.cornersFor||0),0),W=G.reduce((f,S)=>f+(S.cornersAgainst||0),0);return{played:s,goalsForPerMatch:k(i,s),cleanSheets:A(a,s),wonToNil:A(d,s),scoringRate:A(l,s),scoredInBothHalves:A(T,y),scoredFirst:A(R,C),leadingAtHalfTime:A(F,y),goalsAgainstPerMatch:k(r,s),failedToScore:A(m,s),lostToNil:A(c,s),concedingRate:A(g,s),concededInBothHalves:A(N,y),concededFirst:A(B,C),losingAtHalfTime:A($,y),avgCornersFor:k(x,G.length),avgCornersAgainst:k(W,G.length)}}function to(e,t){return e.filter(o=>o.status?.type!=="FINISHED"?!1:o.competitorOne.id===t||o.competitorTwo.id===t).map(o=>{const n=o.competitorOne.id===t,s=parseInt(o.score?.competitorOne||"0"),i=parseInt(o.score?.competitorTwo||"0"),r=s+i,a=o.periods;let d=null;if(a&&Array.isArray(a)){const l=a.find(m=>m.type==="FIRST_HALF"||m.type==="1ST_HALF");if(l?.score){const m=parseInt(l.score.competitorOne||"0"),c=parseInt(l.score.competitorTwo||"0");d=m+c}}return{totalGoals:r,halfTimeGoals:d,isHome:n}})}function h(e,t){return e.length===0?0:e.filter(n=>n>t).length/e.length*100}function oo(e,t){const o=to(e,t),n=o.filter(c=>c.isHome),s=o.filter(c=>!c.isHome),i=o.map(c=>c.totalGoals),r=n.map(c=>c.totalGoals),a=s.map(c=>c.totalGoals),d=o.filter(c=>c.halfTimeGoals!==null).map(c=>c.halfTimeGoals),l=n.filter(c=>c.halfTimeGoals!==null).map(c=>c.halfTimeGoals),m=s.filter(c=>c.halfTimeGoals!==null).map(c=>c.halfTimeGoals);return{over05:{home:h(r,.5),total:h(i,.5),away:h(a,.5)},over15:{home:h(r,1.5),total:h(i,1.5),away:h(a,1.5)},over25:{home:h(r,2.5),total:h(i,2.5),away:h(a,2.5)},over35:{home:h(r,3.5),total:h(i,3.5),away:h(a,3.5)},over45:{home:h(r,4.5),total:h(i,4.5),away:h(a,4.5)},over55:{home:h(r,5.5),total:h(i,5.5),away:h(a,5.5)},over05HT:{home:h(l,.5),total:h(d,.5),away:h(m,.5)},over15HT:{home:h(l,1.5),total:h(d,1.5),away:h(m,1.5)},over25HT:{home:h(l,2.5),total:h(d,2.5),away:h(m,2.5)}}}function de(e,t){const o=e.competitorOne.id===t,n=e.competitorTwo.id===t;if(!o&&!n||!e.score)return null;const s=parseInt(o?e.score.competitorOne||"0":e.score.competitorTwo||"0"),i=parseInt(o?e.score.competitorTwo||"0":e.score.competitorOne||"0");let r;return s>i?r="W":s<i?r="L":r="D",{result:{score:`${s}:${i}`,result:r,isHome:o},isHome:o}}function no(e,t,o,n,s,i){const r=t?.entries.find(P=>P.competitor.id===e),a=o?.entries.find(P=>P.competitor.id===e),d=n?.entries.find(P=>P.competitor.id===e),l=s?.entries.find(P=>P.competitor.id===e),m=i?.entries.find(P=>P.competitor.id===e);if(!r)return null;const c=a?.stats?.goalsFor??0,g=d?.stats?.goalsFor??0,p=r?.stats?.goalsFor??0,y=l?.stats?.goalsAgainst??0,T=m?.stats?.goalsAgainst??0,R=r?.stats?.goalsAgainst??0,C=a?.stats?.played??0,F=d?.stats?.played??0,N=r?.stats?.played??0,B=N>0?p/N:0,$=N>0?R/N:0,G=B+$,x=C>0?c/C:0,W=F>0?g/F:0,f=C>0?y/C:0,S=F>0?T/F:0,I=x+f,ue=W+S;return{homeGoals:c,totalGoals:p,awayGoals:g,homeGamesPlayed:C,awayGamesPlayed:F,totalGamesPlayed:N,homeGoalsConceded:y,totalGoalsConceded:R,awayGoalsConceded:T,gfPerMatch:B,gaPerMatch:$,gfGaPerMatch:G,homeGfPerMatch:x,awayGfPerMatch:W,homeGaPerMatch:f,awayGaPerMatch:S,homeGfGaPerMatch:I,awayGfGaPerMatch:ue}}function _(e,t,o,n){const s=e.filter(r=>{const a=r.competitorOne.id===t,d=r.competitorTwo.id===t;return!(!a&&!d||r.status?.type!=="FINISHED"||n==="home"&&!a||n==="away"&&!d)}).sort((r,a)=>new Date(a.timing.kickoffTime).getTime()-new Date(r.timing.kickoffTime).getTime());if(s.length===0)return null;let i=0;for(const r of s){const a=r.competitorOne.id===t;if(o(r,t,a))i++;else break}return i>0?i:null}const v={win:(e,t,o)=>{const n=parseInt(o?e.score?.competitorOne||"0":e.score?.competitorTwo||"0"),s=parseInt(o?e.score?.competitorTwo||"0":e.score?.competitorOne||"0");return n>s},draw:e=>e.score?.competitorOne===e.score?.competitorTwo,loss:(e,t,o)=>{const n=parseInt(o?e.score?.competitorOne||"0":e.score?.competitorTwo||"0"),s=parseInt(o?e.score?.competitorTwo||"0":e.score?.competitorOne||"0");return n<s},noWin:(e,t,o)=>!v.win(e,t,o),noDraw:e=>!v.draw(e),noDefeat:(e,t,o)=>!v.loss(e,t,o),scored:(e,t,o)=>parseInt(o?e.score?.competitorOne||"0":e.score?.competitorTwo||"0")>=1,conceded:(e,t,o)=>parseInt(o?e.score?.competitorTwo||"0":e.score?.competitorOne||"0")>=1,noGoalScored:(e,t,o)=>!v.scored(e,t,o),noGoalConceded:(e,t,o)=>!v.conceded(e,t,o),over25:e=>parseInt(e.score?.competitorOne||"0")+parseInt(e.score?.competitorTwo||"0")>2,under25:e=>parseInt(e.score?.competitorOne||"0")+parseInt(e.score?.competitorTwo||"0")<3,scoredTwice:(e,t,o)=>parseInt(o?e.score?.competitorOne||"0":e.score?.competitorTwo||"0")>=2,concededTwice:(e,t,o)=>parseInt(o?e.score?.competitorTwo||"0":e.score?.competitorOne||"0")>=2};function H(e,t,o){return{win:_(e,t,v.win,o),draw:_(e,t,v.draw,o),loss:_(e,t,v.loss,o),noWin:_(e,t,v.noWin,o),noDraw:_(e,t,v.noDraw,o),noDefeat:_(e,t,v.noDefeat,o),scored:_(e,t,v.scored,o),conceded:_(e,t,v.conceded,o),noGoalScored:_(e,t,v.noGoalScored,o),noGoalConceded:_(e,t,v.noGoalConceded,o),over25:_(e,t,v.over25,o),under25:_(e,t,v.under25,o),scoredTwice:_(e,t,v.scoredTwice,o),concededTwice:_(e,t,v.concededTwice,o)}}function so(e,t,o){const n=H(e,t,"home"),s=H(e,t),i=H(e,o,"away"),r=H(e,o);return[{label:"Consecutive wins",homeTeam:{home:n.win,total:s.win},awayTeam:{total:r.win,home:i.win},colorType:"neutral"},{label:"Consecutive draws",homeTeam:{home:n.draw,total:s.draw},awayTeam:{total:r.draw,home:i.draw},colorType:"neutral"},{label:"Consecutive defeats",homeTeam:{home:n.loss,total:s.loss},awayTeam:{total:r.loss,home:i.loss},colorType:"neutral"},{label:"No win",homeTeam:{home:n.noWin,total:s.noWin},awayTeam:{total:r.noWin,home:i.noWin},colorType:"negative"},{label:"No draw",homeTeam:{home:n.noDraw,total:s.noDraw},awayTeam:{total:r.noDraw,home:i.noDraw},colorType:"neutral"},{label:"No defeat",homeTeam:{home:n.noDefeat,total:s.noDefeat},awayTeam:{total:r.noDefeat,home:i.noDefeat},colorType:"positive"},{label:"Scored at least once",homeTeam:{home:n.scored,total:s.scored},awayTeam:{total:r.scored,home:i.scored},colorType:"positive"},{label:"Conceded at least once",homeTeam:{home:n.conceded,total:s.conceded},awayTeam:{total:r.conceded,home:i.conceded},colorType:"negative"},{label:"No goal scored",homeTeam:{home:n.noGoalScored,total:s.noGoalScored},awayTeam:{total:r.noGoalScored,home:i.noGoalScored},colorType:"neutral"},{label:"No goal conceded",homeTeam:{home:n.noGoalConceded,total:s.noGoalConceded},awayTeam:{total:r.noGoalConceded,home:i.noGoalConceded},colorType:"neutral"},{label:"GS + GC over 2.5",homeTeam:{home:n.over25,total:s.over25},awayTeam:{total:r.over25,home:i.over25},colorType:"neutral"},{label:"GS + GC under 2.5",homeTeam:{home:n.under25,total:s.under25},awayTeam:{total:r.under25,home:i.under25},colorType:"neutral"},{label:"Scored at least twice",homeTeam:{home:n.scoredTwice,total:s.scoredTwice},awayTeam:{total:r.scoredTwice,home:i.scoredTwice},colorType:"positive"},{label:"Conceded at least twice",homeTeam:{home:n.concededTwice,total:s.concededTwice},awayTeam:{total:r.concededTwice,home:i.concededTwice},colorType:"negative"}]}function X(e,t){const o=new Map;return e.forEach(n=>{if(n.status?.type!=="FINISHED")return;const s=de(n,t);if(!s)return;const i=s.isHome?n.competitorTwo.id:n.competitorOne.id,r=s.isHome?n.competitorTwo:n.competitorOne,a=o.get(i)||{opponentId:i,opponentName:r.name,opponentLogo:r.assets?.logo};s.isHome?a.homeResult=s.result:a.awayResult=s.result,o.set(i,a)}),o}function io(e,t,o,n,s,i,r){const a=X(e,t),d=X(e,o),l=new Set([...a.keys(),...d.keys(),t,o]),m=[];return l.forEach(c=>{const g=a.get(c),p=d.get(c);if(!g&&!p&&c!==t&&c!==o)return;let y,T;c===t?(y=n,T=i):c===o?(y=s,T=r):(y=g?.opponentName||p?.opponentName||"",T=g?.opponentLogo||p?.opponentLogo),m.push({opponentId:c,opponentName:y,opponentLogo:T,homeTeamHome:g?.homeResult,homeTeamAway:g?.awayResult,awayTeamHome:p?.homeResult,awayTeamAway:p?.awayResult,isHomeTeamRow:c===t,isAwayTeamRow:c===o})}),m.sort((c,g)=>c.isHomeTeamRow?-1:g.isHomeTeamRow?1:c.isAwayTeamRow?-1:g.isAwayTeamRow?1:c.opponentName.localeCompare(g.opponentName))}exports.addProviderRef=u.addProviderRef;exports.getBatchMatchOdds=u.getBatchMatchOdds;exports.getConfig=u.getConfig;exports.getFootballCompetition=u.getFootballCompetition;exports.getFootballLivescore=u.getFootballLivescore;exports.getFootballMatch=u.getFootballMatch;exports.getFootballMatchCommentary=u.getFootballMatchCommentary;exports.getFootballMatchEvents=u.getFootballMatchEvents;exports.getFootballMatchLineups=u.getFootballMatchLineups;exports.getFootballMatchOdds=u.getFootballMatchOdds;exports.getFootballMatchStatistics=u.getFootballMatchStatistics;exports.getFootballMatches=u.getFootballMatches;exports.getFootballPlayerSeasonStatistics=u.getFootballPlayerSeasonStatistics;exports.getFootballSeasonDetails=u.getFootballSeasonDetails;exports.getFootballStandings=u.getFootballStandings;exports.getFootballTeam=u.getFootballTeam;exports.getFootballTeamSquad=u.getFootballTeamSquad;exports.getLeaderboardMatches=u.getLeaderboardMatches;exports.getLeaderboardTeamMatches=u.getLeaderboardTeamMatches;exports.getLeaderboardTemplate=u.getLeaderboardTemplate;exports.getProviderRefId=u.getProviderRefId;exports.isConfigured=u.isConfigured;exports.setConfig=u.setConfig;exports.toProviderRefArray=u.toProviderRefArray;exports.GOAL_EVENT_TYPES=ae;exports.aggregatePlayerStatisticsFromMatches=D;exports.analyzeMatch=ce;exports.calcAverage=k;exports.calcPercentage=A;exports.calculateH2HStats=Qt;exports.calculateStreak=_;exports.formatAsAverage=Vt;exports.formatPossessionPercentage=jt;exports.formatStatValue=Wt;exports.formatWithAverage=qt;exports.getActiveSeason=Ft;exports.getAllPlayerStatisticsFromMatches=ie;exports.getBasketballLivescore=Ne;exports.getFansUnitedFootballCompetition=rt;exports.getFansUnitedFootballCompetitions=ot;exports.getFansUnitedFootballMatch=Tt;exports.getFansUnitedFootballMatches=vt;exports.getFansUnitedFootballPlayer=yt;exports.getFansUnitedFootballPlayers=ht;exports.getFansUnitedFootballSearch=At;exports.getFansUnitedFootballTeam=dt;exports.getFansUnitedFootballTeams=ut;exports.getMatchResult=de;exports.getMostCardedPlayersFromMatches=ne;exports.getOpponentScore=Jt;exports.getRecentH2HMeetings=Xt;exports.getTeamFinishedMatches=Nt;exports.getTeamGoalStats=no;exports.getTeamHomeAwayStats=eo;exports.getTeamMostDecorated=It;exports.getTeamNextMatch=Ot;exports.getTeamOverUnderStats=oo;exports.getTeamPreviousMatch=Mt;exports.getTeamResultsTable=Pt;exports.getTeamScore=zt;exports.getTeamSeasonStatistics=Qe;exports.getTeamStreaks=H;exports.getTeamStreaksComparison=so;exports.getTeamTopAppearances=Lt;exports.getTeamTopAssisters=Et;exports.getTeamTopCleanSheets=Gt;exports.getTeamTopMinutesPlayed=Dt;exports.getTeamTopScorers=bt;exports.getTeamUpcomingMatches=Rt;exports.getTeamsCommonOpponents=io;exports.getTennisLivescore=ke;exports.getTopAssistersFromMatches=oe;exports.getTopGoalContributorsFromMatches=se;exports.getTopScorersFromMatches=te;exports.isMatchFinished=Kt;exports.isTeamAway=le;exports.isTeamHome=q;exports.isTeamInMatch=Yt;exports.search=Ke;exports.searchFootball=ve;exports.streakFilters=v;exports.useAllPlayerStatisticsFromMatches=$t;exports.useMostCardedPlayersFromMatches=Ut;exports.usePlayerStatistics=xt;exports.usePlayerStatisticsMap=re;exports.useTopAssistersFromMatches=Ht;exports.useTopGoalContributorsFromMatches=Bt;exports.useTopScorersFromMatches=kt;
@@ -1,5 +1,5 @@
1
- import { t as _, g as A, f as se, c as V, S as ie, a as re, b as ae, d as ce, e as de, h as le } from "./matches-B8E7KjZU.js";
2
- import { i as _o, j as So, k as Co, l as Ao, m as Oo, n as No, o as Ro, p as Eo, q as Fo, r as Mo, s as Lo, u as Do, v as Io, w as Go, x as Po, y as bo, z as ko, A as Ho, B as Uo, C as Bo, D as $o, E as xo } from "./matches-B8E7KjZU.js";
1
+ import { t as S, g as A, f as se, c as V, S as ie, a as re, b as ae, d as ce, e as le, h as de } from "./matches-B8E7KjZU.js";
2
+ import { i as So, j as _o, k as Co, l as Ao, m as Oo, n as No, o as Eo, p as Ro, q as Fo, r as Mo, s as Lo, u as Do, v as Io, w as Go, x as bo, y as Po, z as ko, A as Ho, B as Uo, C as Bo, D as $o, E as xo } from "./matches-B8E7KjZU.js";
3
3
  import { useMemo as G } from "react";
4
4
  function ue(e) {
5
5
  return {
@@ -15,12 +15,12 @@ function ue(e) {
15
15
  name: e.country.name,
16
16
  code: void 0,
17
17
  flag: e.country.url_flag ?? void 0,
18
- providerRef: _(e.country.uuid)
18
+ providerRef: S(e.country.uuid)
19
19
  },
20
20
  assets: e.url_logo ? {
21
21
  logo: e.url_logo
22
22
  } : void 0,
23
- providerRef: _(e.uuid)
23
+ providerRef: S(e.uuid)
24
24
  };
25
25
  }
26
26
  function me(e) {
@@ -37,12 +37,12 @@ function me(e) {
37
37
  name: e.country.name,
38
38
  code: void 0,
39
39
  flag: e.country.url_flag ?? void 0,
40
- providerRef: _(e.country.uuid)
40
+ providerRef: S(e.country.uuid)
41
41
  },
42
42
  assets: e.url_thumb ? {
43
43
  photo: e.url_thumb
44
44
  } : void 0,
45
- providerRef: _(e.uuid)
45
+ providerRef: S(e.uuid)
46
46
  };
47
47
  }
48
48
  function fe(e) {
@@ -60,12 +60,12 @@ function fe(e) {
60
60
  name: e.country.name,
61
61
  code: void 0,
62
62
  flag: e.country.url_flag ?? void 0,
63
- providerRef: _(e.country.uuid)
63
+ providerRef: S(e.country.uuid)
64
64
  },
65
65
  assets: e.url_logo ? {
66
66
  logo: e.url_logo
67
67
  } : void 0,
68
- providerRef: _(e.uuid)
68
+ providerRef: S(e.uuid)
69
69
  };
70
70
  }
71
71
  function ge(e) {
@@ -80,12 +80,12 @@ function ge(e) {
80
80
  name: e.country.name,
81
81
  code: void 0,
82
82
  flag: e.country.url_flag ?? void 0,
83
- providerRef: _(e.country.uuid)
83
+ providerRef: S(e.country.uuid)
84
84
  },
85
85
  assets: e.url_thumb ? {
86
86
  photo: e.url_thumb
87
87
  } : void 0,
88
- providerRef: _(e.uuid)
88
+ providerRef: S(e.uuid)
89
89
  };
90
90
  }
91
91
  function pe(e) {
@@ -102,16 +102,16 @@ function pe(e) {
102
102
  name: e.city.country.name,
103
103
  code: void 0,
104
104
  flag: e.city.country.url_flag ?? void 0,
105
- providerRef: _(e.city.country.uuid)
105
+ providerRef: S(e.city.country.uuid)
106
106
  },
107
- providerRef: _(e.city.uuid)
107
+ providerRef: S(e.city.uuid)
108
108
  },
109
109
  country: {
110
110
  id: e.country.id.toString(),
111
111
  name: e.country.name,
112
112
  code: void 0,
113
113
  flag: e.country.url_flag ?? void 0,
114
- providerRef: _(e.country.uuid)
114
+ providerRef: S(e.country.uuid)
115
115
  },
116
116
  profile: {
117
117
  latitude: e.profile.lat,
@@ -121,7 +121,7 @@ function pe(e) {
121
121
  assets: e.url_thumb ? {
122
122
  image: e.url_thumb
123
123
  } : void 0,
124
- providerRef: _(e.uuid)
124
+ providerRef: S(e.uuid)
125
125
  };
126
126
  }
127
127
  function ye(e) {
@@ -136,12 +136,12 @@ function ye(e) {
136
136
  name: e.country.name,
137
137
  code: void 0,
138
138
  flag: e.country.url_flag ?? void 0,
139
- providerRef: _(e.country.uuid)
139
+ providerRef: S(e.country.uuid)
140
140
  },
141
141
  assets: e.url_thumb ? {
142
142
  photo: e.url_thumb
143
143
  } : void 0,
144
- providerRef: _(e.uuid)
144
+ providerRef: S(e.uuid)
145
145
  };
146
146
  }
147
147
  function he(e) {
@@ -217,13 +217,13 @@ function Q(e) {
217
217
  gender: e.gender
218
218
  };
219
219
  }
220
- function _e(e) {
220
+ function Se(e) {
221
221
  return {
222
222
  kickoffTime: new Date(e.game_time),
223
223
  currentMinute: e.minute
224
224
  };
225
225
  }
226
- function Se(e) {
226
+ function _e(e) {
227
227
  if (!e.season?.competition) return;
228
228
  const t = e.season.competition;
229
229
  return {
@@ -259,8 +259,22 @@ function Ce(e) {
259
259
  }
260
260
  function Ae(e) {
261
261
  if (!e || e.length === 0) return;
262
+ console.log("[livescore:basketball] raw score entries:", JSON.stringify(e, null, 2));
262
263
  const t = e.filter((i) => i.result_type.category === "PERIOD");
263
- if (t.length === 0) return;
264
+ if (t.length === 0) {
265
+ const i = e[0];
266
+ return console.warn("[livescore:basketball] no PERIOD entries found in score, falling back to first entry:", JSON.stringify(i, null, 2)), {
267
+ competitorOne: String(i.home),
268
+ competitorTwo: String(i.away),
269
+ breakdown: {
270
+ total: {
271
+ competitorOne: String(i.home),
272
+ competitorTwo: String(i.away)
273
+ },
274
+ periods: []
275
+ }
276
+ };
277
+ }
264
278
  let o = 0, n = 0;
265
279
  const s = [];
266
280
  for (const i of t)
@@ -291,16 +305,16 @@ function Ne(e) {
291
305
  id: e.id,
292
306
  slug: e.slug,
293
307
  status: ve(e.status),
294
- timing: _e(e),
308
+ timing: Se(e),
295
309
  competitorOne: Q(e.home_team),
296
310
  competitorTwo: Q(e.away_team),
297
- competition: Se(e),
311
+ competition: _e(e),
298
312
  round: e.round ? {
299
313
  id: e.round.id,
300
314
  key: e.round.uuid,
301
315
  name: e.round.name,
302
316
  type: "REGULAR",
303
- providerRef: _(e.round.uuid)
317
+ providerRef: S(e.round.uuid)
304
318
  } : void 0,
305
319
  venue: Ce(e.arena),
306
320
  score: Ae(e.score),
@@ -335,8 +349,8 @@ async function Nt(e, t) {
335
349
  config: o
336
350
  })).games.map(Ne);
337
351
  }
338
- const Re = V(re);
339
- function Ee(e) {
352
+ const Ee = V(re);
353
+ function Re(e) {
340
354
  const t = {
341
355
  FINISHED: "finished",
342
356
  NOT_STARTED: "not_started",
@@ -437,8 +451,12 @@ function Me(e) {
437
451
  }
438
452
  function Le(e) {
439
453
  if (!e.results || e.results.length === 0) return;
454
+ console.log("[livescore:tennis] raw results entries:", JSON.stringify(e.results, null, 2));
440
455
  const t = e.results.filter((i) => /^SET_\d+$/i.test(i.type.code));
441
- if (t.length === 0) return;
456
+ if (t.length === 0) {
457
+ console.warn("[livescore:tennis] no SET_n entries found in results, result_type codes:", e.results.map((i) => i.type.code));
458
+ return;
459
+ }
442
460
  const o = [];
443
461
  let n = 0, s = 0;
444
462
  for (const i of t) {
@@ -448,8 +466,8 @@ function Le(e) {
448
466
  competitorOne: r.value,
449
467
  competitorTwo: a.value
450
468
  });
451
- const l = parseInt(r.value), d = parseInt(a.value);
452
- !isNaN(l) && !isNaN(d) && (l > d && n++, d > l && s++);
469
+ const d = parseInt(r.value), l = parseInt(a.value);
470
+ !isNaN(d) && !isNaN(l) && (d > l && n++, l > d && s++);
453
471
  }
454
472
  if (o.length !== 0)
455
473
  return {
@@ -476,7 +494,7 @@ function Ie(e) {
476
494
  return {
477
495
  id: e.id,
478
496
  slug: e.slug,
479
- status: Ee(e.status),
497
+ status: Re(e.status),
480
498
  timing: Fe(e),
481
499
  competitorOne: X(t[0]),
482
500
  competitorTwo: X(t[1]),
@@ -486,7 +504,7 @@ function Ie(e) {
486
504
  key: e.round.uuid,
487
505
  name: e.round.name,
488
506
  type: "REGULAR",
489
- providerRef: _(e.round.uuid)
507
+ providerRef: S(e.round.uuid)
490
508
  } : void 0,
491
509
  score: Le(e),
492
510
  winner: De(e),
@@ -505,9 +523,9 @@ function Ie(e) {
505
523
  ]
506
524
  };
507
525
  }
508
- async function Rt(e, t) {
526
+ async function Et(e, t) {
509
527
  const o = t || A(), { sportal365Sports: n } = o;
510
- return (await Re.get({
528
+ return (await Ee.get({
511
529
  path: "/matches/livescore",
512
530
  params: {
513
531
  date: e?.date,
@@ -531,7 +549,7 @@ async function Rt(e, t) {
531
549
  })).matches.map(Ie);
532
550
  }
533
551
  const Ge = V(ae);
534
- function R(e) {
552
+ function E(e) {
535
553
  return {
536
554
  language: e.language,
537
555
  name: e.name,
@@ -539,7 +557,7 @@ function R(e) {
539
557
  threeLetterCode: e.three_letter_code ?? void 0
540
558
  };
541
559
  }
542
- function E(e) {
560
+ function R(e) {
543
561
  if (!(!e || !e.url))
544
562
  return {
545
563
  url: e.url
@@ -553,8 +571,8 @@ function I(e) {
553
571
  name: e.name,
554
572
  shortName: e.short_name ?? void 0,
555
573
  threeLetterCode: e.three_letter_code ?? void 0,
556
- translations: e.translations.map(R),
557
- displayAsset: E(e.display_asset),
574
+ translations: e.translations.map(E),
575
+ displayAsset: R(e.display_asset),
558
576
  slug: e.slug,
559
577
  providerRef: e.id
560
578
  };
@@ -567,8 +585,8 @@ function K(e) {
567
585
  name: e.name,
568
586
  shortName: e.short_name ?? void 0,
569
587
  threeLetterCode: e.three_letter_code ?? void 0,
570
- translations: e.translations.map(R),
571
- displayAsset: E(e.display_asset),
588
+ translations: e.translations.map(E),
589
+ displayAsset: R(e.display_asset),
572
590
  slug: e.slug,
573
591
  tagScore: e.tag_score ?? void 0,
574
592
  sport: e.sport,
@@ -589,8 +607,8 @@ function ee(e) {
589
607
  name: e.name,
590
608
  shortName: e.short_name ?? void 0,
591
609
  threeLetterCode: e.three_letter_code ?? void 0,
592
- translations: e.translations.map(R),
593
- displayAsset: E(e.display_asset),
610
+ translations: e.translations.map(E),
611
+ displayAsset: R(e.display_asset),
594
612
  slug: e.slug,
595
613
  tagScore: e.tag_score ?? void 0,
596
614
  sport: e.sport,
@@ -598,7 +616,7 @@ function ee(e) {
598
616
  providerRef: e.id
599
617
  };
600
618
  }
601
- function Pe(e) {
619
+ function be(e) {
602
620
  return {
603
621
  entityType: "horse",
604
622
  id: e.id,
@@ -606,8 +624,8 @@ function Pe(e) {
606
624
  name: e.name,
607
625
  shortName: e.short_name ?? void 0,
608
626
  threeLetterCode: e.three_letter_code ?? void 0,
609
- translations: e.translations.map(R),
610
- displayAsset: E(e.display_asset),
627
+ translations: e.translations.map(E),
628
+ displayAsset: R(e.display_asset),
611
629
  slug: e.slug,
612
630
  tagScore: e.tag_score ?? void 0,
613
631
  sport: e.sport,
@@ -616,7 +634,7 @@ function Pe(e) {
616
634
  providerRef: e.id
617
635
  };
618
636
  }
619
- function be(e) {
637
+ function Pe(e) {
620
638
  return {
621
639
  entityType: "player",
622
640
  id: e.id,
@@ -624,8 +642,8 @@ function be(e) {
624
642
  name: e.name,
625
643
  shortName: e.short_name ?? void 0,
626
644
  threeLetterCode: e.three_letter_code ?? void 0,
627
- translations: e.translations.map(R),
628
- displayAsset: E(e.display_asset),
645
+ translations: e.translations.map(E),
646
+ displayAsset: R(e.display_asset),
629
647
  slug: e.slug,
630
648
  tagScore: e.tag_score ?? void 0,
631
649
  sport: e.sport,
@@ -644,8 +662,8 @@ function ke(e) {
644
662
  name: e.name,
645
663
  shortName: e.short_name ?? void 0,
646
664
  threeLetterCode: e.three_letter_code ?? void 0,
647
- translations: e.translations.map(R),
648
- displayAsset: E(e.display_asset),
665
+ translations: e.translations.map(E),
666
+ displayAsset: R(e.display_asset),
649
667
  slug: e.slug,
650
668
  tagScore: e.tag_score ?? void 0,
651
669
  sport: e.sport,
@@ -663,8 +681,8 @@ function He(e) {
663
681
  name: e.name,
664
682
  shortName: e.short_name ?? void 0,
665
683
  threeLetterCode: e.three_letter_code ?? void 0,
666
- translations: e.translations.map(R),
667
- displayAsset: E(e.display_asset),
684
+ translations: e.translations.map(E),
685
+ displayAsset: R(e.display_asset),
668
686
  slug: e.slug,
669
687
  tagScore: e.tag_score ?? void 0,
670
688
  sport: e.sport,
@@ -682,8 +700,8 @@ function Ue(e) {
682
700
  name: e.name,
683
701
  shortName: e.short_name ?? void 0,
684
702
  threeLetterCode: e.three_letter_code ?? void 0,
685
- translations: e.translations.map(R),
686
- displayAsset: E(e.display_asset),
703
+ translations: e.translations.map(E),
704
+ displayAsset: R(e.display_asset),
687
705
  slug: e.slug,
688
706
  tagScore: e.tag_score ?? void 0,
689
707
  sport: e.sport,
@@ -700,8 +718,8 @@ function Be(e) {
700
718
  name: e.name,
701
719
  shortName: e.short_name ?? void 0,
702
720
  threeLetterCode: e.three_letter_code ?? void 0,
703
- translations: e.translations.map(R),
704
- displayAsset: E(e.display_asset),
721
+ translations: e.translations.map(E),
722
+ displayAsset: R(e.display_asset),
705
723
  slug: e.slug,
706
724
  tagScore: e.tag_score ?? void 0,
707
725
  sport: e.sport,
@@ -720,8 +738,8 @@ function $e(e) {
720
738
  name: e.name,
721
739
  shortName: e.short_name ?? void 0,
722
740
  threeLetterCode: e.three_letter_code ?? void 0,
723
- translations: e.translations.map(R),
724
- displayAsset: E(e.display_asset),
741
+ translations: e.translations.map(E),
742
+ displayAsset: R(e.display_asset),
725
743
  slug: e.slug,
726
744
  tagScore: e.tag_score ?? void 0,
727
745
  sport: e.sport,
@@ -740,8 +758,8 @@ function xe(e) {
740
758
  name: e.name,
741
759
  shortName: e.short_name ?? void 0,
742
760
  threeLetterCode: e.three_letter_code ?? void 0,
743
- translations: e.translations.map(R),
744
- displayAsset: E(e.display_asset),
761
+ translations: e.translations.map(E),
762
+ displayAsset: R(e.display_asset),
745
763
  slug: e.slug,
746
764
  tagScore: e.tag_score ?? void 0,
747
765
  sport: e.sport,
@@ -755,9 +773,9 @@ function We(e) {
755
773
  case "city":
756
774
  return ee(e);
757
775
  case "horse":
758
- return Pe(e);
759
- case "player":
760
776
  return be(e);
777
+ case "player":
778
+ return Pe(e);
761
779
  case "coach":
762
780
  return ke(e);
763
781
  case "referee":
@@ -777,7 +795,7 @@ function We(e) {
777
795
  }
778
796
  }
779
797
  }
780
- async function Et(e = {}, t) {
798
+ async function Rt(e = {}, t) {
781
799
  const o = t ?? A(), n = {};
782
800
  e.name && (n.name = e.name), e.entityTypes && e.entityTypes.length > 0 && (n.entity_type = e.entityTypes.join(",")), e.sports && e.sports.length > 0 && (n.sport = e.sports.join(",")), e.eventStartTime && (n.event_start_time = e.eventStartTime), e.ids && e.ids.length > 0 && (n.ids = e.ids.join(",")), e.competitionIds && e.competitionIds.length > 0 && (n.competition_ids = e.competitionIds.join(",")), e.domain && (n.domain = e.domain), e.inputLanguage && (n.input_language = e.inputLanguage), e.translationLanguage && (n.translation_language = e.translationLanguage), e.limit !== void 0 && (n.limit = e.limit.toString()), e.offset !== void 0 && (n.offset = e.offset.toString());
783
801
  const s = await Ge.get({
@@ -840,9 +858,9 @@ function je(e) {
840
858
  if (r.searchParams.set("key", i.apiKey), r.searchParams.set("client_id", i.clientId), n.params)
841
859
  for (const [u, c] of Object.entries(n.params))
842
860
  c !== void 0 && (Array.isArray(c) ? c.length > 0 && r.searchParams.set(u, c.join(",")) : r.searchParams.set(u, c));
843
- const a = 3e4, l = new URL(r.toString());
844
- l.searchParams.delete("key"), l.searchParams.delete("client_id"), console.log("🔗 FansUnited API URL:", l.toString());
845
- const d = await fetch(r.toString(), {
861
+ const a = 3e4, d = new URL(r.toString());
862
+ d.searchParams.delete("key"), d.searchParams.delete("client_id"), console.log("🔗 FansUnited API URL:", d.toString());
863
+ const l = await fetch(r.toString(), {
846
864
  method: "GET",
847
865
  headers: {
848
866
  Accept: "application/json",
@@ -854,21 +872,21 @@ function je(e) {
854
872
  // Next.js cache options for ISR/on-demand revalidation
855
873
  ...n.next && { next: n.next }
856
874
  });
857
- if (!d.ok) {
858
- let u = `Fans United API error: ${d.status} ${d.statusText}`;
875
+ if (!l.ok) {
876
+ let u = `Fans United API error: ${l.status} ${l.statusText}`;
859
877
  try {
860
- const c = await d.text();
878
+ const c = await l.text();
861
879
  c && (u += ` - ${c}`);
862
880
  } catch (c) {
863
881
  console.error("[Fans United HTTP] Failed to read error response body:", {
864
882
  error: c instanceof Error ? c.message : String(c),
865
- status: d.status,
866
- statusText: d.statusText
883
+ status: l.status,
884
+ statusText: l.statusText
867
885
  });
868
886
  }
869
887
  throw new Error(u);
870
888
  }
871
- return d.json();
889
+ return l.json();
872
890
  }
873
891
  };
874
892
  }
@@ -932,10 +950,10 @@ async function Mt(e, t) {
932
950
  params: o,
933
951
  config: t,
934
952
  next: e?.next
935
- }), s = n.data.map((d) => d.id), i = new Set(s);
953
+ }), s = n.data.map((l) => l.id), i = new Set(s);
936
954
  s.length !== i.size && console.warn("⚠️ API returned duplicate competitions!");
937
- const r = Je(n.data), a = /* @__PURE__ */ new Set(), l = r.filter((d) => a.has(d.id) ? !1 : (a.add(d.id), !0));
938
- return r.length !== l.length && console.warn(`Removed ${r.length - l.length} duplicate competitions`), l;
955
+ const r = Je(n.data), a = /* @__PURE__ */ new Set(), d = r.filter((l) => a.has(l.id) ? !1 : (a.add(l.id), !0));
956
+ return r.length !== d.length && console.warn(`Removed ${r.length - d.length} duplicate competitions`), d;
939
957
  }
940
958
  function Qe(e) {
941
959
  return {
@@ -1146,7 +1164,7 @@ async function Gt(e, t, o) {
1146
1164
  });
1147
1165
  return st(i);
1148
1166
  }
1149
- async function Pt(e, t) {
1167
+ async function bt(e, t) {
1150
1168
  const o = t || A(), n = {};
1151
1169
  e?.lang && (n.lang = e.lang), e?.playerIds && (n.player_ids = e.playerIds), e?.countryId && (n.country_id = e.countryId), e?.name && (n.name = e.name), e?.scope && (n.scope = e.scope), e?.limit !== void 0 && (n.limit = String(e.limit)), e?.page !== void 0 && (n.page = String(e.page)), e?.sortField && (n.sort_field = e.sortField), e?.sortOrder && (n.sort_order = e.sortOrder);
1152
1170
  const s = await D.get({
@@ -1157,7 +1175,7 @@ async function Pt(e, t) {
1157
1175
  });
1158
1176
  return it(s);
1159
1177
  }
1160
- async function bt(e, t, o) {
1178
+ async function Pt(e, t, o) {
1161
1179
  const n = o || A(), s = {};
1162
1180
  t?.lang && (s.lang = t.lang);
1163
1181
  const i = await D.get({
@@ -1166,7 +1184,7 @@ async function bt(e, t, o) {
1166
1184
  next: t?.next,
1167
1185
  config: n
1168
1186
  });
1169
- return de(i);
1187
+ return le(i);
1170
1188
  }
1171
1189
  async function kt(e, t) {
1172
1190
  const o = t || A(), n = {};
@@ -1177,7 +1195,7 @@ async function kt(e, t) {
1177
1195
  next: e?.next,
1178
1196
  config: o
1179
1197
  });
1180
- return le(s);
1198
+ return de(s);
1181
1199
  }
1182
1200
  function z(e) {
1183
1201
  return {
@@ -1294,8 +1312,8 @@ async function Ht(e, t) {
1294
1312
  return [];
1295
1313
  const o = t || A(), n = {
1296
1314
  q: e.query.trim()
1297
- }, i = (e.entityTypes && e.entityTypes.length > 0 ? e.entityTypes : ["competition", "team", "player"]).map((l) => {
1298
- switch (l) {
1315
+ }, i = (e.entityTypes && e.entityTypes.length > 0 ? e.entityTypes : ["competition", "team", "player"]).map((d) => {
1316
+ switch (d) {
1299
1317
  case "team":
1300
1318
  return "teams";
1301
1319
  case "player":
@@ -1303,7 +1321,7 @@ async function Ht(e, t) {
1303
1321
  case "competition":
1304
1322
  return "competitions";
1305
1323
  default:
1306
- return l;
1324
+ return d;
1307
1325
  }
1308
1326
  });
1309
1327
  n.entities = i.join(","), e.lang && (n.lang = e.lang), e.limit && (n.limit = String(e.limit));
@@ -1313,15 +1331,15 @@ async function Ht(e, t) {
1313
1331
  next: e.next,
1314
1332
  config: o
1315
1333
  }), a = [];
1316
- return r.data && (r.data.competitions && r.data.competitions.forEach((l) => {
1317
- const d = j({ ...l, entity_type: "competition" });
1318
- d && a.push(d);
1319
- }), r.data.teams && r.data.teams.forEach((l) => {
1320
- const d = j({ ...l, entity_type: "team" });
1321
- d && a.push(d);
1322
- }), r.data.players && r.data.players.forEach((l) => {
1323
- const d = j({ ...l, entity_type: "player" });
1324
- d && a.push(d);
1334
+ return r.data && (r.data.competitions && r.data.competitions.forEach((d) => {
1335
+ const l = j({ ...d, entity_type: "competition" });
1336
+ l && a.push(l);
1337
+ }), r.data.teams && r.data.teams.forEach((d) => {
1338
+ const l = j({ ...d, entity_type: "team" });
1339
+ l && a.push(l);
1340
+ }), r.data.players && r.data.players.forEach((d) => {
1341
+ const l = j({ ...d, entity_type: "player" });
1342
+ l && a.push(l);
1325
1343
  })), a;
1326
1344
  }
1327
1345
  function Ut(e) {
@@ -1363,16 +1381,16 @@ function qt(e, t, o) {
1363
1381
  const n = o.filter((r) => r.status.type === "FINISHED"), s = o.filter(
1364
1382
  (r) => r.status.type === "NOT_STARTED" || r.status.type === "POSTPONED"
1365
1383
  ), i = t.entries.map((r) => {
1366
- const a = r.competitor.id, l = n.filter(
1384
+ const a = r.competitor.id, d = n.filter(
1367
1385
  (m) => m.competitorOne.id === e && m.competitorTwo.id === a || m.competitorOne.id === a && m.competitorTwo.id === e
1368
- ), d = s.filter(
1386
+ ), l = s.filter(
1369
1387
  (m) => m.competitorOne.id === e && m.competitorTwo.id === a || m.competitorOne.id === a && m.competitorTwo.id === e
1370
1388
  );
1371
1389
  let u, c;
1372
- return l.forEach((m) => {
1373
- const g = m.competitorOne.id === e, p = parseInt(m.score?.competitorOne ?? "0"), h = parseInt(m.score?.competitorTwo ?? "0"), F = g ? p : h, S = g ? h : p;
1390
+ return d.forEach((m) => {
1391
+ const g = m.competitorOne.id === e, p = parseInt(m.score?.competitorOne ?? "0"), h = parseInt(m.score?.competitorTwo ?? "0"), F = g ? p : h, _ = g ? h : p;
1374
1392
  let O;
1375
- F > S ? O = "W" : F === S ? O = "D" : O = "L";
1393
+ F > _ ? O = "W" : F === _ ? O = "D" : O = "L";
1376
1394
  const M = {
1377
1395
  result: O,
1378
1396
  score: `${p} - ${h}`,
@@ -1381,7 +1399,7 @@ function qt(e, t, o) {
1381
1399
  isUpcoming: !1
1382
1400
  };
1383
1401
  g ? u = M : c = M;
1384
- }), d.forEach((m) => {
1402
+ }), l.forEach((m) => {
1385
1403
  const g = m.competitorOne.id === e;
1386
1404
  g && !u ? u = {
1387
1405
  date: m.timing.kickoffTime,
@@ -1459,11 +1477,11 @@ function Jt(e, t = 10) {
1459
1477
  const n = o.seasonStatistics?.yellowCards ?? 0, s = o.seasonStatistics?.redCards ?? 0;
1460
1478
  return n + s > 0;
1461
1479
  }).sort((o, n) => {
1462
- const s = o.seasonStatistics?.yellowCards ?? 0, i = o.seasonStatistics?.redCards ?? 0, r = n.seasonStatistics?.yellowCards ?? 0, a = n.seasonStatistics?.redCards ?? 0, l = s + i * 3, d = r + a * 3;
1463
- return d !== l ? d - l : a !== i ? a - i : r - s;
1480
+ const s = o.seasonStatistics?.yellowCards ?? 0, i = o.seasonStatistics?.redCards ?? 0, r = n.seasonStatistics?.yellowCards ?? 0, a = n.seasonStatistics?.redCards ?? 0, d = s + i * 3, l = r + a * 3;
1481
+ return l !== d ? l - d : a !== i ? a - i : r - s;
1464
1482
  }).slice(0, t);
1465
1483
  }
1466
- function b(e) {
1484
+ function P(e) {
1467
1485
  const t = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map();
1468
1486
  return e.forEach((n) => {
1469
1487
  !n.mainEvents || n.mainEvents.length === 0 || n.mainEvents.forEach((s) => {
@@ -1513,54 +1531,54 @@ function H(e) {
1513
1531
  totalCards: (t.yellowCards ?? 0) + (t.redCards ?? 0)
1514
1532
  }));
1515
1533
  }
1516
- function dt(e, t = 10) {
1517
- const o = b(e);
1534
+ function lt(e, t = 10) {
1535
+ const o = P(e);
1518
1536
  return H(o).filter((s) => (s.goals ?? 0) > 0).sort((s, i) => {
1519
1537
  const r = s.goals ?? 0, a = i.goals ?? 0;
1520
1538
  if (a !== r)
1521
1539
  return a - r;
1522
- const l = s.assists ?? 0;
1523
- return (i.assists ?? 0) - l;
1540
+ const d = s.assists ?? 0;
1541
+ return (i.assists ?? 0) - d;
1524
1542
  }).slice(0, t);
1525
1543
  }
1526
- function lt(e, t = 10) {
1527
- const o = b(e);
1544
+ function dt(e, t = 10) {
1545
+ const o = P(e);
1528
1546
  return H(o).filter((s) => (s.assists ?? 0) > 0).sort((s, i) => {
1529
1547
  const r = s.assists ?? 0, a = i.assists ?? 0;
1530
1548
  if (a !== r)
1531
1549
  return a - r;
1532
- const l = s.goals ?? 0;
1533
- return (i.goals ?? 0) - l;
1550
+ const d = s.goals ?? 0;
1551
+ return (i.goals ?? 0) - d;
1534
1552
  }).slice(0, t);
1535
1553
  }
1536
1554
  function ut(e, t = 10) {
1537
- const o = b(e);
1555
+ const o = P(e);
1538
1556
  return H(o).filter((s) => (s.totalCards ?? 0) > 0).sort((s, i) => {
1539
1557
  const r = (s.yellowCards ?? 0) + (s.redCards ?? 0) * 3, a = (i.yellowCards ?? 0) + (i.redCards ?? 0) * 3;
1540
1558
  if (a !== r)
1541
1559
  return a - r;
1542
- const l = s.redCards ?? 0, d = i.redCards ?? 0;
1543
- if (d !== l)
1544
- return d - l;
1560
+ const d = s.redCards ?? 0, l = i.redCards ?? 0;
1561
+ if (l !== d)
1562
+ return l - d;
1545
1563
  const u = s.yellowCards ?? 0;
1546
1564
  return (i.yellowCards ?? 0) - u;
1547
1565
  }).slice(0, t);
1548
1566
  }
1549
1567
  function mt(e, t = 10) {
1550
- const o = b(e);
1568
+ const o = P(e);
1551
1569
  return H(o).filter((s) => (s.goals ?? 0) + (s.assists ?? 0) > 0).sort((s, i) => {
1552
1570
  const r = (s.goals ?? 0) + (s.assists ?? 0), a = (i.goals ?? 0) + (i.assists ?? 0);
1553
1571
  if (a !== r)
1554
1572
  return a - r;
1555
- const l = s.goals ?? 0, d = i.goals ?? 0;
1556
- if (d !== l)
1557
- return d - l;
1573
+ const d = s.goals ?? 0, l = i.goals ?? 0;
1574
+ if (l !== d)
1575
+ return l - d;
1558
1576
  const u = s.assists ?? 0;
1559
1577
  return (i.assists ?? 0) - u;
1560
1578
  }).slice(0, t);
1561
1579
  }
1562
1580
  function ft(e) {
1563
- const t = b(e);
1581
+ const t = P(e);
1564
1582
  return H(t).sort((n, s) => {
1565
1583
  const i = n.appearances ?? 0, r = s.appearances ?? 0;
1566
1584
  if (r !== i)
@@ -1570,10 +1588,10 @@ function ft(e) {
1570
1588
  });
1571
1589
  }
1572
1590
  function Qt(e, t = 10) {
1573
- return G(() => dt(e, t), [e, t]);
1591
+ return G(() => lt(e, t), [e, t]);
1574
1592
  }
1575
1593
  function Xt(e, t = 10) {
1576
- return G(() => lt(e, t), [e, t]);
1594
+ return G(() => dt(e, t), [e, t]);
1577
1595
  }
1578
1596
  function Zt(e, t = 10) {
1579
1597
  return G(() => ut(e, t), [e, t]);
@@ -1585,7 +1603,7 @@ function eo(e) {
1585
1603
  return G(() => ft(e), [e]);
1586
1604
  }
1587
1605
  function gt(e) {
1588
- return G(() => b(e), [e]);
1606
+ return G(() => P(e), [e]);
1589
1607
  }
1590
1608
  function to(e, t) {
1591
1609
  const o = gt(e);
@@ -1618,11 +1636,11 @@ function io(e) {
1618
1636
  function yt(e, t, o) {
1619
1637
  if (e.status?.type !== "FINISHED" || !e.score) return null;
1620
1638
  const n = parseInt(e.score.competitorOne || "0"), s = parseInt(e.score.competitorTwo || "0"), i = o ? n : s, r = o ? s : n;
1621
- let a = null, l = null;
1622
- const d = e.score.breakdown?.halfTime;
1623
- if (d) {
1624
- const g = parseInt(d.competitorOne || "0"), p = parseInt(d.competitorTwo || "0");
1625
- a = o ? g : p, l = o ? p : g;
1639
+ let a = null, d = null;
1640
+ const l = e.score.breakdown?.halfTime;
1641
+ if (l) {
1642
+ const g = parseInt(l.competitorOne || "0"), p = parseInt(l.competitorTwo || "0");
1643
+ a = o ? g : p, d = o ? p : g;
1626
1644
  }
1627
1645
  const u = e.statistics;
1628
1646
  let c = null, m = null;
@@ -1634,7 +1652,7 @@ function yt(e, t, o) {
1634
1652
  goalsFor: i,
1635
1653
  goalsAgainst: r,
1636
1654
  halfTimeGoalsFor: a,
1637
- halfTimeGoalsAgainst: l,
1655
+ halfTimeGoalsAgainst: d,
1638
1656
  cornersFor: c,
1639
1657
  cornersAgainst: m,
1640
1658
  isWin: i > r,
@@ -1668,24 +1686,24 @@ function uo(e, t, o) {
1668
1686
  const c = u.competitorOne.id === t || u.competitorTwo.id === t, m = u.competitorOne.id === o || u.competitorTwo.id === o;
1669
1687
  return c && m;
1670
1688
  });
1671
- let s = 0, i = 0, r = 0, a = 0, l = 0;
1689
+ let s = 0, i = 0, r = 0, a = 0, d = 0;
1672
1690
  n.forEach((u) => {
1673
1691
  const c = parseInt(u.score?.competitorOne || "0"), m = parseInt(u.score?.competitorTwo || "0"), g = u.competitorOne.id === t, p = g ? c : m, h = g ? m : c;
1674
- a += p, l += h, p > h ? s++ : h > p ? i++ : r++;
1692
+ a += p, d += h, p > h ? s++ : h > p ? i++ : r++;
1675
1693
  });
1676
- const d = n.length;
1694
+ const l = n.length;
1677
1695
  return {
1678
- totalMatches: d,
1696
+ totalMatches: l,
1679
1697
  homeTeamWins: s,
1680
1698
  awayTeamWins: i,
1681
1699
  draws: r,
1682
1700
  homeTeamGoals: a,
1683
- awayTeamGoals: l,
1684
- homeTeamWinPercentage: d > 0 ? s / d * 100 : 0,
1685
- awayTeamWinPercentage: d > 0 ? i / d * 100 : 0,
1686
- drawPercentage: d > 0 ? r / d * 100 : 0,
1687
- homeTeamAvgGoals: d > 0 ? a / d : 0,
1688
- awayTeamAvgGoals: d > 0 ? l / d : 0
1701
+ awayTeamGoals: d,
1702
+ homeTeamWinPercentage: l > 0 ? s / l * 100 : 0,
1703
+ awayTeamWinPercentage: l > 0 ? i / l * 100 : 0,
1704
+ drawPercentage: l > 0 ? r / l * 100 : 0,
1705
+ homeTeamAvgGoals: l > 0 ? a / l : 0,
1706
+ awayTeamAvgGoals: l > 0 ? d / l : 0
1689
1707
  };
1690
1708
  }
1691
1709
  function mo(e, t, o, n = 5) {
@@ -1694,9 +1712,9 @@ function mo(e, t, o, n = 5) {
1694
1712
  const r = i.competitorOne.id === t || i.competitorTwo.id === t, a = i.competitorOne.id === o || i.competitorTwo.id === o;
1695
1713
  return r && a;
1696
1714
  }).sort((i, r) => new Date(r.timing.kickoffTime).getTime() - new Date(i.timing.kickoffTime).getTime()).slice(0, n).map((i) => {
1697
- const r = parseInt(i.score?.competitorOne || "0"), a = parseInt(i.score?.competitorTwo || "0"), l = i.competitorOne.id === t, d = l ? r : a, u = l ? a : r;
1715
+ const r = parseInt(i.score?.competitorOne || "0"), a = parseInt(i.score?.competitorTwo || "0"), d = i.competitorOne.id === t, l = d ? r : a, u = d ? a : r;
1698
1716
  let c;
1699
- return d > u ? c = "home" : u > d ? c = "away" : c = "draw", {
1717
+ return l > u ? c = "home" : u > l ? c = "away" : c = "draw", {
1700
1718
  id: i.id,
1701
1719
  date: new Date(i.timing.kickoffTime).toLocaleDateString("en-GB", {
1702
1720
  day: "numeric",
@@ -1728,14 +1746,14 @@ function Z(e, t, o, n) {
1728
1746
  for (const i of e) {
1729
1747
  const r = i.competitorOne.id === t, a = i.competitorTwo.id === t;
1730
1748
  if (!r && !a || o === "home" && !r || o === "away" && !a || i.status?.type !== "FINISHED") continue;
1731
- const l = i.mainEvents;
1732
- if (!l || !Array.isArray(l)) continue;
1733
- const d = l.filter((p) => p.type && pt.includes(p.type)).sort((p, h) => {
1734
- const F = p.minute ?? 0, S = h.minute ?? 0;
1735
- return F !== S ? F - S : (p.injuryMinute ?? 0) - (h.injuryMinute ?? 0);
1749
+ const d = i.mainEvents;
1750
+ if (!d || !Array.isArray(d)) continue;
1751
+ const l = d.filter((p) => p.type && pt.includes(p.type)).sort((p, h) => {
1752
+ const F = p.minute ?? 0, _ = h.minute ?? 0;
1753
+ return F !== _ ? F - _ : (p.injuryMinute ?? 0) - (h.injuryMinute ?? 0);
1736
1754
  });
1737
- if (d.length === 0) continue;
1738
- const u = d[0], c = r ? "ONE" : "TWO", m = u.type === "OWN_GOAL";
1755
+ if (l.length === 0) continue;
1756
+ const u = l[0], c = r ? "ONE" : "TWO", m = u.type === "OWN_GOAL";
1739
1757
  let g;
1740
1758
  m ? g = u.competitorPosition !== c : g = u.competitorPosition === c, (n === "scored" && g || n === "conceded" && !g) && s++;
1741
1759
  }
@@ -1773,54 +1791,54 @@ function fo(e, t, o) {
1773
1791
  avgCornersFor: 0,
1774
1792
  avgCornersAgainst: 0
1775
1793
  };
1776
- const i = n.reduce((f, v) => f + v.goalsFor, 0), r = n.reduce((f, v) => f + v.goalsAgainst, 0), a = n.filter((f) => f.goalsAgainst === 0).length, l = n.filter((f) => f.isWin && f.goalsAgainst === 0).length, d = n.filter((f) => f.goalsFor > 0).length, u = n.filter((f) => f.goalsFor === 0).length, c = n.filter((f) => f.isLoss && f.goalsFor === 0).length, m = n.filter((f) => f.goalsAgainst > 0).length, g = n.filter((f) => f.halfTimeGoalsFor !== null), p = g.length, h = g.filter((f) => {
1794
+ const i = n.reduce((f, v) => f + v.goalsFor, 0), r = n.reduce((f, v) => f + v.goalsAgainst, 0), a = n.filter((f) => f.goalsAgainst === 0).length, d = n.filter((f) => f.isWin && f.goalsAgainst === 0).length, l = n.filter((f) => f.goalsFor > 0).length, u = n.filter((f) => f.goalsFor === 0).length, c = n.filter((f) => f.isLoss && f.goalsFor === 0).length, m = n.filter((f) => f.goalsAgainst > 0).length, g = n.filter((f) => f.halfTimeGoalsFor !== null), p = g.length, h = g.filter((f) => {
1777
1795
  const v = f.halfTimeGoalsFor, k = f.goalsFor - v;
1778
1796
  return v > 0 && k > 0;
1779
- }).length, F = Z(e, t, o, "scored"), S = vt(e, t, o), O = g.filter((f) => f.halfTimeGoalsFor > f.halfTimeGoalsAgainst).length, M = g.filter((f) => {
1797
+ }).length, F = Z(e, t, o, "scored"), _ = vt(e, t, o), O = g.filter((f) => f.halfTimeGoalsFor > f.halfTimeGoalsAgainst).length, M = g.filter((f) => {
1780
1798
  const v = f.halfTimeGoalsAgainst, k = f.goalsAgainst - v;
1781
1799
  return v > 0 && k > 0;
1782
- }).length, U = Z(e, t, o, "conceded"), B = g.filter((f) => f.halfTimeGoalsAgainst > f.halfTimeGoalsFor).length, P = n.filter((f) => f.cornersFor !== null), $ = P.reduce((f, v) => f + (v.cornersFor || 0), 0), x = P.reduce((f, v) => f + (v.cornersAgainst || 0), 0);
1800
+ }).length, U = Z(e, t, o, "conceded"), B = g.filter((f) => f.halfTimeGoalsAgainst > f.halfTimeGoalsFor).length, b = n.filter((f) => f.cornersFor !== null), $ = b.reduce((f, v) => f + (v.cornersFor || 0), 0), x = b.reduce((f, v) => f + (v.cornersAgainst || 0), 0);
1783
1801
  return {
1784
1802
  played: s,
1785
1803
  goalsForPerMatch: W(i, s),
1786
1804
  cleanSheets: N(a, s),
1787
- wonToNil: N(l, s),
1788
- scoringRate: N(d, s),
1805
+ wonToNil: N(d, s),
1806
+ scoringRate: N(l, s),
1789
1807
  scoredInBothHalves: N(h, p),
1790
- scoredFirst: N(F, S),
1808
+ scoredFirst: N(F, _),
1791
1809
  leadingAtHalfTime: N(O, p),
1792
1810
  goalsAgainstPerMatch: W(r, s),
1793
1811
  failedToScore: N(u, s),
1794
1812
  lostToNil: N(c, s),
1795
1813
  concedingRate: N(m, s),
1796
1814
  concededInBothHalves: N(M, p),
1797
- concededFirst: N(U, S),
1815
+ concededFirst: N(U, _),
1798
1816
  losingAtHalfTime: N(B, p),
1799
- avgCornersFor: W($, P.length),
1800
- avgCornersAgainst: W(x, P.length)
1817
+ avgCornersFor: W($, b.length),
1818
+ avgCornersAgainst: W(x, b.length)
1801
1819
  };
1802
1820
  }
1803
- function _t(e, t) {
1821
+ function St(e, t) {
1804
1822
  return e.filter((o) => o.status?.type !== "FINISHED" ? !1 : o.competitorOne.id === t || o.competitorTwo.id === t).map((o) => {
1805
1823
  const n = o.competitorOne.id === t, s = parseInt(o.score?.competitorOne || "0"), i = parseInt(o.score?.competitorTwo || "0"), r = s + i, a = o.periods;
1806
- let l = null;
1824
+ let d = null;
1807
1825
  if (a && Array.isArray(a)) {
1808
- const d = a.find(
1826
+ const l = a.find(
1809
1827
  (u) => u.type === "FIRST_HALF" || u.type === "1ST_HALF"
1810
1828
  );
1811
- if (d?.score) {
1812
- const u = parseInt(d.score.competitorOne || "0"), c = parseInt(d.score.competitorTwo || "0");
1813
- l = u + c;
1829
+ if (l?.score) {
1830
+ const u = parseInt(l.score.competitorOne || "0"), c = parseInt(l.score.competitorTwo || "0");
1831
+ d = u + c;
1814
1832
  }
1815
1833
  }
1816
- return { totalGoals: r, halfTimeGoals: l, isHome: n };
1834
+ return { totalGoals: r, halfTimeGoals: d, isHome: n };
1817
1835
  });
1818
1836
  }
1819
1837
  function y(e, t) {
1820
1838
  return e.length === 0 ? 0 : e.filter((n) => n > t).length / e.length * 100;
1821
1839
  }
1822
1840
  function go(e, t) {
1823
- const o = _t(e, t), n = o.filter((c) => c.isHome), s = o.filter((c) => !c.isHome), i = o.map((c) => c.totalGoals), r = n.map((c) => c.totalGoals), a = s.map((c) => c.totalGoals), l = o.filter((c) => c.halfTimeGoals !== null).map((c) => c.halfTimeGoals), d = n.filter((c) => c.halfTimeGoals !== null).map((c) => c.halfTimeGoals), u = s.filter((c) => c.halfTimeGoals !== null).map((c) => c.halfTimeGoals);
1841
+ const o = St(e, t), n = o.filter((c) => c.isHome), s = o.filter((c) => !c.isHome), i = o.map((c) => c.totalGoals), r = n.map((c) => c.totalGoals), a = s.map((c) => c.totalGoals), d = o.filter((c) => c.halfTimeGoals !== null).map((c) => c.halfTimeGoals), l = n.filter((c) => c.halfTimeGoals !== null).map((c) => c.halfTimeGoals), u = s.filter((c) => c.halfTimeGoals !== null).map((c) => c.halfTimeGoals);
1824
1842
  return {
1825
1843
  over05: {
1826
1844
  home: y(r, 0.5),
@@ -1853,23 +1871,23 @@ function go(e, t) {
1853
1871
  away: y(a, 5.5)
1854
1872
  },
1855
1873
  over05HT: {
1856
- home: y(d, 0.5),
1857
- total: y(l, 0.5),
1874
+ home: y(l, 0.5),
1875
+ total: y(d, 0.5),
1858
1876
  away: y(u, 0.5)
1859
1877
  },
1860
1878
  over15HT: {
1861
- home: y(d, 1.5),
1862
- total: y(l, 1.5),
1879
+ home: y(l, 1.5),
1880
+ total: y(d, 1.5),
1863
1881
  away: y(u, 1.5)
1864
1882
  },
1865
1883
  over25HT: {
1866
- home: y(d, 2.5),
1867
- total: y(l, 2.5),
1884
+ home: y(l, 2.5),
1885
+ total: y(d, 2.5),
1868
1886
  away: y(u, 2.5)
1869
1887
  }
1870
1888
  };
1871
1889
  }
1872
- function St(e, t) {
1890
+ function _t(e, t) {
1873
1891
  const o = e.competitorOne.id === t, n = e.competitorTwo.id === t;
1874
1892
  if (!o && !n || !e.score) return null;
1875
1893
  const s = parseInt(o ? e.score.competitorOne || "0" : e.score.competitorTwo || "0"), i = parseInt(o ? e.score.competitorTwo || "0" : e.score.competitorOne || "0");
@@ -1880,14 +1898,14 @@ function St(e, t) {
1880
1898
  };
1881
1899
  }
1882
1900
  function po(e, t, o, n, s, i) {
1883
- const r = t?.entries.find((L) => L.competitor.id === e), a = o?.entries.find((L) => L.competitor.id === e), l = n?.entries.find((L) => L.competitor.id === e), d = s?.entries.find((L) => L.competitor.id === e), u = i?.entries.find((L) => L.competitor.id === e);
1901
+ const r = t?.entries.find((L) => L.competitor.id === e), a = o?.entries.find((L) => L.competitor.id === e), d = n?.entries.find((L) => L.competitor.id === e), l = s?.entries.find((L) => L.competitor.id === e), u = i?.entries.find((L) => L.competitor.id === e);
1884
1902
  if (!r) return null;
1885
- const c = a?.stats?.goalsFor ?? 0, m = l?.stats?.goalsFor ?? 0, g = r?.stats?.goalsFor ?? 0, p = d?.stats?.goalsAgainst ?? 0, h = u?.stats?.goalsAgainst ?? 0, F = r?.stats?.goalsAgainst ?? 0, S = a?.stats?.played ?? 0, O = l?.stats?.played ?? 0, M = r?.stats?.played ?? 0, U = M > 0 ? g / M : 0, B = M > 0 ? F / M : 0, P = U + B, $ = S > 0 ? c / S : 0, x = O > 0 ? m / O : 0, f = S > 0 ? p / S : 0, v = O > 0 ? h / O : 0, k = $ + f, ne = x + v;
1903
+ const c = a?.stats?.goalsFor ?? 0, m = d?.stats?.goalsFor ?? 0, g = r?.stats?.goalsFor ?? 0, p = l?.stats?.goalsAgainst ?? 0, h = u?.stats?.goalsAgainst ?? 0, F = r?.stats?.goalsAgainst ?? 0, _ = a?.stats?.played ?? 0, O = d?.stats?.played ?? 0, M = r?.stats?.played ?? 0, U = M > 0 ? g / M : 0, B = M > 0 ? F / M : 0, b = U + B, $ = _ > 0 ? c / _ : 0, x = O > 0 ? m / O : 0, f = _ > 0 ? p / _ : 0, v = O > 0 ? h / O : 0, k = $ + f, ne = x + v;
1886
1904
  return {
1887
1905
  homeGoals: c,
1888
1906
  totalGoals: g,
1889
1907
  awayGoals: m,
1890
- homeGamesPlayed: S,
1908
+ homeGamesPlayed: _,
1891
1909
  awayGamesPlayed: O,
1892
1910
  totalGamesPlayed: M,
1893
1911
  homeGoalsConceded: p,
@@ -1895,7 +1913,7 @@ function po(e, t, o, n, s, i) {
1895
1913
  awayGoalsConceded: h,
1896
1914
  gfPerMatch: U,
1897
1915
  gaPerMatch: B,
1898
- gfGaPerMatch: P,
1916
+ gfGaPerMatch: b,
1899
1917
  homeGfPerMatch: $,
1900
1918
  awayGfPerMatch: x,
1901
1919
  homeGaPerMatch: f,
@@ -1906,8 +1924,8 @@ function po(e, t, o, n, s, i) {
1906
1924
  }
1907
1925
  function C(e, t, o, n) {
1908
1926
  const s = e.filter((r) => {
1909
- const a = r.competitorOne.id === t, l = r.competitorTwo.id === t;
1910
- return !(!a && !l || r.status?.type !== "FINISHED" || n === "home" && !a || n === "away" && !l);
1927
+ const a = r.competitorOne.id === t, d = r.competitorTwo.id === t;
1928
+ return !(!a && !d || r.status?.type !== "FINISHED" || n === "home" && !a || n === "away" && !d);
1911
1929
  }).sort((r, a) => new Date(a.timing.kickoffTime).getTime() - new Date(r.timing.kickoffTime).getTime());
1912
1930
  if (s.length === 0) return null;
1913
1931
  let i = 0;
@@ -2053,7 +2071,7 @@ function w(e, t) {
2053
2071
  const o = /* @__PURE__ */ new Map();
2054
2072
  return e.forEach((n) => {
2055
2073
  if (n.status?.type !== "FINISHED") return;
2056
- const s = St(n, t);
2074
+ const s = _t(n, t);
2057
2075
  if (!s) return;
2058
2076
  const i = s.isHome ? n.competitorTwo.id : n.competitorOne.id, r = s.isHome ? n.competitorTwo : n.competitorOne, a = o.get(i) || {
2059
2077
  opponentId: i,
@@ -2064,16 +2082,16 @@ function w(e, t) {
2064
2082
  }), o;
2065
2083
  }
2066
2084
  function ho(e, t, o, n, s, i, r) {
2067
- const a = w(e, t), l = w(e, o), d = /* @__PURE__ */ new Set([
2085
+ const a = w(e, t), d = w(e, o), l = /* @__PURE__ */ new Set([
2068
2086
  ...a.keys(),
2069
- ...l.keys(),
2087
+ ...d.keys(),
2070
2088
  t,
2071
2089
  // Include home team as row for away team results
2072
2090
  o
2073
2091
  // Include away team as row for home team results
2074
2092
  ]), u = [];
2075
- return d.forEach((c) => {
2076
- const m = a.get(c), g = l.get(c);
2093
+ return l.forEach((c) => {
2094
+ const m = a.get(c), g = d.get(c);
2077
2095
  if (!m && !g && c !== t && c !== o)
2078
2096
  return;
2079
2097
  let p, h;
@@ -2092,8 +2110,8 @@ function ho(e, t, o, n, s, i, r) {
2092
2110
  }
2093
2111
  export {
2094
2112
  pt as GOAL_EVENT_TYPES,
2095
- _o as addProviderRef,
2096
- b as aggregatePlayerStatisticsFromMatches,
2113
+ So as addProviderRef,
2114
+ P as aggregatePlayerStatisticsFromMatches,
2097
2115
  yt as analyzeMatch,
2098
2116
  W as calcAverage,
2099
2117
  N as calcPercentage,
@@ -2106,14 +2124,14 @@ export {
2106
2124
  Ut as getActiveSeason,
2107
2125
  ft as getAllPlayerStatisticsFromMatches,
2108
2126
  Nt as getBasketballLivescore,
2109
- So as getBatchMatchOdds,
2127
+ _o as getBatchMatchOdds,
2110
2128
  A as getConfig,
2111
2129
  Lt as getFansUnitedFootballCompetition,
2112
2130
  Mt as getFansUnitedFootballCompetitions,
2113
- bt as getFansUnitedFootballMatch,
2131
+ Pt as getFansUnitedFootballMatch,
2114
2132
  kt as getFansUnitedFootballMatches,
2115
2133
  Gt as getFansUnitedFootballPlayer,
2116
- Pt as getFansUnitedFootballPlayers,
2134
+ bt as getFansUnitedFootballPlayers,
2117
2135
  Ht as getFansUnitedFootballSearch,
2118
2136
  Dt as getFansUnitedFootballTeam,
2119
2137
  It as getFansUnitedFootballTeams,
@@ -2121,20 +2139,20 @@ export {
2121
2139
  Ao as getFootballLivescore,
2122
2140
  Oo as getFootballMatch,
2123
2141
  No as getFootballMatchCommentary,
2124
- Ro as getFootballMatchEvents,
2125
- Eo as getFootballMatchLineups,
2142
+ Eo as getFootballMatchEvents,
2143
+ Ro as getFootballMatchLineups,
2126
2144
  Fo as getFootballMatchOdds,
2127
2145
  Mo as getFootballMatchStatistics,
2128
2146
  Lo as getFootballMatches,
2129
2147
  Do as getFootballPlayerSeasonStatistics,
2130
2148
  Io as getFootballSeasonDetails,
2131
2149
  Go as getFootballStandings,
2132
- Po as getFootballTeam,
2133
- bo as getFootballTeamSquad,
2150
+ bo as getFootballTeam,
2151
+ Po as getFootballTeamSquad,
2134
2152
  ko as getLeaderboardMatches,
2135
2153
  Ho as getLeaderboardTeamMatches,
2136
2154
  Uo as getLeaderboardTemplate,
2137
- St as getMatchResult,
2155
+ _t as getMatchResult,
2138
2156
  ut as getMostCardedPlayersFromMatches,
2139
2157
  lo as getOpponentScore,
2140
2158
  Bo as getProviderRefId,
@@ -2158,20 +2176,20 @@ export {
2158
2176
  Vt as getTeamTopScorers,
2159
2177
  xt as getTeamUpcomingMatches,
2160
2178
  ho as getTeamsCommonOpponents,
2161
- Rt as getTennisLivescore,
2162
- lt as getTopAssistersFromMatches,
2179
+ Et as getTennisLivescore,
2180
+ dt as getTopAssistersFromMatches,
2163
2181
  mt as getTopGoalContributorsFromMatches,
2164
- dt as getTopScorersFromMatches,
2182
+ lt as getTopScorersFromMatches,
2165
2183
  $o as isConfigured,
2166
2184
  ao as isMatchFinished,
2167
2185
  ht as isTeamAway,
2168
2186
  J as isTeamHome,
2169
2187
  ro as isTeamInMatch,
2170
- Et as search,
2188
+ Rt as search,
2171
2189
  Ot as searchFootball,
2172
2190
  xo as setConfig,
2173
2191
  T as streakFilters,
2174
- _ as toProviderRefArray,
2192
+ S as toProviderRefArray,
2175
2193
  eo as useAllPlayerStatisticsFromMatches,
2176
2194
  Zt as useMostCardedPlayersFromMatches,
2177
2195
  to as usePlayerStatistics,
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.3",
7
+ "version": "0.8.4",
8
8
  "type": "module",
9
9
  "main": "./fansunited-data-layer.cjs",
10
10
  "module": "./fansunited-data-layer.js",