fansunited-data-layer 0.6.2 → 0.6.3
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":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/api/fansunited/football/competitions/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,8BAA8B,EAA2B,MAAM,SAAS,CAAC;AAEvF;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,iCAAiC,CACnD,OAAO,CAAC,EAAE,8BAA8B,EACxC,MAAM,CAAC,EAAE,eAAe,GACzB,OAAO,CAAC,mBAAmB,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/api/fansunited/football/competitions/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,8BAA8B,EAA2B,MAAM,SAAS,CAAC;AAEvF;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,iCAAiC,CACnD,OAAO,CAAC,EAAE,8BAA8B,EACxC,MAAM,CAAC,EAAE,eAAe,GACzB,OAAO,CAAC,mBAAmB,EAAE,CAAC,CA2EhC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/lib/api/fansunited/http.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAa,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC3B,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,uBAAuB;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;IACvD,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,2DAA2D;IAC3D,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,kEAAkE;IAClE,MAAM,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACjC;;;;;;;;;;OAUG;IACH,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAC/C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB,
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/lib/api/fansunited/http.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAa,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC3B,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,uBAAuB;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;IACvD,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,2DAA2D;IAC3D,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,kEAAkE;IAClE,MAAM,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACjC;;;;;;;;;;OAUG;IACH,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAC/C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB,CAwFrE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=require("./matches-DKjnuuq_.cjs"),E=require("react");function le(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:m.toProviderRefArray(e.country.uuid)},assets:e.url_logo?{logo:e.url_logo}:void 0,providerRef:m.toProviderRefArray(e.uuid)}}function de(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:m.toProviderRefArray(e.country.uuid)},assets:e.url_thumb?{photo:e.url_thumb}:void 0,providerRef:m.toProviderRefArray(e.uuid)}}function ue(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:m.toProviderRefArray(e.country.uuid)},assets:e.url_logo?{logo:e.url_logo}:void 0,providerRef:m.toProviderRefArray(e.uuid)}}function me(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:m.toProviderRefArray(e.country.uuid)},assets:e.url_thumb?{photo:e.url_thumb}:void 0,providerRef:m.toProviderRefArray(e.uuid)}}function ge(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:m.toProviderRefArray(e.city.country.uuid)},providerRef:m.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:m.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:m.toProviderRefArray(e.uuid)}}function fe(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:m.toProviderRefArray(e.country.uuid)},assets:e.url_thumb?{photo:e.url_thumb}:void 0,providerRef:m.toProviderRefArray(e.uuid)}}function pe(e){switch(e.entity_type){case"tournament":return le(e);case"player":return de(e);case"team":return ue(e);case"president":return me(e);case"venue":return ge(e);case"coach":return fe(e);default:throw new Error(`Unknown entity type: ${e.entity_type}`)}}async function ye(e,t){if(!e.query||e.query.trim()==="")return{results:[],query:e.query||""};const o=t||m.getConfig(),{sportal365Sports:n}=o,s=e.entityTypes&&e.entityTypes.length>0?e.entityTypes:["tournament","player","team","president","venue","coach"],r=await m.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!r||r.length===0?{results:[],query:e.query}:{results:r.map(pe),query:e.query}}const he=m.createHttpClient(m.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 V(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 Q(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 Te(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 ve(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 Se(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 Ce(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 _e(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?Q(e.city):void 0,providerRef:e.id}}function Ae(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 Fe(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?V(e.home_team):void 0,awayTeam:e.away_team?V(e.away_team):void 0,providerRef:e.id}}function Me(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 Oe(e){switch(e.entity_type){case"team":return V(e);case"city":return Q(e);case"horse":return Te(e);case"player":return ve(e);case"coach":return Se(e);case"referee":return Ce(e);case"venue":return _e(e);case"tournament":case"competition":return Ae(e);case"match":return Fe(e);case"country":return Me(e);default:{const t=e;throw new Error(`Unknown entity type: ${t.entity_type}`)}}}async function Re(e={},t){const o=t??m.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(Oe),query:e.name}}const Pe=m.createHttpClient(m.SPORTAL365_STATISTICS_DOMAIN);function Ge(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 be(e,t){const o=t||m.getConfig(),n=e.next??{revalidate:600},s=await Pe.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 Ge(s.data[0],e.seasonId)}function De(e){const t=e.replace(/\/$/,"");function o(n){return`${t}${n}`}return{async get(n){const s=n.config||m.getConfig(),{fansUnited:r}=s;if(!r)throw new Error("Fans United configuration is missing. Add 'fansUnited' with 'apiKey' and 'clientId' to your config.");if(!r.apiKey||!r.clientId)throw new Error("Fans United configuration requires both 'apiKey' and 'clientId'");const i=new URL(o(n.path));if(i.searchParams.set("key",r.apiKey),i.searchParams.set("client_id",r.clientId),n.params)for(const[l,u]of Object.entries(n.params))u!==void 0&&(Array.isArray(u)?u.length>0&&i.searchParams.set(l,u.join(",")):i.searchParams.set(l,u));const c=await fetch(i.toString(),{method:"GET",headers:{Accept:"application/json","Content-Type":"application/json",...n.headers},signal:AbortSignal.timeout(3e4),...n.next&&{next:n.next}});if(!c.ok){let l=`Fans United API error: ${c.status} ${c.statusText}`;try{const u=await c.text();u&&(l+=` - ${u}`)}catch(u){console.error("[Fans United HTTP] Failed to read error response body:",{error:u instanceof Error?u.message:String(u),status:c.status,statusText:c.statusText})}throw new Error(l)}return c.json()}}}const Ee="https://football.fansunitedapi.com",D=De(Ee);function Ne(e){return{id:String(e.id),name:e.name,active:e.active,providerRef:[{provider:"fansunited",id:String(e.id)}]}}function Ie(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(Ne)),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 He(e){return e.map(Ie)}async function Le(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 D.get({path:"/v1/competitions",params:o,config:t,next:e?.next});console.log("Raw API response (first item):",JSON.stringify(n.data[0],null,2)),console.log("Total raw competitions:",n.data.length);const s=n.data.map(l=>l.id),r=new Set(s);console.log("Unique raw competition IDs:",r.size),s.length!==r.size&&console.warn("⚠️ API returned duplicate competitions!");const i=He(n.data),a=new Set,c=i.filter(l=>a.has(l.id)?!1:(a.add(l.id),!0));return i.length!==c.length&&console.warn(`Removed ${i.length-c.length} duplicate competitions`),c}function ke(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 Be(e){return{id:e.id,name:e.name,type:e.type?.toUpperCase()||"LEAGUE",gender:e.gender?.toUpperCase(),country:e.country?ke(e.country):void 0,assets:e.assets?.logo?{logo:e.assets.logo}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function Ue(e){return Be(e.data)}async function $e(e,t,o){const n=o||m.getConfig(),s={};t?.lang&&(s.lang=t.lang);const r=await D.get({path:`/v1/competitions/${e}`,params:s,next:t?.next,config:n});return Ue(r)}function xe(e){return{id:e.id,name:e.name,code:e.country_code,flag:e.assets?.flag,providerRef:[{provider:"fansunited",id:e.id}]}}function We(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?xe(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 qe(e){return We(e.data)}async function je(e,t,o){const n=o||m.getConfig(),s={};t?.lang&&(s.lang=t.lang);const r=await D.get({path:`/v1/teams/${e}`,params:s,next:t?.next,config:n});return qe(r)}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 Ve(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 Ye(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 X(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(Ve),competitions:e.competitions?.map(Ye),providerRef:[{provider:"fansunited",id:e.id}]}}function ze(e){return X(e.data)}function Ke(e){return e.data.map(X)}async function Je(e,t,o){const n=o||m.getConfig(),s={};t?.lang&&(s.lang=t.lang);const r=await D.get({path:`/v1/players/${e}`,params:s,next:t?.next,config:n});return ze(r)}async function Qe(e,t){const o=t||m.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 D.get({path:"/v1/players",params:n,next:e?.next,config:o});return Ke(s)}async function Xe(e,t,o){const n=o||m.getConfig(),s={};t?.lang&&(s.lang=t.lang);const r=await D.get({path:`/v1/matches/${e}`,params:s,next:t?.next,config:n});return m.transformMatch(r)}async function Ze(e,t){const o=t||m.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 D.get({path:"/v1/matches",params:n,next:e?.next,config:o});return m.transformMatches(s)}function z(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 we(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?z(e.country):void 0,assets:e.assets?.logo?{logo:e.assets.logo}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function et(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?z(e.country):void 0,assets:e.assets?.headshot?{photo:e.assets.headshot}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function tt(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?z(e.country):void 0,assets:e.assets?.logo?{logo:e.assets.logo}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function j(e){switch(e.entity_type){case"competition":{const t=we(e);return{source:"FOOTBALL",entityType:"competition",entityId:e.id,entityData:t}}case"player":{const t=et(e);return{source:"FOOTBALL",entityType:"player",entityId:e.id,entityData:t}}case"team":{const t=tt(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 ot(e,t){if(!e.query||e.query.trim()==="")return[];const o=t||m.getConfig(),n={q:e.query.trim()},r=(e.entityTypes&&e.entityTypes.length>0?e.entityTypes:["competition","team","player"]).map(c=>{switch(c){case"team":return"teams";case"player":return"players";case"competition":return"competitions";default:return c}});n.entities=r.join(","),e.lang&&(n.lang=e.lang),e.limit&&(n.limit=String(e.limit));const i=await D.get({path:"/v1/search",params:n,next:e.next,config:o}),a=[];return i.data&&(i.data.competitions&&i.data.competitions.forEach(c=>{const l=j({...c,entity_type:"competition"});l&&a.push(l)}),i.data.teams&&i.data.teams.forEach(c=>{const l=j({...c,entity_type:"team"});l&&a.push(l)}),i.data.players&&i.data.players.forEach(c=>{const l=j({...c,entity_type:"player"});l&&a.push(l)})),a}function st(e){return!e.seasons||e.seasons.length===0?void 0:e.seasons.find(o=>o.active)??e.seasons[0]}function nt(e,t){const o=new Date,n=t.filter(s=>{const r=s.competitorOne.id===e||s.competitorTwo.id===e,i=s.status.type==="NOT_STARTED",a=new Date(s.timing.kickoffTime)>=o;return r&&i&&a});return n.sort((s,r)=>new Date(s.timing.kickoffTime).getTime()-new Date(r.timing.kickoffTime).getTime()),n[0]}function rt(e,t){const o=new Date,n=t.filter(s=>{const r=s.competitorOne.id===e||s.competitorTwo.id===e,i=s.status.type==="FINISHED",a=new Date(s.timing.kickoffTime)<=o;return r&&i&&a});return n.sort((s,r)=>new Date(r.timing.kickoffTime).getTime()-new Date(s.timing.kickoffTime).getTime()),n[0]}function it(e,t){const o=new Date;return t.filter(s=>{const r=s.competitorOne.id===e||s.competitorTwo.id===e,i=s.status.type==="NOT_STARTED"||s.status.type==="LIVE",a=new Date(s.timing.kickoffTime)>=o||s.status.type==="LIVE";return r&&i&&a}).sort((s,r)=>new Date(s.timing.kickoffTime).getTime()-new Date(r.timing.kickoffTime).getTime())}function at(e,t){const o=new Date;return t.filter(s=>{const r=s.competitorOne.id===e||s.competitorTwo.id===e,i=s.status.type==="FINISHED",a=new Date(s.timing.kickoffTime)<=o;return r&&i&&a}).sort((s,r)=>new Date(r.timing.kickoffTime).getTime()-new Date(s.timing.kickoffTime).getTime())}function ct(e,t,o){const n=o.filter(i=>i.status.type==="FINISHED"),s=o.filter(i=>i.status.type==="NOT_STARTED"||i.status.type==="POSTPONED"),r=t.entries.map(i=>{const a=i.competitor.id,c=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 u,d;return c.forEach(g=>{const p=g.competitorOne.id===e,y=parseInt(g.score?.competitorOne??"0"),T=parseInt(g.score?.competitorTwo??"0"),R=p?y:T,_=p?T:y;let F;R>_?F="W":R===_?F="D":F="L";const P={result:F,score:`${y} - ${T}`,date:g.timing.kickoffTime,matchId:g.id,isUpcoming:!1};p?u=P:d=P}),l.forEach(g=>{const p=g.competitorOne.id===e;p&&!u?u={date:g.timing.kickoffTime,matchId:g.id,isUpcoming:!0}:!p&&!d&&(d={date:g.timing.kickoffTime,matchId:g.id,isUpcoming:!0})}),{rank:i.rank,teamId:i.competitor.id,teamName:i.competitor.name,teamShortName:i.competitor.shortName,teamLogo:i.competitor.logo,gamesPlayed:i.stats.played??0,points:i.stats.points??0,homeResult:u,awayResult:d}});return{teamId:e,rows:r}}function lt(e,t=10){return e.players.filter(o=>(o.seasonStatistics?.goals??0)>0).sort((o,n)=>{const s=o.seasonStatistics?.goals??0,r=n.seasonStatistics?.goals??0;if(r!==s)return r-s;const i=o.seasonStatistics?.assists??0;return(n.seasonStatistics?.assists??0)-i}).slice(0,t)}function dt(e,t=10){return e.players.filter(o=>(o.seasonStatistics?.assists??0)>0).sort((o,n)=>{const s=o.seasonStatistics?.assists??0,r=n.seasonStatistics?.assists??0;if(r!==s)return r-s;const i=o.seasonStatistics?.goals??0;return(n.seasonStatistics?.goals??0)-i}).slice(0,t)}function ut(e,t=10){return e.players.filter(o=>(o.seasonStatistics?.appearances??0)>0).sort((o,n)=>{const s=o.seasonStatistics?.appearances??0,r=n.seasonStatistics?.appearances??0;if(r!==s)return r-s;const i=o.seasonStatistics?.minutes??0;return(n.seasonStatistics?.minutes??0)-i}).slice(0,t)}function mt(e,t=10){return e.players.filter(o=>(o.seasonStatistics?.minutes??0)>0).sort((o,n)=>{const s=o.seasonStatistics?.minutes??0,r=n.seasonStatistics?.minutes??0;if(r!==s)return r-s;const i=o.seasonStatistics?.appearances??0;return(n.seasonStatistics?.appearances??0)-i}).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,r=n.seasonStatistics?.cleansheets??0;if(r!==s)return r-s;const i=o.seasonStatistics?.appearances??0;return(n.seasonStatistics?.appearances??0)-i}).slice(0,t)}function ft(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,r=o.seasonStatistics?.redCards??0,i=n.seasonStatistics?.yellowCards??0,a=n.seasonStatistics?.redCards??0,c=s+r*3,l=i+a*3;return l!==c?l-c:a!==r?a-r:i-s}).slice(0,t)}function N(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 r=s.primaryPlayer.id;t.has(r)||t.set(r,{playerId:s.primaryPlayer.id,seasonId:"",teamId:"",goals:0,assists:0,yellowCards:0,redCards:0,appearances:0});const i=t.get(r);o.has(r)||o.set(r,new Set),o.get(r).add(n.id),(s.type==="GOAL"||s.type==="PENALTY_GOAL")&&(i.goals=(i.goals??0)+1),s.type==="YELLOW_CARD"&&(i.yellowCards=(i.yellowCards??0)+1),(s.type==="RED_CARD"||s.type==="YELLOW_RED_CARD")&&(i.redCards=(i.redCards??0)+1)}if(s.secondaryPlayer&&(s.type==="GOAL"||s.type==="PENALTY_GOAL")){const r=s.secondaryPlayer.id;t.has(r)||t.set(r,{playerId:s.secondaryPlayer.id,seasonId:"",teamId:"",goals:0,assists:0,yellowCards:0,redCards:0,appearances:0});const i=t.get(r);i.assists=(i.assists??0)+1,o.has(r)||o.set(r,new Set),o.get(r).add(n.id)}})}),o.forEach((n,s)=>{const r=t.get(s);r&&r.appearances!==void 0&&(r.appearances=n.size)}),t}function B(e){return Array.from(e.values()).map(t=>({...t,totalCards:(t.yellowCards??0)+(t.redCards??0)}))}function Z(e,t=10){const o=N(e);return B(o).filter(s=>(s.goals??0)>0).sort((s,r)=>{const i=s.goals??0,a=r.goals??0;if(a!==i)return a-i;const c=s.assists??0;return(r.assists??0)-c}).slice(0,t)}function w(e,t=10){const o=N(e);return B(o).filter(s=>(s.assists??0)>0).sort((s,r)=>{const i=s.assists??0,a=r.assists??0;if(a!==i)return a-i;const c=s.goals??0;return(r.goals??0)-c}).slice(0,t)}function ee(e,t=10){const o=N(e);return B(o).filter(s=>(s.totalCards??0)>0).sort((s,r)=>{const i=(s.yellowCards??0)+(s.redCards??0)*3,a=(r.yellowCards??0)+(r.redCards??0)*3;if(a!==i)return a-i;const c=s.redCards??0,l=r.redCards??0;if(l!==c)return l-c;const u=s.yellowCards??0;return(r.yellowCards??0)-u}).slice(0,t)}function te(e,t=10){const o=N(e);return B(o).filter(s=>(s.goals??0)+(s.assists??0)>0).sort((s,r)=>{const i=(s.goals??0)+(s.assists??0),a=(r.goals??0)+(r.assists??0);if(a!==i)return a-i;const c=s.goals??0,l=r.goals??0;if(l!==c)return l-c;const u=s.assists??0;return(r.assists??0)-u}).slice(0,t)}function oe(e){const t=N(e);return B(t).sort((n,s)=>{const r=n.appearances??0,i=s.appearances??0;if(i!==r)return i-r;const a=(n.goals??0)+(n.assists??0);return(s.goals??0)+(s.assists??0)-a})}function pt(e,t=10){return E.useMemo(()=>Z(e,t),[e,t])}function yt(e,t=10){return E.useMemo(()=>w(e,t),[e,t])}function ht(e,t=10){return E.useMemo(()=>ee(e,t),[e,t])}function Tt(e,t=10){return E.useMemo(()=>te(e,t),[e,t])}function vt(e){return E.useMemo(()=>oe(e),[e])}function se(e){return E.useMemo(()=>N(e),[e])}function St(e,t){const o=se(e);return E.useMemo(()=>o.get(t),[o,t])}const ne=["GOAL","PENALTY_GOAL","OWN_GOAL"];function A(e,t){return t>0?e/t*100:0}function L(e,t){return t>0?e/t:0}function Ct(e,t=!1,o=2){return t?`${Math.round(e)}%`:Number.isInteger(e)?e.toString():e.toFixed(o)}function _t(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 At(e,t){const o=typeof e=="string"?parseFloat(e):e;return isNaN(o)||t===0?"0.0":(o/t).toFixed(1)}function Ft(e){const t=parseFloat(e);return isNaN(t)?"0%":`${Math.round(t)}%`}function re(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"),r=o?n:s,i=o?s:n;let a=null,c=null;const l=e.score.breakdown?.halfTime;if(l){const p=parseInt(l.competitorOne||"0"),y=parseInt(l.competitorTwo||"0");a=o?p:y,c=o?y:p}const u=e.statistics;let d=null,g=null;if(u){const p=u.find?.(y=>y.type==="CORNERS");p&&(d=o?p.competitorOne:p.competitorTwo,g=o?p.competitorTwo:p.competitorOne)}return{goalsFor:r,goalsAgainst:i,halfTimeGoalsFor:a,halfTimeGoalsAgainst:c,cornersFor:d,cornersAgainst:g,isWin:r>i,isDraw:r===i,isLoss:r<i}}function q(e,t){return e.competitorOne.id===t}function ie(e,t){return e.competitorTwo.id===t}function Mt(e,t){return q(e,t)||ie(e,t)}function Ot(e){return e.status?.type==="FINISHED"}function Rt(e,t){const o=q(e,t);return parseInt(o?e.score?.competitorOne||"0":e.score?.competitorTwo||"0")}function Pt(e,t){const o=q(e,t);return parseInt(o?e.score?.competitorTwo||"0":e.score?.competitorOne||"0")}function Gt(e,t,o){const n=e.filter(u=>{if(u.status?.type!=="FINISHED"||!u.score)return!1;const d=u.competitorOne.id===t||u.competitorTwo.id===t,g=u.competitorOne.id===o||u.competitorTwo.id===o;return d&&g});let s=0,r=0,i=0,a=0,c=0;n.forEach(u=>{const d=parseInt(u.score?.competitorOne||"0"),g=parseInt(u.score?.competitorTwo||"0"),p=u.competitorOne.id===t,y=p?d:g,T=p?g:d;a+=y,c+=T,y>T?s++:T>y?r++:i++});const l=n.length;return{totalMatches:l,homeTeamWins:s,awayTeamWins:r,draws:i,homeTeamGoals:a,awayTeamGoals:c,homeTeamWinPercentage:l>0?s/l*100:0,awayTeamWinPercentage:l>0?r/l*100:0,drawPercentage:l>0?i/l*100:0,homeTeamAvgGoals:l>0?a/l:0,awayTeamAvgGoals:l>0?c/l:0}}function bt(e,t,o,n=5){return e.filter(r=>{if(r.status?.type!=="FINISHED"||!r.score)return!1;const i=r.competitorOne.id===t||r.competitorTwo.id===t,a=r.competitorOne.id===o||r.competitorTwo.id===o;return i&&a}).sort((r,i)=>new Date(i.timing.kickoffTime).getTime()-new Date(r.timing.kickoffTime).getTime()).slice(0,n).map(r=>{const i=parseInt(r.score?.competitorOne||"0"),a=parseInt(r.score?.competitorTwo||"0"),c=r.competitorOne.id===t,l=c?i:a,u=c?a:i;let d;return l>u?d="home":u>l?d="away":d="draw",{id:r.id,date:new Date(r.timing.kickoffTime).toLocaleDateString("en-GB",{day:"numeric",month:"short",year:"numeric"}),homeTeamName:r.competitorOne.name,awayTeamName:r.competitorTwo.name,homeTeamLogo:r.competitorOne.assets?.logo,awayTeamLogo:r.competitorTwo.assets?.logo,homeScore:i,awayScore:a,venue:r.venue?.name,winner:d}})}function Dt(e,t,o){return e.filter(n=>{const s=n.competitorOne.id===t,r=n.competitorTwo.id===t;return!s&&!r?!1:o==="home"?s:r}).map(n=>{const s=n.competitorOne.id===t;return re(n,t,s)}).filter(n=>n!==null)}function K(e,t,o,n){let s=0;for(const r of e){const i=r.competitorOne.id===t,a=r.competitorTwo.id===t;if(!i&&!a||o==="home"&&!i||o==="away"&&!a||r.status?.type!=="FINISHED")continue;const c=r.mainEvents;if(!c||!Array.isArray(c))continue;const l=c.filter(y=>y.type&&ne.includes(y.type)).sort((y,T)=>{const R=y.minute??0,_=T.minute??0;return R!==_?R-_:(y.injuryMinute??0)-(T.injuryMinute??0)});if(l.length===0)continue;const u=l[0],d=i?"ONE":"TWO",g=u.type==="OWN_GOAL";let p;g?p=u.competitorPosition!==d:p=u.competitorPosition===d,(n==="scored"&&p||n==="conceded"&&!p)&&s++}return s}function Et(e,t,o){let n=0;for(const s of e){const r=s.competitorOne.id===t,i=s.competitorTwo.id===t;if(!r&&!i||o==="home"&&!r||o==="away"&&!i||s.status?.type!=="FINISHED")continue;const a=s.mainEvents;a&&Array.isArray(a)&&n++}return n}function Nt(e,t,o){const n=Dt(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 r=n.reduce((f,S)=>f+S.goalsFor,0),i=n.reduce((f,S)=>f+S.goalsAgainst,0),a=n.filter(f=>f.goalsAgainst===0).length,c=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,d=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,H=f.goalsFor-S;return S>0&&H>0}).length,R=K(e,t,o,"scored"),_=Et(e,t,o),F=p.filter(f=>f.halfTimeGoalsFor>f.halfTimeGoalsAgainst).length,P=p.filter(f=>{const S=f.halfTimeGoalsAgainst,H=f.goalsAgainst-S;return S>0&&H>0}).length,U=K(e,t,o,"conceded"),$=p.filter(f=>f.halfTimeGoalsAgainst>f.halfTimeGoalsFor).length,I=n.filter(f=>f.cornersFor!==null),x=I.reduce((f,S)=>f+(S.cornersFor||0),0),W=I.reduce((f,S)=>f+(S.cornersAgainst||0),0);return{played:s,goalsForPerMatch:L(r,s),cleanSheets:A(a,s),wonToNil:A(c,s),scoringRate:A(l,s),scoredInBothHalves:A(T,y),scoredFirst:A(R,_),leadingAtHalfTime:A(F,y),goalsAgainstPerMatch:L(i,s),failedToScore:A(u,s),lostToNil:A(d,s),concedingRate:A(g,s),concededInBothHalves:A(P,y),concededFirst:A(U,_),losingAtHalfTime:A($,y),avgCornersFor:L(x,I.length),avgCornersAgainst:L(W,I.length)}}function It(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"),r=parseInt(o.score?.competitorTwo||"0"),i=s+r,a=o.periods;let c=null;if(a&&Array.isArray(a)){const l=a.find(u=>u.type==="FIRST_HALF"||u.type==="1ST_HALF");if(l?.score){const u=parseInt(l.score.competitorOne||"0"),d=parseInt(l.score.competitorTwo||"0");c=u+d}}return{totalGoals:i,halfTimeGoals:c,isHome:n}})}function h(e,t){return e.length===0?0:e.filter(n=>n>t).length/e.length*100}function Ht(e,t){const o=It(e,t),n=o.filter(d=>d.isHome),s=o.filter(d=>!d.isHome),r=o.map(d=>d.totalGoals),i=n.map(d=>d.totalGoals),a=s.map(d=>d.totalGoals),c=o.filter(d=>d.halfTimeGoals!==null).map(d=>d.halfTimeGoals),l=n.filter(d=>d.halfTimeGoals!==null).map(d=>d.halfTimeGoals),u=s.filter(d=>d.halfTimeGoals!==null).map(d=>d.halfTimeGoals);return{over05:{home:h(i,.5),total:h(r,.5),away:h(a,.5)},over15:{home:h(i,1.5),total:h(r,1.5),away:h(a,1.5)},over25:{home:h(i,2.5),total:h(r,2.5),away:h(a,2.5)},over35:{home:h(i,3.5),total:h(r,3.5),away:h(a,3.5)},over45:{home:h(i,4.5),total:h(r,4.5),away:h(a,4.5)},over55:{home:h(i,5.5),total:h(r,5.5),away:h(a,5.5)},over05HT:{home:h(l,.5),total:h(c,.5),away:h(u,.5)},over15HT:{home:h(l,1.5),total:h(c,1.5),away:h(u,1.5)},over25HT:{home:h(l,2.5),total:h(c,2.5),away:h(u,2.5)}}}function ae(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"),r=parseInt(o?e.score.competitorTwo||"0":e.score.competitorOne||"0");let i;return s>r?i="W":s<r?i="L":i="D",{result:{score:`${s}:${r}`,result:i,isHome:o},isHome:o}}function Lt(e,t,o,n,s,r){const i=t?.entries.find(G=>G.competitor.id===e),a=o?.entries.find(G=>G.competitor.id===e),c=n?.entries.find(G=>G.competitor.id===e),l=s?.entries.find(G=>G.competitor.id===e),u=r?.entries.find(G=>G.competitor.id===e);if(!i)return null;const d=a?.stats?.goalsFor??0,g=c?.stats?.goalsFor??0,p=i?.stats?.goalsFor??0,y=l?.stats?.goalsAgainst??0,T=u?.stats?.goalsAgainst??0,R=i?.stats?.goalsAgainst??0,_=a?.stats?.played??0,F=c?.stats?.played??0,P=i?.stats?.played??0,U=P>0?p/P:0,$=P>0?R/P:0,I=U+$,x=_>0?d/_:0,W=F>0?g/F:0,f=_>0?y/_:0,S=F>0?T/F:0,H=x+f,ce=W+S;return{homeGoals:d,totalGoals:p,awayGoals:g,homeGamesPlayed:_,awayGamesPlayed:F,totalGamesPlayed:P,homeGoalsConceded:y,totalGoalsConceded:R,awayGoalsConceded:T,gfPerMatch:U,gaPerMatch:$,gfGaPerMatch:I,homeGfPerMatch:x,awayGfPerMatch:W,homeGaPerMatch:f,awayGaPerMatch:S,homeGfGaPerMatch:H,awayGfGaPerMatch:ce}}function C(e,t,o,n){const s=e.filter(i=>{const a=i.competitorOne.id===t,c=i.competitorTwo.id===t;return!(!a&&!c||i.status?.type!=="FINISHED"||n==="home"&&!a||n==="away"&&!c)}).sort((i,a)=>new Date(a.timing.kickoffTime).getTime()-new Date(i.timing.kickoffTime).getTime());if(s.length===0)return null;let r=0;for(const i of s){const a=i.competitorOne.id===t;if(o(i,t,a))r++;else break}return r>0?r: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 k(e,t,o){return{win:C(e,t,v.win,o),draw:C(e,t,v.draw,o),loss:C(e,t,v.loss,o),noWin:C(e,t,v.noWin,o),noDraw:C(e,t,v.noDraw,o),noDefeat:C(e,t,v.noDefeat,o),scored:C(e,t,v.scored,o),conceded:C(e,t,v.conceded,o),noGoalScored:C(e,t,v.noGoalScored,o),noGoalConceded:C(e,t,v.noGoalConceded,o),over25:C(e,t,v.over25,o),under25:C(e,t,v.under25,o),scoredTwice:C(e,t,v.scoredTwice,o),concededTwice:C(e,t,v.concededTwice,o)}}function kt(e,t,o){const n=k(e,t,"home"),s=k(e,t),r=k(e,o,"away"),i=k(e,o);return[{label:"Consecutive wins",homeTeam:{home:n.win,total:s.win},awayTeam:{total:i.win,home:r.win},colorType:"neutral"},{label:"Consecutive draws",homeTeam:{home:n.draw,total:s.draw},awayTeam:{total:i.draw,home:r.draw},colorType:"neutral"},{label:"Consecutive defeats",homeTeam:{home:n.loss,total:s.loss},awayTeam:{total:i.loss,home:r.loss},colorType:"neutral"},{label:"No win",homeTeam:{home:n.noWin,total:s.noWin},awayTeam:{total:i.noWin,home:r.noWin},colorType:"negative"},{label:"No draw",homeTeam:{home:n.noDraw,total:s.noDraw},awayTeam:{total:i.noDraw,home:r.noDraw},colorType:"neutral"},{label:"No defeat",homeTeam:{home:n.noDefeat,total:s.noDefeat},awayTeam:{total:i.noDefeat,home:r.noDefeat},colorType:"positive"},{label:"Scored at least once",homeTeam:{home:n.scored,total:s.scored},awayTeam:{total:i.scored,home:r.scored},colorType:"positive"},{label:"Conceded at least once",homeTeam:{home:n.conceded,total:s.conceded},awayTeam:{total:i.conceded,home:r.conceded},colorType:"negative"},{label:"No goal scored",homeTeam:{home:n.noGoalScored,total:s.noGoalScored},awayTeam:{total:i.noGoalScored,home:r.noGoalScored},colorType:"neutral"},{label:"No goal conceded",homeTeam:{home:n.noGoalConceded,total:s.noGoalConceded},awayTeam:{total:i.noGoalConceded,home:r.noGoalConceded},colorType:"neutral"},{label:"GS + GC over 2.5",homeTeam:{home:n.over25,total:s.over25},awayTeam:{total:i.over25,home:r.over25},colorType:"neutral"},{label:"GS + GC under 2.5",homeTeam:{home:n.under25,total:s.under25},awayTeam:{total:i.under25,home:r.under25},colorType:"neutral"},{label:"Scored at least twice",homeTeam:{home:n.scoredTwice,total:s.scoredTwice},awayTeam:{total:i.scoredTwice,home:r.scoredTwice},colorType:"positive"},{label:"Conceded at least twice",homeTeam:{home:n.concededTwice,total:s.concededTwice},awayTeam:{total:i.concededTwice,home:r.concededTwice},colorType:"negative"}]}function J(e,t){const o=new Map;return e.forEach(n=>{if(n.status?.type!=="FINISHED")return;const s=ae(n,t);if(!s)return;const r=s.isHome?n.competitorTwo.id:n.competitorOne.id,i=s.isHome?n.competitorTwo:n.competitorOne,a=o.get(r)||{opponentId:r,opponentName:i.name,opponentLogo:i.assets?.logo};s.isHome?a.homeResult=s.result:a.awayResult=s.result,o.set(r,a)}),o}function Bt(e,t,o,n,s,r,i){const a=J(e,t),c=J(e,o),l=new Set([...a.keys(),...c.keys(),t,o]),u=[];return l.forEach(d=>{const g=a.get(d),p=c.get(d);if(!g&&!p&&d!==t&&d!==o)return;let y,T;d===t?(y=n,T=r):d===o?(y=s,T=i):(y=g?.opponentName||p?.opponentName||"",T=g?.opponentLogo||p?.opponentLogo),u.push({opponentId:d,opponentName:y,opponentLogo:T,homeTeamHome:g?.homeResult,homeTeamAway:g?.awayResult,awayTeamHome:p?.homeResult,awayTeamAway:p?.awayResult,isHomeTeamRow:d===t,isAwayTeamRow:d===o})}),u.sort((d,g)=>d.isHomeTeamRow?-1:g.isHomeTeamRow?1:d.isAwayTeamRow?-1:g.isAwayTeamRow?1:d.opponentName.localeCompare(g.opponentName))}exports.addProviderRef=m.addProviderRef;exports.getBatchMatchOdds=m.getBatchMatchOdds;exports.getConfig=m.getConfig;exports.getFootballCompetition=m.getFootballCompetition;exports.getFootballMatch=m.getFootballMatch;exports.getFootballMatchCommentary=m.getFootballMatchCommentary;exports.getFootballMatchEvents=m.getFootballMatchEvents;exports.getFootballMatchLineups=m.getFootballMatchLineups;exports.getFootballMatchOdds=m.getFootballMatchOdds;exports.getFootballMatchStatistics=m.getFootballMatchStatistics;exports.getFootballMatches=m.getFootballMatches;exports.getFootballPlayerSeasonStatistics=m.getFootballPlayerSeasonStatistics;exports.getFootballSeasonDetails=m.getFootballSeasonDetails;exports.getFootballStandings=m.getFootballStandings;exports.getFootballTeam=m.getFootballTeam;exports.getFootballTeamSquad=m.getFootballTeamSquad;exports.getLeaderboardMatches=m.getLeaderboardMatches;exports.getLeaderboardTeamMatches=m.getLeaderboardTeamMatches;exports.getLeaderboardTemplate=m.getLeaderboardTemplate;exports.getProviderRefId=m.getProviderRefId;exports.isConfigured=m.isConfigured;exports.setConfig=m.setConfig;exports.toProviderRefArray=m.toProviderRefArray;exports.GOAL_EVENT_TYPES=ne;exports.aggregatePlayerStatisticsFromMatches=N;exports.analyzeMatch=re;exports.calcAverage=L;exports.calcPercentage=A;exports.calculateH2HStats=Gt;exports.calculateStreak=C;exports.formatAsAverage=At;exports.formatPossessionPercentage=Ft;exports.formatStatValue=Ct;exports.formatWithAverage=_t;exports.getActiveSeason=st;exports.getAllPlayerStatisticsFromMatches=oe;exports.getFansUnitedFootballCompetition=$e;exports.getFansUnitedFootballCompetitions=Le;exports.getFansUnitedFootballMatch=Xe;exports.getFansUnitedFootballMatches=Ze;exports.getFansUnitedFootballPlayer=Je;exports.getFansUnitedFootballPlayers=Qe;exports.getFansUnitedFootballSearch=ot;exports.getFansUnitedFootballTeam=je;exports.getMatchResult=ae;exports.getMostCardedPlayersFromMatches=ee;exports.getOpponentScore=Pt;exports.getRecentH2HMeetings=bt;exports.getTeamFinishedMatches=at;exports.getTeamGoalStats=Lt;exports.getTeamHomeAwayStats=Nt;exports.getTeamMostDecorated=ft;exports.getTeamNextMatch=nt;exports.getTeamOverUnderStats=Ht;exports.getTeamPreviousMatch=rt;exports.getTeamResultsTable=ct;exports.getTeamScore=Rt;exports.getTeamSeasonStatistics=be;exports.getTeamStreaks=k;exports.getTeamStreaksComparison=kt;exports.getTeamTopAppearances=ut;exports.getTeamTopAssisters=dt;exports.getTeamTopCleanSheets=gt;exports.getTeamTopMinutesPlayed=mt;exports.getTeamTopScorers=lt;exports.getTeamUpcomingMatches=it;exports.getTeamsCommonOpponents=Bt;exports.getTopAssistersFromMatches=w;exports.getTopGoalContributorsFromMatches=te;exports.getTopScorersFromMatches=Z;exports.isMatchFinished=Ot;exports.isTeamAway=ie;exports.isTeamHome=q;exports.isTeamInMatch=Mt;exports.search=Re;exports.searchFootball=ye;exports.streakFilters=v;exports.useAllPlayerStatisticsFromMatches=vt;exports.useMostCardedPlayersFromMatches=ht;exports.usePlayerStatistics=St;exports.usePlayerStatisticsMap=se;exports.useTopAssistersFromMatches=yt;exports.useTopGoalContributorsFromMatches=Tt;exports.useTopScorersFromMatches=pt;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("./matches-DKjnuuq_.cjs"),E=require("react");function le(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 de(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 ue(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 me(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 ge(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 fe(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 pe(e){switch(e.entity_type){case"tournament":return le(e);case"player":return de(e);case"team":return ue(e);case"president":return me(e);case"venue":return ge(e);case"coach":return fe(e);default:throw new Error(`Unknown entity type: ${e.entity_type}`)}}async function ye(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"],r=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!r||r.length===0?{results:[],query:e.query}:{results:r.map(pe),query:e.query}}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 G(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 V(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:G(e.country),gender:e.gender,competitionIds:e.competition_ids,type:e.type,national:e.national,undecided:e.undecided,providerRef:e.id}}function Q(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:G(e.country),providerRef:e.id}}function Te(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:G(e.country),gender:e.gender,providerRef:e.id}}function ve(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:G(e.country),gender:e.gender,birthdate:e.birthdate??void 0,position:e.position??void 0,providerRef:e.id}}function Se(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:G(e.country),gender:e.gender,birthdate:e.birthdate??void 0,providerRef:e.id}}function Ce(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:G(e.country),gender:e.gender,birthdate:e.birthdate??void 0,providerRef:e.id}}function _e(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:G(e.country),city:e.city?Q(e.city):void 0,providerRef:e.id}}function Ae(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:G(e.country),gender:e.gender,type:e.type??void 0,region:e.region??void 0,providerRef:e.id}}function Fe(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?V(e.home_team):void 0,awayTeam:e.away_team?V(e.away_team):void 0,providerRef:e.id}}function Me(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 Oe(e){switch(e.entity_type){case"team":return V(e);case"city":return Q(e);case"horse":return Te(e);case"player":return ve(e);case"coach":return Se(e);case"referee":return Ce(e);case"venue":return _e(e);case"tournament":case"competition":return Ae(e);case"match":return Fe(e);case"country":return Me(e);default:{const t=e;throw new Error(`Unknown entity type: ${t.entity_type}`)}}}async function Re(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(Oe),query:e.name}}const Pe=u.createHttpClient(u.SPORTAL365_STATISTICS_DOMAIN);function be(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 Ge(e,t){const o=t||u.getConfig(),n=e.next??{revalidate:600},s=await Pe.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 be(s.data[0],e.seasonId)}function De(e){const t=e.replace(/\/$/,"");function o(n){return`${t}${n}`}return{async get(n){const s=n.config||u.getConfig(),{fansUnited:r}=s;if(!r)throw new Error("Fans United configuration is missing. Add 'fansUnited' with 'apiKey' and 'clientId' to your config.");if(!r.apiKey||!r.clientId)throw new Error("Fans United configuration requires both 'apiKey' and 'clientId'");const i=new URL(o(n.path));if(i.searchParams.set("key",r.apiKey),i.searchParams.set("client_id",r.clientId),n.params)for(const[m,c]of Object.entries(n.params))c!==void 0&&(Array.isArray(c)?c.length>0&&i.searchParams.set(m,c.join(",")):i.searchParams.set(m,c));const a=3e4,d=new URL(i.toString());d.searchParams.delete("key"),d.searchParams.delete("client_id"),console.log("🔗 FansUnited API URL:",d.toString());const l=await fetch(i.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 Ee="https://football.fansunitedapi.com",D=De(Ee);function Ne(e){return{id:String(e.id),name:e.name,active:e.active,providerRef:[{provider:"fansunited",id:String(e.id)}]}}function Ie(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(Ne)),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 Le(e){return e.map(Ie)}async function He(e,t){const o={};e?.lang?o.lang=e.lang:o.lang="EN",console.log("🌐 Language parameter being sent:",o.lang),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 D.get({path:"/v1/competitions",params:o,config:t,next:e?.next});console.log("Raw API response (first 10 items):",JSON.stringify(n.data.slice(0,10),null,2)),console.log("Total raw competitions:",n.data.length);const s=n.data.map(l=>l.id),r=new Set(s);console.log("Unique raw competition IDs:",r.size),s.length!==r.size&&console.warn("⚠️ API returned duplicate competitions!");const i=Le(n.data);console.log("Transformed (first 3 items):",JSON.stringify(i.slice(0,3),null,2));const a=new Set,d=i.filter(l=>a.has(l.id)?!1:(a.add(l.id),!0));return i.length!==d.length&&console.warn(`Removed ${i.length-d.length} duplicate competitions`),d}function ke(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 Ue(e){return{id:e.id,name:e.name,type:e.type?.toUpperCase()||"LEAGUE",gender:e.gender?.toUpperCase(),country:e.country?ke(e.country):void 0,assets:e.assets?.logo?{logo:e.assets.logo}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function Be(e){return Ue(e.data)}async function $e(e,t,o){const n=o||u.getConfig(),s={};t?.lang&&(s.lang=t.lang);const r=await D.get({path:`/v1/competitions/${e}`,params:s,next:t?.next,config:n});return Be(r)}function xe(e){return{id:e.id,name:e.name,code:e.country_code,flag:e.assets?.flag,providerRef:[{provider:"fansunited",id:e.id}]}}function We(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?xe(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 qe(e){return We(e.data)}async function je(e,t,o){const n=o||u.getConfig(),s={};t?.lang&&(s.lang=t.lang);const r=await D.get({path:`/v1/teams/${e}`,params:s,next:t?.next,config:n});return qe(r)}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 Ve(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 Ye(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 X(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(Ve),competitions:e.competitions?.map(Ye),providerRef:[{provider:"fansunited",id:e.id}]}}function ze(e){return X(e.data)}function Ke(e){return e.data.map(X)}async function Je(e,t,o){const n=o||u.getConfig(),s={};t?.lang&&(s.lang=t.lang);const r=await D.get({path:`/v1/players/${e}`,params:s,next:t?.next,config:n});return ze(r)}async function Qe(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 D.get({path:"/v1/players",params:n,next:e?.next,config:o});return Ke(s)}async function Xe(e,t,o){const n=o||u.getConfig(),s={};t?.lang&&(s.lang=t.lang);const r=await D.get({path:`/v1/matches/${e}`,params:s,next:t?.next,config:n});return u.transformMatch(r)}async function Ze(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 D.get({path:"/v1/matches",params:n,next:e?.next,config:o});return u.transformMatches(s)}function z(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 we(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?z(e.country):void 0,assets:e.assets?.logo?{logo:e.assets.logo}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function et(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?z(e.country):void 0,assets:e.assets?.headshot?{photo:e.assets.headshot}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function tt(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?z(e.country):void 0,assets:e.assets?.logo?{logo:e.assets.logo}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function j(e){switch(e.entity_type){case"competition":{const t=we(e);return{source:"FOOTBALL",entityType:"competition",entityId:e.id,entityData:t}}case"player":{const t=et(e);return{source:"FOOTBALL",entityType:"player",entityId:e.id,entityData:t}}case"team":{const t=tt(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 ot(e,t){if(!e.query||e.query.trim()==="")return[];const o=t||u.getConfig(),n={q:e.query.trim()},r=(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=r.join(","),e.lang&&(n.lang=e.lang),e.limit&&(n.limit=String(e.limit));const i=await D.get({path:"/v1/search",params:n,next:e.next,config:o}),a=[];return i.data&&(i.data.competitions&&i.data.competitions.forEach(d=>{const l=j({...d,entity_type:"competition"});l&&a.push(l)}),i.data.teams&&i.data.teams.forEach(d=>{const l=j({...d,entity_type:"team"});l&&a.push(l)}),i.data.players&&i.data.players.forEach(d=>{const l=j({...d,entity_type:"player"});l&&a.push(l)})),a}function st(e){return!e.seasons||e.seasons.length===0?void 0:e.seasons.find(o=>o.active)??e.seasons[0]}function nt(e,t){const o=new Date,n=t.filter(s=>{const r=s.competitorOne.id===e||s.competitorTwo.id===e,i=s.status.type==="NOT_STARTED",a=new Date(s.timing.kickoffTime)>=o;return r&&i&&a});return n.sort((s,r)=>new Date(s.timing.kickoffTime).getTime()-new Date(r.timing.kickoffTime).getTime()),n[0]}function rt(e,t){const o=new Date,n=t.filter(s=>{const r=s.competitorOne.id===e||s.competitorTwo.id===e,i=s.status.type==="FINISHED",a=new Date(s.timing.kickoffTime)<=o;return r&&i&&a});return n.sort((s,r)=>new Date(r.timing.kickoffTime).getTime()-new Date(s.timing.kickoffTime).getTime()),n[0]}function it(e,t){const o=new Date;return t.filter(s=>{const r=s.competitorOne.id===e||s.competitorTwo.id===e,i=s.status.type==="NOT_STARTED"||s.status.type==="LIVE",a=new Date(s.timing.kickoffTime)>=o||s.status.type==="LIVE";return r&&i&&a}).sort((s,r)=>new Date(s.timing.kickoffTime).getTime()-new Date(r.timing.kickoffTime).getTime())}function at(e,t){const o=new Date;return t.filter(s=>{const r=s.competitorOne.id===e||s.competitorTwo.id===e,i=s.status.type==="FINISHED",a=new Date(s.timing.kickoffTime)<=o;return r&&i&&a}).sort((s,r)=>new Date(r.timing.kickoffTime).getTime()-new Date(s.timing.kickoffTime).getTime())}function ct(e,t,o){const n=o.filter(i=>i.status.type==="FINISHED"),s=o.filter(i=>i.status.type==="NOT_STARTED"||i.status.type==="POSTPONED"),r=t.entries.map(i=>{const a=i.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,_=p?T:y;let F;R>_?F="W":R===_?F="D":F="L";const P={result:F,score:`${y} - ${T}`,date:g.timing.kickoffTime,matchId:g.id,isUpcoming:!1};p?m=P:c=P}),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:i.rank,teamId:i.competitor.id,teamName:i.competitor.name,teamShortName:i.competitor.shortName,teamLogo:i.competitor.logo,gamesPlayed:i.stats.played??0,points:i.stats.points??0,homeResult:m,awayResult:c}});return{teamId:e,rows:r}}function lt(e,t=10){return e.players.filter(o=>(o.seasonStatistics?.goals??0)>0).sort((o,n)=>{const s=o.seasonStatistics?.goals??0,r=n.seasonStatistics?.goals??0;if(r!==s)return r-s;const i=o.seasonStatistics?.assists??0;return(n.seasonStatistics?.assists??0)-i}).slice(0,t)}function dt(e,t=10){return e.players.filter(o=>(o.seasonStatistics?.assists??0)>0).sort((o,n)=>{const s=o.seasonStatistics?.assists??0,r=n.seasonStatistics?.assists??0;if(r!==s)return r-s;const i=o.seasonStatistics?.goals??0;return(n.seasonStatistics?.goals??0)-i}).slice(0,t)}function ut(e,t=10){return e.players.filter(o=>(o.seasonStatistics?.appearances??0)>0).sort((o,n)=>{const s=o.seasonStatistics?.appearances??0,r=n.seasonStatistics?.appearances??0;if(r!==s)return r-s;const i=o.seasonStatistics?.minutes??0;return(n.seasonStatistics?.minutes??0)-i}).slice(0,t)}function mt(e,t=10){return e.players.filter(o=>(o.seasonStatistics?.minutes??0)>0).sort((o,n)=>{const s=o.seasonStatistics?.minutes??0,r=n.seasonStatistics?.minutes??0;if(r!==s)return r-s;const i=o.seasonStatistics?.appearances??0;return(n.seasonStatistics?.appearances??0)-i}).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,r=n.seasonStatistics?.cleansheets??0;if(r!==s)return r-s;const i=o.seasonStatistics?.appearances??0;return(n.seasonStatistics?.appearances??0)-i}).slice(0,t)}function ft(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,r=o.seasonStatistics?.redCards??0,i=n.seasonStatistics?.yellowCards??0,a=n.seasonStatistics?.redCards??0,d=s+r*3,l=i+a*3;return l!==d?l-d:a!==r?a-r:i-s}).slice(0,t)}function N(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 r=s.primaryPlayer.id;t.has(r)||t.set(r,{playerId:s.primaryPlayer.id,seasonId:"",teamId:"",goals:0,assists:0,yellowCards:0,redCards:0,appearances:0});const i=t.get(r);o.has(r)||o.set(r,new Set),o.get(r).add(n.id),(s.type==="GOAL"||s.type==="PENALTY_GOAL")&&(i.goals=(i.goals??0)+1),s.type==="YELLOW_CARD"&&(i.yellowCards=(i.yellowCards??0)+1),(s.type==="RED_CARD"||s.type==="YELLOW_RED_CARD")&&(i.redCards=(i.redCards??0)+1)}if(s.secondaryPlayer&&(s.type==="GOAL"||s.type==="PENALTY_GOAL")){const r=s.secondaryPlayer.id;t.has(r)||t.set(r,{playerId:s.secondaryPlayer.id,seasonId:"",teamId:"",goals:0,assists:0,yellowCards:0,redCards:0,appearances:0});const i=t.get(r);i.assists=(i.assists??0)+1,o.has(r)||o.set(r,new Set),o.get(r).add(n.id)}})}),o.forEach((n,s)=>{const r=t.get(s);r&&r.appearances!==void 0&&(r.appearances=n.size)}),t}function U(e){return Array.from(e.values()).map(t=>({...t,totalCards:(t.yellowCards??0)+(t.redCards??0)}))}function Z(e,t=10){const o=N(e);return U(o).filter(s=>(s.goals??0)>0).sort((s,r)=>{const i=s.goals??0,a=r.goals??0;if(a!==i)return a-i;const d=s.assists??0;return(r.assists??0)-d}).slice(0,t)}function w(e,t=10){const o=N(e);return U(o).filter(s=>(s.assists??0)>0).sort((s,r)=>{const i=s.assists??0,a=r.assists??0;if(a!==i)return a-i;const d=s.goals??0;return(r.goals??0)-d}).slice(0,t)}function ee(e,t=10){const o=N(e);return U(o).filter(s=>(s.totalCards??0)>0).sort((s,r)=>{const i=(s.yellowCards??0)+(s.redCards??0)*3,a=(r.yellowCards??0)+(r.redCards??0)*3;if(a!==i)return a-i;const d=s.redCards??0,l=r.redCards??0;if(l!==d)return l-d;const m=s.yellowCards??0;return(r.yellowCards??0)-m}).slice(0,t)}function te(e,t=10){const o=N(e);return U(o).filter(s=>(s.goals??0)+(s.assists??0)>0).sort((s,r)=>{const i=(s.goals??0)+(s.assists??0),a=(r.goals??0)+(r.assists??0);if(a!==i)return a-i;const d=s.goals??0,l=r.goals??0;if(l!==d)return l-d;const m=s.assists??0;return(r.assists??0)-m}).slice(0,t)}function oe(e){const t=N(e);return U(t).sort((n,s)=>{const r=n.appearances??0,i=s.appearances??0;if(i!==r)return i-r;const a=(n.goals??0)+(n.assists??0);return(s.goals??0)+(s.assists??0)-a})}function pt(e,t=10){return E.useMemo(()=>Z(e,t),[e,t])}function yt(e,t=10){return E.useMemo(()=>w(e,t),[e,t])}function ht(e,t=10){return E.useMemo(()=>ee(e,t),[e,t])}function Tt(e,t=10){return E.useMemo(()=>te(e,t),[e,t])}function vt(e){return E.useMemo(()=>oe(e),[e])}function se(e){return E.useMemo(()=>N(e),[e])}function St(e,t){const o=se(e);return E.useMemo(()=>o.get(t),[o,t])}const ne=["GOAL","PENALTY_GOAL","OWN_GOAL"];function A(e,t){return t>0?e/t*100:0}function H(e,t){return t>0?e/t:0}function Ct(e,t=!1,o=2){return t?`${Math.round(e)}%`:Number.isInteger(e)?e.toString():e.toFixed(o)}function _t(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 At(e,t){const o=typeof e=="string"?parseFloat(e):e;return isNaN(o)||t===0?"0.0":(o/t).toFixed(1)}function Ft(e){const t=parseFloat(e);return isNaN(t)?"0%":`${Math.round(t)}%`}function re(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"),r=o?n:s,i=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:r,goalsAgainst:i,halfTimeGoalsFor:a,halfTimeGoalsAgainst:d,cornersFor:c,cornersAgainst:g,isWin:r>i,isDraw:r===i,isLoss:r<i}}function q(e,t){return e.competitorOne.id===t}function ie(e,t){return e.competitorTwo.id===t}function Mt(e,t){return q(e,t)||ie(e,t)}function Ot(e){return e.status?.type==="FINISHED"}function Rt(e,t){const o=q(e,t);return parseInt(o?e.score?.competitorOne||"0":e.score?.competitorTwo||"0")}function Pt(e,t){const o=q(e,t);return parseInt(o?e.score?.competitorTwo||"0":e.score?.competitorOne||"0")}function bt(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,r=0,i=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?r++:i++});const l=n.length;return{totalMatches:l,homeTeamWins:s,awayTeamWins:r,draws:i,homeTeamGoals:a,awayTeamGoals:d,homeTeamWinPercentage:l>0?s/l*100:0,awayTeamWinPercentage:l>0?r/l*100:0,drawPercentage:l>0?i/l*100:0,homeTeamAvgGoals:l>0?a/l:0,awayTeamAvgGoals:l>0?d/l:0}}function Gt(e,t,o,n=5){return e.filter(r=>{if(r.status?.type!=="FINISHED"||!r.score)return!1;const i=r.competitorOne.id===t||r.competitorTwo.id===t,a=r.competitorOne.id===o||r.competitorTwo.id===o;return i&&a}).sort((r,i)=>new Date(i.timing.kickoffTime).getTime()-new Date(r.timing.kickoffTime).getTime()).slice(0,n).map(r=>{const i=parseInt(r.score?.competitorOne||"0"),a=parseInt(r.score?.competitorTwo||"0"),d=r.competitorOne.id===t,l=d?i:a,m=d?a:i;let c;return l>m?c="home":m>l?c="away":c="draw",{id:r.id,date:new Date(r.timing.kickoffTime).toLocaleDateString("en-GB",{day:"numeric",month:"short",year:"numeric"}),homeTeamName:r.competitorOne.name,awayTeamName:r.competitorTwo.name,homeTeamLogo:r.competitorOne.assets?.logo,awayTeamLogo:r.competitorTwo.assets?.logo,homeScore:i,awayScore:a,venue:r.venue?.name,winner:c}})}function Dt(e,t,o){return e.filter(n=>{const s=n.competitorOne.id===t,r=n.competitorTwo.id===t;return!s&&!r?!1:o==="home"?s:r}).map(n=>{const s=n.competitorOne.id===t;return re(n,t,s)}).filter(n=>n!==null)}function K(e,t,o,n){let s=0;for(const r of e){const i=r.competitorOne.id===t,a=r.competitorTwo.id===t;if(!i&&!a||o==="home"&&!i||o==="away"&&!a||r.status?.type!=="FINISHED")continue;const d=r.mainEvents;if(!d||!Array.isArray(d))continue;const l=d.filter(y=>y.type&&ne.includes(y.type)).sort((y,T)=>{const R=y.minute??0,_=T.minute??0;return R!==_?R-_:(y.injuryMinute??0)-(T.injuryMinute??0)});if(l.length===0)continue;const m=l[0],c=i?"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 Et(e,t,o){let n=0;for(const s of e){const r=s.competitorOne.id===t,i=s.competitorTwo.id===t;if(!r&&!i||o==="home"&&!r||o==="away"&&!i||s.status?.type!=="FINISHED")continue;const a=s.mainEvents;a&&Array.isArray(a)&&n++}return n}function Nt(e,t,o){const n=Dt(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 r=n.reduce((f,S)=>f+S.goalsFor,0),i=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,L=f.goalsFor-S;return S>0&&L>0}).length,R=K(e,t,o,"scored"),_=Et(e,t,o),F=p.filter(f=>f.halfTimeGoalsFor>f.halfTimeGoalsAgainst).length,P=p.filter(f=>{const S=f.halfTimeGoalsAgainst,L=f.goalsAgainst-S;return S>0&&L>0}).length,B=K(e,t,o,"conceded"),$=p.filter(f=>f.halfTimeGoalsAgainst>f.halfTimeGoalsFor).length,I=n.filter(f=>f.cornersFor!==null),x=I.reduce((f,S)=>f+(S.cornersFor||0),0),W=I.reduce((f,S)=>f+(S.cornersAgainst||0),0);return{played:s,goalsForPerMatch:H(r,s),cleanSheets:A(a,s),wonToNil:A(d,s),scoringRate:A(l,s),scoredInBothHalves:A(T,y),scoredFirst:A(R,_),leadingAtHalfTime:A(F,y),goalsAgainstPerMatch:H(i,s),failedToScore:A(m,s),lostToNil:A(c,s),concedingRate:A(g,s),concededInBothHalves:A(P,y),concededFirst:A(B,_),losingAtHalfTime:A($,y),avgCornersFor:H(x,I.length),avgCornersAgainst:H(W,I.length)}}function It(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"),r=parseInt(o.score?.competitorTwo||"0"),i=s+r,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:i,halfTimeGoals:d,isHome:n}})}function h(e,t){return e.length===0?0:e.filter(n=>n>t).length/e.length*100}function Lt(e,t){const o=It(e,t),n=o.filter(c=>c.isHome),s=o.filter(c=>!c.isHome),r=o.map(c=>c.totalGoals),i=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(i,.5),total:h(r,.5),away:h(a,.5)},over15:{home:h(i,1.5),total:h(r,1.5),away:h(a,1.5)},over25:{home:h(i,2.5),total:h(r,2.5),away:h(a,2.5)},over35:{home:h(i,3.5),total:h(r,3.5),away:h(a,3.5)},over45:{home:h(i,4.5),total:h(r,4.5),away:h(a,4.5)},over55:{home:h(i,5.5),total:h(r,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 ae(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"),r=parseInt(o?e.score.competitorTwo||"0":e.score.competitorOne||"0");let i;return s>r?i="W":s<r?i="L":i="D",{result:{score:`${s}:${r}`,result:i,isHome:o},isHome:o}}function Ht(e,t,o,n,s,r){const i=t?.entries.find(b=>b.competitor.id===e),a=o?.entries.find(b=>b.competitor.id===e),d=n?.entries.find(b=>b.competitor.id===e),l=s?.entries.find(b=>b.competitor.id===e),m=r?.entries.find(b=>b.competitor.id===e);if(!i)return null;const c=a?.stats?.goalsFor??0,g=d?.stats?.goalsFor??0,p=i?.stats?.goalsFor??0,y=l?.stats?.goalsAgainst??0,T=m?.stats?.goalsAgainst??0,R=i?.stats?.goalsAgainst??0,_=a?.stats?.played??0,F=d?.stats?.played??0,P=i?.stats?.played??0,B=P>0?p/P:0,$=P>0?R/P:0,I=B+$,x=_>0?c/_:0,W=F>0?g/F:0,f=_>0?y/_:0,S=F>0?T/F:0,L=x+f,ce=W+S;return{homeGoals:c,totalGoals:p,awayGoals:g,homeGamesPlayed:_,awayGamesPlayed:F,totalGamesPlayed:P,homeGoalsConceded:y,totalGoalsConceded:R,awayGoalsConceded:T,gfPerMatch:B,gaPerMatch:$,gfGaPerMatch:I,homeGfPerMatch:x,awayGfPerMatch:W,homeGaPerMatch:f,awayGaPerMatch:S,homeGfGaPerMatch:L,awayGfGaPerMatch:ce}}function C(e,t,o,n){const s=e.filter(i=>{const a=i.competitorOne.id===t,d=i.competitorTwo.id===t;return!(!a&&!d||i.status?.type!=="FINISHED"||n==="home"&&!a||n==="away"&&!d)}).sort((i,a)=>new Date(a.timing.kickoffTime).getTime()-new Date(i.timing.kickoffTime).getTime());if(s.length===0)return null;let r=0;for(const i of s){const a=i.competitorOne.id===t;if(o(i,t,a))r++;else break}return r>0?r: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 k(e,t,o){return{win:C(e,t,v.win,o),draw:C(e,t,v.draw,o),loss:C(e,t,v.loss,o),noWin:C(e,t,v.noWin,o),noDraw:C(e,t,v.noDraw,o),noDefeat:C(e,t,v.noDefeat,o),scored:C(e,t,v.scored,o),conceded:C(e,t,v.conceded,o),noGoalScored:C(e,t,v.noGoalScored,o),noGoalConceded:C(e,t,v.noGoalConceded,o),over25:C(e,t,v.over25,o),under25:C(e,t,v.under25,o),scoredTwice:C(e,t,v.scoredTwice,o),concededTwice:C(e,t,v.concededTwice,o)}}function kt(e,t,o){const n=k(e,t,"home"),s=k(e,t),r=k(e,o,"away"),i=k(e,o);return[{label:"Consecutive wins",homeTeam:{home:n.win,total:s.win},awayTeam:{total:i.win,home:r.win},colorType:"neutral"},{label:"Consecutive draws",homeTeam:{home:n.draw,total:s.draw},awayTeam:{total:i.draw,home:r.draw},colorType:"neutral"},{label:"Consecutive defeats",homeTeam:{home:n.loss,total:s.loss},awayTeam:{total:i.loss,home:r.loss},colorType:"neutral"},{label:"No win",homeTeam:{home:n.noWin,total:s.noWin},awayTeam:{total:i.noWin,home:r.noWin},colorType:"negative"},{label:"No draw",homeTeam:{home:n.noDraw,total:s.noDraw},awayTeam:{total:i.noDraw,home:r.noDraw},colorType:"neutral"},{label:"No defeat",homeTeam:{home:n.noDefeat,total:s.noDefeat},awayTeam:{total:i.noDefeat,home:r.noDefeat},colorType:"positive"},{label:"Scored at least once",homeTeam:{home:n.scored,total:s.scored},awayTeam:{total:i.scored,home:r.scored},colorType:"positive"},{label:"Conceded at least once",homeTeam:{home:n.conceded,total:s.conceded},awayTeam:{total:i.conceded,home:r.conceded},colorType:"negative"},{label:"No goal scored",homeTeam:{home:n.noGoalScored,total:s.noGoalScored},awayTeam:{total:i.noGoalScored,home:r.noGoalScored},colorType:"neutral"},{label:"No goal conceded",homeTeam:{home:n.noGoalConceded,total:s.noGoalConceded},awayTeam:{total:i.noGoalConceded,home:r.noGoalConceded},colorType:"neutral"},{label:"GS + GC over 2.5",homeTeam:{home:n.over25,total:s.over25},awayTeam:{total:i.over25,home:r.over25},colorType:"neutral"},{label:"GS + GC under 2.5",homeTeam:{home:n.under25,total:s.under25},awayTeam:{total:i.under25,home:r.under25},colorType:"neutral"},{label:"Scored at least twice",homeTeam:{home:n.scoredTwice,total:s.scoredTwice},awayTeam:{total:i.scoredTwice,home:r.scoredTwice},colorType:"positive"},{label:"Conceded at least twice",homeTeam:{home:n.concededTwice,total:s.concededTwice},awayTeam:{total:i.concededTwice,home:r.concededTwice},colorType:"negative"}]}function J(e,t){const o=new Map;return e.forEach(n=>{if(n.status?.type!=="FINISHED")return;const s=ae(n,t);if(!s)return;const r=s.isHome?n.competitorTwo.id:n.competitorOne.id,i=s.isHome?n.competitorTwo:n.competitorOne,a=o.get(r)||{opponentId:r,opponentName:i.name,opponentLogo:i.assets?.logo};s.isHome?a.homeResult=s.result:a.awayResult=s.result,o.set(r,a)}),o}function Ut(e,t,o,n,s,r,i){const a=J(e,t),d=J(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=r):c===o?(y=s,T=i):(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.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=ne;exports.aggregatePlayerStatisticsFromMatches=N;exports.analyzeMatch=re;exports.calcAverage=H;exports.calcPercentage=A;exports.calculateH2HStats=bt;exports.calculateStreak=C;exports.formatAsAverage=At;exports.formatPossessionPercentage=Ft;exports.formatStatValue=Ct;exports.formatWithAverage=_t;exports.getActiveSeason=st;exports.getAllPlayerStatisticsFromMatches=oe;exports.getFansUnitedFootballCompetition=$e;exports.getFansUnitedFootballCompetitions=He;exports.getFansUnitedFootballMatch=Xe;exports.getFansUnitedFootballMatches=Ze;exports.getFansUnitedFootballPlayer=Je;exports.getFansUnitedFootballPlayers=Qe;exports.getFansUnitedFootballSearch=ot;exports.getFansUnitedFootballTeam=je;exports.getMatchResult=ae;exports.getMostCardedPlayersFromMatches=ee;exports.getOpponentScore=Pt;exports.getRecentH2HMeetings=Gt;exports.getTeamFinishedMatches=at;exports.getTeamGoalStats=Ht;exports.getTeamHomeAwayStats=Nt;exports.getTeamMostDecorated=ft;exports.getTeamNextMatch=nt;exports.getTeamOverUnderStats=Lt;exports.getTeamPreviousMatch=rt;exports.getTeamResultsTable=ct;exports.getTeamScore=Rt;exports.getTeamSeasonStatistics=Ge;exports.getTeamStreaks=k;exports.getTeamStreaksComparison=kt;exports.getTeamTopAppearances=ut;exports.getTeamTopAssisters=dt;exports.getTeamTopCleanSheets=gt;exports.getTeamTopMinutesPlayed=mt;exports.getTeamTopScorers=lt;exports.getTeamUpcomingMatches=it;exports.getTeamsCommonOpponents=Ut;exports.getTopAssistersFromMatches=w;exports.getTopGoalContributorsFromMatches=te;exports.getTopScorersFromMatches=Z;exports.isMatchFinished=Ot;exports.isTeamAway=ie;exports.isTeamHome=q;exports.isTeamInMatch=Mt;exports.search=Re;exports.searchFootball=ye;exports.streakFilters=v;exports.useAllPlayerStatisticsFromMatches=vt;exports.useMostCardedPlayersFromMatches=ht;exports.usePlayerStatistics=St;exports.usePlayerStatisticsMap=se;exports.useTopAssistersFromMatches=yt;exports.useTopGoalContributorsFromMatches=Tt;exports.useTopScorersFromMatches=pt;
|
package/fansunited-data-layer.js
CHANGED
|
@@ -497,9 +497,11 @@ function Fe(e) {
|
|
|
497
497
|
throw new Error("Fans United configuration requires both 'apiKey' and 'clientId'");
|
|
498
498
|
const r = new URL(o(n.path));
|
|
499
499
|
if (r.searchParams.set("key", i.apiKey), r.searchParams.set("client_id", i.clientId), n.params)
|
|
500
|
-
for (const [
|
|
501
|
-
|
|
502
|
-
const
|
|
500
|
+
for (const [u, c] of Object.entries(n.params))
|
|
501
|
+
c !== void 0 && (Array.isArray(c) ? c.length > 0 && r.searchParams.set(u, c.join(",")) : r.searchParams.set(u, c));
|
|
502
|
+
const a = 3e4, d = new URL(r.toString());
|
|
503
|
+
d.searchParams.delete("key"), d.searchParams.delete("client_id"), console.log("🔗 FansUnited API URL:", d.toString());
|
|
504
|
+
const l = await fetch(r.toString(), {
|
|
503
505
|
method: "GET",
|
|
504
506
|
headers: {
|
|
505
507
|
Accept: "application/json",
|
|
@@ -507,25 +509,25 @@ function Fe(e) {
|
|
|
507
509
|
// Merge custom headers (they can override defaults)
|
|
508
510
|
...n.headers
|
|
509
511
|
},
|
|
510
|
-
signal: AbortSignal.timeout(
|
|
512
|
+
signal: AbortSignal.timeout(a),
|
|
511
513
|
// Next.js cache options for ISR/on-demand revalidation
|
|
512
514
|
...n.next && { next: n.next }
|
|
513
515
|
});
|
|
514
|
-
if (!
|
|
515
|
-
let
|
|
516
|
+
if (!l.ok) {
|
|
517
|
+
let u = `Fans United API error: ${l.status} ${l.statusText}`;
|
|
516
518
|
try {
|
|
517
|
-
const
|
|
518
|
-
|
|
519
|
-
} catch (
|
|
519
|
+
const c = await l.text();
|
|
520
|
+
c && (u += ` - ${c}`);
|
|
521
|
+
} catch (c) {
|
|
520
522
|
console.error("[Fans United HTTP] Failed to read error response body:", {
|
|
521
|
-
error:
|
|
522
|
-
status:
|
|
523
|
-
statusText:
|
|
523
|
+
error: c instanceof Error ? c.message : String(c),
|
|
524
|
+
status: l.status,
|
|
525
|
+
statusText: l.statusText
|
|
524
526
|
});
|
|
525
527
|
}
|
|
526
|
-
throw new Error(
|
|
528
|
+
throw new Error(u);
|
|
527
529
|
}
|
|
528
|
-
return
|
|
530
|
+
return l.json();
|
|
529
531
|
}
|
|
530
532
|
};
|
|
531
533
|
}
|
|
@@ -583,18 +585,20 @@ function De(e) {
|
|
|
583
585
|
}
|
|
584
586
|
async function at(e, t) {
|
|
585
587
|
const o = {};
|
|
586
|
-
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");
|
|
588
|
+
e?.lang ? o.lang = e.lang : o.lang = "EN", console.log("🌐 Language parameter being sent:", o.lang), 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");
|
|
587
589
|
const n = await I.get({
|
|
588
590
|
path: "/v1/competitions",
|
|
589
591
|
params: o,
|
|
590
592
|
config: t,
|
|
591
593
|
next: e?.next
|
|
592
594
|
});
|
|
593
|
-
console.log("Raw API response (first
|
|
595
|
+
console.log("Raw API response (first 10 items):", JSON.stringify(n.data.slice(0, 10), null, 2)), console.log("Total raw competitions:", n.data.length);
|
|
594
596
|
const s = n.data.map((l) => l.id), i = new Set(s);
|
|
595
597
|
console.log("Unique raw competition IDs:", i.size), s.length !== i.size && console.warn("⚠️ API returned duplicate competitions!");
|
|
596
|
-
const r = De(n.data)
|
|
597
|
-
|
|
598
|
+
const r = De(n.data);
|
|
599
|
+
console.log("Transformed (first 3 items):", JSON.stringify(r.slice(0, 3), null, 2));
|
|
600
|
+
const a = /* @__PURE__ */ new Set(), d = r.filter((l) => a.has(l.id) ? !1 : (a.add(l.id), !0));
|
|
601
|
+
return r.length !== d.length && console.warn(`Removed ${r.length - d.length} duplicate competitions`), d;
|
|
598
602
|
}
|
|
599
603
|
function Ne(e) {
|
|
600
604
|
return {
|
|
@@ -777,7 +781,7 @@ function w(e) {
|
|
|
777
781
|
function Be(e) {
|
|
778
782
|
return w(e.data);
|
|
779
783
|
}
|
|
780
|
-
function
|
|
784
|
+
function Ue(e) {
|
|
781
785
|
return e.data.map(w);
|
|
782
786
|
}
|
|
783
787
|
async function dt(e, t, o) {
|
|
@@ -800,7 +804,7 @@ async function ut(e, t) {
|
|
|
800
804
|
next: e?.next,
|
|
801
805
|
config: o
|
|
802
806
|
});
|
|
803
|
-
return
|
|
807
|
+
return Ue(s);
|
|
804
808
|
}
|
|
805
809
|
async function mt(e, t, o) {
|
|
806
810
|
const n = o || F(), s = {};
|
|
@@ -838,7 +842,7 @@ function z(e) {
|
|
|
838
842
|
]
|
|
839
843
|
};
|
|
840
844
|
}
|
|
841
|
-
function
|
|
845
|
+
function $e(e) {
|
|
842
846
|
return {
|
|
843
847
|
id: e.id,
|
|
844
848
|
name: e.name,
|
|
@@ -901,7 +905,7 @@ function We(e) {
|
|
|
901
905
|
function j(e) {
|
|
902
906
|
switch (e.entity_type) {
|
|
903
907
|
case "competition": {
|
|
904
|
-
const t =
|
|
908
|
+
const t = $e(e);
|
|
905
909
|
return {
|
|
906
910
|
source: "FOOTBALL",
|
|
907
911
|
entityType: "competition",
|
|
@@ -939,8 +943,8 @@ async function gt(e, t) {
|
|
|
939
943
|
return [];
|
|
940
944
|
const o = t || F(), n = {
|
|
941
945
|
q: e.query.trim()
|
|
942
|
-
}, i = (e.entityTypes && e.entityTypes.length > 0 ? e.entityTypes : ["competition", "team", "player"]).map((
|
|
943
|
-
switch (
|
|
946
|
+
}, i = (e.entityTypes && e.entityTypes.length > 0 ? e.entityTypes : ["competition", "team", "player"]).map((d) => {
|
|
947
|
+
switch (d) {
|
|
944
948
|
case "team":
|
|
945
949
|
return "teams";
|
|
946
950
|
case "player":
|
|
@@ -948,7 +952,7 @@ async function gt(e, t) {
|
|
|
948
952
|
case "competition":
|
|
949
953
|
return "competitions";
|
|
950
954
|
default:
|
|
951
|
-
return
|
|
955
|
+
return d;
|
|
952
956
|
}
|
|
953
957
|
});
|
|
954
958
|
n.entities = i.join(","), e.lang && (n.lang = e.lang), e.limit && (n.limit = String(e.limit));
|
|
@@ -958,14 +962,14 @@ async function gt(e, t) {
|
|
|
958
962
|
next: e.next,
|
|
959
963
|
config: o
|
|
960
964
|
}), a = [];
|
|
961
|
-
return r.data && (r.data.competitions && r.data.competitions.forEach((
|
|
962
|
-
const l = j({ ...
|
|
965
|
+
return r.data && (r.data.competitions && r.data.competitions.forEach((d) => {
|
|
966
|
+
const l = j({ ...d, entity_type: "competition" });
|
|
963
967
|
l && a.push(l);
|
|
964
|
-
}), r.data.teams && r.data.teams.forEach((
|
|
965
|
-
const l = j({ ...
|
|
968
|
+
}), r.data.teams && r.data.teams.forEach((d) => {
|
|
969
|
+
const l = j({ ...d, entity_type: "team" });
|
|
966
970
|
l && a.push(l);
|
|
967
|
-
}), r.data.players && r.data.players.forEach((
|
|
968
|
-
const l = j({ ...
|
|
971
|
+
}), r.data.players && r.data.players.forEach((d) => {
|
|
972
|
+
const l = j({ ...d, entity_type: "player" });
|
|
969
973
|
l && a.push(l);
|
|
970
974
|
})), a;
|
|
971
975
|
}
|
|
@@ -1008,13 +1012,13 @@ function St(e, t, o) {
|
|
|
1008
1012
|
const n = o.filter((r) => r.status.type === "FINISHED"), s = o.filter(
|
|
1009
1013
|
(r) => r.status.type === "NOT_STARTED" || r.status.type === "POSTPONED"
|
|
1010
1014
|
), i = t.entries.map((r) => {
|
|
1011
|
-
const a = r.competitor.id,
|
|
1015
|
+
const a = r.competitor.id, d = n.filter(
|
|
1012
1016
|
(m) => m.competitorOne.id === e && m.competitorTwo.id === a || m.competitorOne.id === a && m.competitorTwo.id === e
|
|
1013
1017
|
), l = s.filter(
|
|
1014
1018
|
(m) => m.competitorOne.id === e && m.competitorTwo.id === a || m.competitorOne.id === a && m.competitorTwo.id === e
|
|
1015
1019
|
);
|
|
1016
|
-
let u,
|
|
1017
|
-
return
|
|
1020
|
+
let u, c;
|
|
1021
|
+
return d.forEach((m) => {
|
|
1018
1022
|
const g = m.competitorOne.id === e, p = parseInt(m.score?.competitorOne ?? "0"), h = parseInt(m.score?.competitorTwo ?? "0"), R = g ? p : h, S = g ? h : p;
|
|
1019
1023
|
let A;
|
|
1020
1024
|
R > S ? A = "W" : R === S ? A = "D" : A = "L";
|
|
@@ -1025,14 +1029,14 @@ function St(e, t, o) {
|
|
|
1025
1029
|
matchId: m.id,
|
|
1026
1030
|
isUpcoming: !1
|
|
1027
1031
|
};
|
|
1028
|
-
g ? u = D :
|
|
1032
|
+
g ? u = D : c = D;
|
|
1029
1033
|
}), l.forEach((m) => {
|
|
1030
1034
|
const g = m.competitorOne.id === e;
|
|
1031
1035
|
g && !u ? u = {
|
|
1032
1036
|
date: m.timing.kickoffTime,
|
|
1033
1037
|
matchId: m.id,
|
|
1034
1038
|
isUpcoming: !0
|
|
1035
|
-
} : !g && !
|
|
1039
|
+
} : !g && !c && (c = {
|
|
1036
1040
|
date: m.timing.kickoffTime,
|
|
1037
1041
|
matchId: m.id,
|
|
1038
1042
|
isUpcoming: !0
|
|
@@ -1046,7 +1050,7 @@ function St(e, t, o) {
|
|
|
1046
1050
|
gamesPlayed: r.stats.played ?? 0,
|
|
1047
1051
|
points: r.stats.points ?? 0,
|
|
1048
1052
|
homeResult: u,
|
|
1049
|
-
awayResult:
|
|
1053
|
+
awayResult: c
|
|
1050
1054
|
};
|
|
1051
1055
|
});
|
|
1052
1056
|
return {
|
|
@@ -1104,8 +1108,8 @@ function Mt(e, t = 10) {
|
|
|
1104
1108
|
const n = o.seasonStatistics?.yellowCards ?? 0, s = o.seasonStatistics?.redCards ?? 0;
|
|
1105
1109
|
return n + s > 0;
|
|
1106
1110
|
}).sort((o, n) => {
|
|
1107
|
-
const s = o.seasonStatistics?.yellowCards ?? 0, i = o.seasonStatistics?.redCards ?? 0, r = n.seasonStatistics?.yellowCards ?? 0, a = n.seasonStatistics?.redCards ?? 0,
|
|
1108
|
-
return l !==
|
|
1111
|
+
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;
|
|
1112
|
+
return l !== d ? l - d : a !== i ? a - i : r - s;
|
|
1109
1113
|
}).slice(0, t);
|
|
1110
1114
|
}
|
|
1111
1115
|
function b(e) {
|
|
@@ -1164,8 +1168,8 @@ function qe(e, t = 10) {
|
|
|
1164
1168
|
const r = s.goals ?? 0, a = i.goals ?? 0;
|
|
1165
1169
|
if (a !== r)
|
|
1166
1170
|
return a - r;
|
|
1167
|
-
const
|
|
1168
|
-
return (i.assists ?? 0) -
|
|
1171
|
+
const d = s.assists ?? 0;
|
|
1172
|
+
return (i.assists ?? 0) - d;
|
|
1169
1173
|
}).slice(0, t);
|
|
1170
1174
|
}
|
|
1171
1175
|
function je(e, t = 10) {
|
|
@@ -1174,8 +1178,8 @@ function je(e, t = 10) {
|
|
|
1174
1178
|
const r = s.assists ?? 0, a = i.assists ?? 0;
|
|
1175
1179
|
if (a !== r)
|
|
1176
1180
|
return a - r;
|
|
1177
|
-
const
|
|
1178
|
-
return (i.goals ?? 0) -
|
|
1181
|
+
const d = s.goals ?? 0;
|
|
1182
|
+
return (i.goals ?? 0) - d;
|
|
1179
1183
|
}).slice(0, t);
|
|
1180
1184
|
}
|
|
1181
1185
|
function Ve(e, t = 10) {
|
|
@@ -1184,9 +1188,9 @@ function Ve(e, t = 10) {
|
|
|
1184
1188
|
const r = (s.yellowCards ?? 0) + (s.redCards ?? 0) * 3, a = (i.yellowCards ?? 0) + (i.redCards ?? 0) * 3;
|
|
1185
1189
|
if (a !== r)
|
|
1186
1190
|
return a - r;
|
|
1187
|
-
const
|
|
1188
|
-
if (l !==
|
|
1189
|
-
return l -
|
|
1191
|
+
const d = s.redCards ?? 0, l = i.redCards ?? 0;
|
|
1192
|
+
if (l !== d)
|
|
1193
|
+
return l - d;
|
|
1190
1194
|
const u = s.yellowCards ?? 0;
|
|
1191
1195
|
return (i.yellowCards ?? 0) - u;
|
|
1192
1196
|
}).slice(0, t);
|
|
@@ -1197,9 +1201,9 @@ function Ye(e, t = 10) {
|
|
|
1197
1201
|
const r = (s.goals ?? 0) + (s.assists ?? 0), a = (i.goals ?? 0) + (i.assists ?? 0);
|
|
1198
1202
|
if (a !== r)
|
|
1199
1203
|
return a - r;
|
|
1200
|
-
const
|
|
1201
|
-
if (l !==
|
|
1202
|
-
return l -
|
|
1204
|
+
const d = s.goals ?? 0, l = i.goals ?? 0;
|
|
1205
|
+
if (l !== d)
|
|
1206
|
+
return l - d;
|
|
1203
1207
|
const u = s.assists ?? 0;
|
|
1204
1208
|
return (i.assists ?? 0) - u;
|
|
1205
1209
|
}).slice(0, t);
|
|
@@ -1263,24 +1267,24 @@ function Ht(e) {
|
|
|
1263
1267
|
function Qe(e, t, o) {
|
|
1264
1268
|
if (e.status?.type !== "FINISHED" || !e.score) return null;
|
|
1265
1269
|
const n = parseInt(e.score.competitorOne || "0"), s = parseInt(e.score.competitorTwo || "0"), i = o ? n : s, r = o ? s : n;
|
|
1266
|
-
let a = null,
|
|
1270
|
+
let a = null, d = null;
|
|
1267
1271
|
const l = e.score.breakdown?.halfTime;
|
|
1268
1272
|
if (l) {
|
|
1269
1273
|
const g = parseInt(l.competitorOne || "0"), p = parseInt(l.competitorTwo || "0");
|
|
1270
|
-
a = o ? g : p,
|
|
1274
|
+
a = o ? g : p, d = o ? p : g;
|
|
1271
1275
|
}
|
|
1272
1276
|
const u = e.statistics;
|
|
1273
|
-
let
|
|
1277
|
+
let c = null, m = null;
|
|
1274
1278
|
if (u) {
|
|
1275
1279
|
const g = u.find?.((p) => p.type === "CORNERS");
|
|
1276
|
-
g && (
|
|
1280
|
+
g && (c = o ? g.competitorOne : g.competitorTwo, m = o ? g.competitorTwo : g.competitorOne);
|
|
1277
1281
|
}
|
|
1278
1282
|
return {
|
|
1279
1283
|
goalsFor: i,
|
|
1280
1284
|
goalsAgainst: r,
|
|
1281
1285
|
halfTimeGoalsFor: a,
|
|
1282
|
-
halfTimeGoalsAgainst:
|
|
1283
|
-
cornersFor:
|
|
1286
|
+
halfTimeGoalsAgainst: d,
|
|
1287
|
+
cornersFor: c,
|
|
1284
1288
|
cornersAgainst: m,
|
|
1285
1289
|
isWin: i > r,
|
|
1286
1290
|
isDraw: i === r,
|
|
@@ -1299,24 +1303,24 @@ function kt(e, t) {
|
|
|
1299
1303
|
function Bt(e) {
|
|
1300
1304
|
return e.status?.type === "FINISHED";
|
|
1301
1305
|
}
|
|
1302
|
-
function
|
|
1306
|
+
function Ut(e, t) {
|
|
1303
1307
|
const o = K(e, t);
|
|
1304
1308
|
return parseInt(o ? e.score?.competitorOne || "0" : e.score?.competitorTwo || "0");
|
|
1305
1309
|
}
|
|
1306
|
-
function
|
|
1310
|
+
function $t(e, t) {
|
|
1307
1311
|
const o = K(e, t);
|
|
1308
1312
|
return parseInt(o ? e.score?.competitorTwo || "0" : e.score?.competitorOne || "0");
|
|
1309
1313
|
}
|
|
1310
1314
|
function xt(e, t, o) {
|
|
1311
1315
|
const n = e.filter((u) => {
|
|
1312
1316
|
if (u.status?.type !== "FINISHED" || !u.score) return !1;
|
|
1313
|
-
const
|
|
1314
|
-
return
|
|
1317
|
+
const c = u.competitorOne.id === t || u.competitorTwo.id === t, m = u.competitorOne.id === o || u.competitorTwo.id === o;
|
|
1318
|
+
return c && m;
|
|
1315
1319
|
});
|
|
1316
|
-
let s = 0, i = 0, r = 0, a = 0,
|
|
1320
|
+
let s = 0, i = 0, r = 0, a = 0, d = 0;
|
|
1317
1321
|
n.forEach((u) => {
|
|
1318
|
-
const
|
|
1319
|
-
a += p,
|
|
1322
|
+
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;
|
|
1323
|
+
a += p, d += h, p > h ? s++ : h > p ? i++ : r++;
|
|
1320
1324
|
});
|
|
1321
1325
|
const l = n.length;
|
|
1322
1326
|
return {
|
|
@@ -1325,12 +1329,12 @@ function xt(e, t, o) {
|
|
|
1325
1329
|
awayTeamWins: i,
|
|
1326
1330
|
draws: r,
|
|
1327
1331
|
homeTeamGoals: a,
|
|
1328
|
-
awayTeamGoals:
|
|
1332
|
+
awayTeamGoals: d,
|
|
1329
1333
|
homeTeamWinPercentage: l > 0 ? s / l * 100 : 0,
|
|
1330
1334
|
awayTeamWinPercentage: l > 0 ? i / l * 100 : 0,
|
|
1331
1335
|
drawPercentage: l > 0 ? r / l * 100 : 0,
|
|
1332
1336
|
homeTeamAvgGoals: l > 0 ? a / l : 0,
|
|
1333
|
-
awayTeamAvgGoals: l > 0 ?
|
|
1337
|
+
awayTeamAvgGoals: l > 0 ? d / l : 0
|
|
1334
1338
|
};
|
|
1335
1339
|
}
|
|
1336
1340
|
function Wt(e, t, o, n = 5) {
|
|
@@ -1339,9 +1343,9 @@ function Wt(e, t, o, n = 5) {
|
|
|
1339
1343
|
const r = i.competitorOne.id === t || i.competitorTwo.id === t, a = i.competitorOne.id === o || i.competitorTwo.id === o;
|
|
1340
1344
|
return r && a;
|
|
1341
1345
|
}).sort((i, r) => new Date(r.timing.kickoffTime).getTime() - new Date(i.timing.kickoffTime).getTime()).slice(0, n).map((i) => {
|
|
1342
|
-
const r = parseInt(i.score?.competitorOne || "0"), a = parseInt(i.score?.competitorTwo || "0"),
|
|
1343
|
-
let
|
|
1344
|
-
return l > u ?
|
|
1346
|
+
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;
|
|
1347
|
+
let c;
|
|
1348
|
+
return l > u ? c = "home" : u > l ? c = "away" : c = "draw", {
|
|
1345
1349
|
id: i.id,
|
|
1346
1350
|
date: new Date(i.timing.kickoffTime).toLocaleDateString("en-GB", {
|
|
1347
1351
|
day: "numeric",
|
|
@@ -1355,7 +1359,7 @@ function Wt(e, t, o, n = 5) {
|
|
|
1355
1359
|
homeScore: r,
|
|
1356
1360
|
awayScore: a,
|
|
1357
1361
|
venue: i.venue?.name,
|
|
1358
|
-
winner:
|
|
1362
|
+
winner: c
|
|
1359
1363
|
};
|
|
1360
1364
|
});
|
|
1361
1365
|
}
|
|
@@ -1373,16 +1377,16 @@ function J(e, t, o, n) {
|
|
|
1373
1377
|
for (const i of e) {
|
|
1374
1378
|
const r = i.competitorOne.id === t, a = i.competitorTwo.id === t;
|
|
1375
1379
|
if (!r && !a || o === "home" && !r || o === "away" && !a || i.status?.type !== "FINISHED") continue;
|
|
1376
|
-
const
|
|
1377
|
-
if (!
|
|
1378
|
-
const l =
|
|
1380
|
+
const d = i.mainEvents;
|
|
1381
|
+
if (!d || !Array.isArray(d)) continue;
|
|
1382
|
+
const l = d.filter((p) => p.type && Je.includes(p.type)).sort((p, h) => {
|
|
1379
1383
|
const R = p.minute ?? 0, S = h.minute ?? 0;
|
|
1380
1384
|
return R !== S ? R - S : (p.injuryMinute ?? 0) - (h.injuryMinute ?? 0);
|
|
1381
1385
|
});
|
|
1382
1386
|
if (l.length === 0) continue;
|
|
1383
|
-
const u = l[0],
|
|
1387
|
+
const u = l[0], c = r ? "ONE" : "TWO", m = u.type === "OWN_GOAL";
|
|
1384
1388
|
let g;
|
|
1385
|
-
m ? g = u.competitorPosition !==
|
|
1389
|
+
m ? g = u.competitorPosition !== c : g = u.competitorPosition === c, (n === "scored" && g || n === "conceded" && !g) && s++;
|
|
1386
1390
|
}
|
|
1387
1391
|
return s;
|
|
1388
1392
|
}
|
|
@@ -1418,54 +1422,54 @@ function qt(e, t, o) {
|
|
|
1418
1422
|
avgCornersFor: 0,
|
|
1419
1423
|
avgCornersAgainst: 0
|
|
1420
1424
|
};
|
|
1421
|
-
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,
|
|
1425
|
+
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) => {
|
|
1422
1426
|
const v = f.halfTimeGoalsFor, H = f.goalsFor - v;
|
|
1423
1427
|
return v > 0 && H > 0;
|
|
1424
1428
|
}).length, R = J(e, t, o, "scored"), S = we(e, t, o), A = g.filter((f) => f.halfTimeGoalsFor > f.halfTimeGoalsAgainst).length, D = g.filter((f) => {
|
|
1425
1429
|
const v = f.halfTimeGoalsAgainst, H = f.goalsAgainst - v;
|
|
1426
1430
|
return v > 0 && H > 0;
|
|
1427
|
-
}).length, B = J(e, t, o, "conceded"),
|
|
1431
|
+
}).length, B = J(e, t, o, "conceded"), U = g.filter((f) => f.halfTimeGoalsAgainst > f.halfTimeGoalsFor).length, L = n.filter((f) => f.cornersFor !== null), $ = L.reduce((f, v) => f + (v.cornersFor || 0), 0), x = L.reduce((f, v) => f + (v.cornersAgainst || 0), 0);
|
|
1428
1432
|
return {
|
|
1429
1433
|
played: s,
|
|
1430
1434
|
goalsForPerMatch: W(i, s),
|
|
1431
1435
|
cleanSheets: O(a, s),
|
|
1432
|
-
wonToNil: O(
|
|
1436
|
+
wonToNil: O(d, s),
|
|
1433
1437
|
scoringRate: O(l, s),
|
|
1434
1438
|
scoredInBothHalves: O(h, p),
|
|
1435
1439
|
scoredFirst: O(R, S),
|
|
1436
1440
|
leadingAtHalfTime: O(A, p),
|
|
1437
1441
|
goalsAgainstPerMatch: W(r, s),
|
|
1438
1442
|
failedToScore: O(u, s),
|
|
1439
|
-
lostToNil: O(
|
|
1443
|
+
lostToNil: O(c, s),
|
|
1440
1444
|
concedingRate: O(m, s),
|
|
1441
1445
|
concededInBothHalves: O(D, p),
|
|
1442
1446
|
concededFirst: O(B, S),
|
|
1443
|
-
losingAtHalfTime: O(
|
|
1444
|
-
avgCornersFor: W(
|
|
1447
|
+
losingAtHalfTime: O(U, p),
|
|
1448
|
+
avgCornersFor: W($, L.length),
|
|
1445
1449
|
avgCornersAgainst: W(x, L.length)
|
|
1446
1450
|
};
|
|
1447
1451
|
}
|
|
1448
1452
|
function et(e, t) {
|
|
1449
1453
|
return e.filter((o) => o.status?.type !== "FINISHED" ? !1 : o.competitorOne.id === t || o.competitorTwo.id === t).map((o) => {
|
|
1450
1454
|
const n = o.competitorOne.id === t, s = parseInt(o.score?.competitorOne || "0"), i = parseInt(o.score?.competitorTwo || "0"), r = s + i, a = o.periods;
|
|
1451
|
-
let
|
|
1455
|
+
let d = null;
|
|
1452
1456
|
if (a && Array.isArray(a)) {
|
|
1453
1457
|
const l = a.find(
|
|
1454
1458
|
(u) => u.type === "FIRST_HALF" || u.type === "1ST_HALF"
|
|
1455
1459
|
);
|
|
1456
1460
|
if (l?.score) {
|
|
1457
|
-
const u = parseInt(l.score.competitorOne || "0"),
|
|
1458
|
-
|
|
1461
|
+
const u = parseInt(l.score.competitorOne || "0"), c = parseInt(l.score.competitorTwo || "0");
|
|
1462
|
+
d = u + c;
|
|
1459
1463
|
}
|
|
1460
1464
|
}
|
|
1461
|
-
return { totalGoals: r, halfTimeGoals:
|
|
1465
|
+
return { totalGoals: r, halfTimeGoals: d, isHome: n };
|
|
1462
1466
|
});
|
|
1463
1467
|
}
|
|
1464
1468
|
function y(e, t) {
|
|
1465
1469
|
return e.length === 0 ? 0 : e.filter((n) => n > t).length / e.length * 100;
|
|
1466
1470
|
}
|
|
1467
1471
|
function jt(e, t) {
|
|
1468
|
-
const o = et(e, t), n = o.filter((
|
|
1472
|
+
const o = et(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);
|
|
1469
1473
|
return {
|
|
1470
1474
|
over05: {
|
|
1471
1475
|
home: y(r, 0.5),
|
|
@@ -1499,17 +1503,17 @@ function jt(e, t) {
|
|
|
1499
1503
|
},
|
|
1500
1504
|
over05HT: {
|
|
1501
1505
|
home: y(l, 0.5),
|
|
1502
|
-
total: y(
|
|
1506
|
+
total: y(d, 0.5),
|
|
1503
1507
|
away: y(u, 0.5)
|
|
1504
1508
|
},
|
|
1505
1509
|
over15HT: {
|
|
1506
1510
|
home: y(l, 1.5),
|
|
1507
|
-
total: y(
|
|
1511
|
+
total: y(d, 1.5),
|
|
1508
1512
|
away: y(u, 1.5)
|
|
1509
1513
|
},
|
|
1510
1514
|
over25HT: {
|
|
1511
1515
|
home: y(l, 2.5),
|
|
1512
|
-
total: y(
|
|
1516
|
+
total: y(d, 2.5),
|
|
1513
1517
|
away: y(u, 2.5)
|
|
1514
1518
|
}
|
|
1515
1519
|
};
|
|
@@ -1525,11 +1529,11 @@ function tt(e, t) {
|
|
|
1525
1529
|
};
|
|
1526
1530
|
}
|
|
1527
1531
|
function Vt(e, t, o, n, s, i) {
|
|
1528
|
-
const r = t?.entries.find((N) => N.competitor.id === e), a = o?.entries.find((N) => N.competitor.id === e),
|
|
1532
|
+
const r = t?.entries.find((N) => N.competitor.id === e), a = o?.entries.find((N) => N.competitor.id === e), d = n?.entries.find((N) => N.competitor.id === e), l = s?.entries.find((N) => N.competitor.id === e), u = i?.entries.find((N) => N.competitor.id === e);
|
|
1529
1533
|
if (!r) return null;
|
|
1530
|
-
const
|
|
1534
|
+
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, R = r?.stats?.goalsAgainst ?? 0, S = a?.stats?.played ?? 0, A = d?.stats?.played ?? 0, D = r?.stats?.played ?? 0, B = D > 0 ? g / D : 0, U = D > 0 ? R / D : 0, L = B + U, $ = S > 0 ? c / S : 0, x = A > 0 ? m / A : 0, f = S > 0 ? p / S : 0, v = A > 0 ? h / A : 0, H = $ + f, ee = x + v;
|
|
1531
1535
|
return {
|
|
1532
|
-
homeGoals:
|
|
1536
|
+
homeGoals: c,
|
|
1533
1537
|
totalGoals: g,
|
|
1534
1538
|
awayGoals: m,
|
|
1535
1539
|
homeGamesPlayed: S,
|
|
@@ -1539,9 +1543,9 @@ function Vt(e, t, o, n, s, i) {
|
|
|
1539
1543
|
totalGoalsConceded: R,
|
|
1540
1544
|
awayGoalsConceded: h,
|
|
1541
1545
|
gfPerMatch: B,
|
|
1542
|
-
gaPerMatch:
|
|
1546
|
+
gaPerMatch: U,
|
|
1543
1547
|
gfGaPerMatch: L,
|
|
1544
|
-
homeGfPerMatch:
|
|
1548
|
+
homeGfPerMatch: $,
|
|
1545
1549
|
awayGfPerMatch: x,
|
|
1546
1550
|
homeGaPerMatch: f,
|
|
1547
1551
|
awayGaPerMatch: v,
|
|
@@ -1551,8 +1555,8 @@ function Vt(e, t, o, n, s, i) {
|
|
|
1551
1555
|
}
|
|
1552
1556
|
function _(e, t, o, n) {
|
|
1553
1557
|
const s = e.filter((r) => {
|
|
1554
|
-
const a = r.competitorOne.id === t,
|
|
1555
|
-
return !(!a && !
|
|
1558
|
+
const a = r.competitorOne.id === t, d = r.competitorTwo.id === t;
|
|
1559
|
+
return !(!a && !d || r.status?.type !== "FINISHED" || n === "home" && !a || n === "away" && !d);
|
|
1556
1560
|
}).sort((r, a) => new Date(a.timing.kickoffTime).getTime() - new Date(r.timing.kickoffTime).getTime());
|
|
1557
1561
|
if (s.length === 0) return null;
|
|
1558
1562
|
let i = 0;
|
|
@@ -1709,31 +1713,31 @@ function Q(e, t) {
|
|
|
1709
1713
|
}), o;
|
|
1710
1714
|
}
|
|
1711
1715
|
function zt(e, t, o, n, s, i, r) {
|
|
1712
|
-
const a = Q(e, t),
|
|
1716
|
+
const a = Q(e, t), d = Q(e, o), l = /* @__PURE__ */ new Set([
|
|
1713
1717
|
...a.keys(),
|
|
1714
|
-
...
|
|
1718
|
+
...d.keys(),
|
|
1715
1719
|
t,
|
|
1716
1720
|
// Include home team as row for away team results
|
|
1717
1721
|
o
|
|
1718
1722
|
// Include away team as row for home team results
|
|
1719
1723
|
]), u = [];
|
|
1720
|
-
return l.forEach((
|
|
1721
|
-
const m = a.get(
|
|
1722
|
-
if (!m && !g &&
|
|
1724
|
+
return l.forEach((c) => {
|
|
1725
|
+
const m = a.get(c), g = d.get(c);
|
|
1726
|
+
if (!m && !g && c !== t && c !== o)
|
|
1723
1727
|
return;
|
|
1724
1728
|
let p, h;
|
|
1725
|
-
|
|
1726
|
-
opponentId:
|
|
1729
|
+
c === t ? (p = n, h = i) : c === o ? (p = s, h = r) : (p = m?.opponentName || g?.opponentName || "", h = m?.opponentLogo || g?.opponentLogo), u.push({
|
|
1730
|
+
opponentId: c,
|
|
1727
1731
|
opponentName: p,
|
|
1728
1732
|
opponentLogo: h,
|
|
1729
1733
|
homeTeamHome: m?.homeResult,
|
|
1730
1734
|
homeTeamAway: m?.awayResult,
|
|
1731
1735
|
awayTeamHome: g?.homeResult,
|
|
1732
1736
|
awayTeamAway: g?.awayResult,
|
|
1733
|
-
isHomeTeamRow:
|
|
1734
|
-
isAwayTeamRow:
|
|
1737
|
+
isHomeTeamRow: c === t,
|
|
1738
|
+
isAwayTeamRow: c === o
|
|
1735
1739
|
});
|
|
1736
|
-
}), u.sort((
|
|
1740
|
+
}), u.sort((c, m) => c.isHomeTeamRow ? -1 : m.isHomeTeamRow ? 1 : c.isAwayTeamRow ? -1 : m.isAwayTeamRow ? 1 : c.opponentName.localeCompare(m.opponentName));
|
|
1737
1741
|
}
|
|
1738
1742
|
export {
|
|
1739
1743
|
Je as GOAL_EVENT_TYPES,
|
|
@@ -1778,7 +1782,7 @@ export {
|
|
|
1778
1782
|
go as getLeaderboardTemplate,
|
|
1779
1783
|
tt as getMatchResult,
|
|
1780
1784
|
Ve as getMostCardedPlayersFromMatches,
|
|
1781
|
-
|
|
1785
|
+
$t as getOpponentScore,
|
|
1782
1786
|
po as getProviderRefId,
|
|
1783
1787
|
Wt as getRecentH2HMeetings,
|
|
1784
1788
|
vt as getTeamFinishedMatches,
|
|
@@ -1789,7 +1793,7 @@ export {
|
|
|
1789
1793
|
jt as getTeamOverUnderStats,
|
|
1790
1794
|
ht as getTeamPreviousMatch,
|
|
1791
1795
|
St as getTeamResultsTable,
|
|
1792
|
-
|
|
1796
|
+
Ut as getTeamScore,
|
|
1793
1797
|
rt as getTeamSeasonStatistics,
|
|
1794
1798
|
q as getTeamStreaks,
|
|
1795
1799
|
Yt as getTeamStreaksComparison,
|
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.6.
|
|
7
|
+
"version": "0.6.3",
|
|
8
8
|
"type": "module",
|
|
9
9
|
"main": "./fansunited-data-layer.cjs",
|
|
10
10
|
"module": "./fansunited-data-layer.js",
|