fansunited-data-layer 0.5.1 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/api/sportal365-sports/http.d.ts.map +1 -1
- package/client.cjs +1 -1
- package/client.js +1 -1
- package/fansunited-data-layer.cjs +1 -1
- package/fansunited-data-layer.js +2 -2
- package/index-BWAwKR8L.cjs +1 -0
- package/{index-wKgzRn4X.js → index-D8MJQXDd.js} +197 -167
- package/package.json +1 -1
- package/index-C7ZA8KMC.cjs +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/lib/api/sportal365-sports/http.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAa,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/D;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC7B,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC5B,iEAAiE;IACjE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC3B,yCAAyC;IACzC,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;;;;;;;;;;;OAWG;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/sportal365-sports/http.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAa,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/D;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC7B,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC5B,iEAAiE;IACjE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC3B,yCAAyC;IACzC,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;;;;;;;;;;;OAWG;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,CAoGrE"}
|
package/client.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const h=require("react"),Z=require("./index-
|
|
1
|
+
"use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const h=require("react"),Z=require("./index-BWAwKR8L.cjs");var et={exports:{}},Ge={};var ma;function bs(){if(ma)return Ge;ma=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.fragment");function a(i,s,r){var n=null;if(r!==void 0&&(n=""+r),s.key!==void 0&&(n=""+s.key),"key"in s){r={};for(var o in s)o!=="key"&&(r[o]=s[o])}else r=s;return s=r.ref,{$$typeof:e,type:i,key:n,ref:s!==void 0?s:null,props:r}}return Ge.Fragment=t,Ge.jsx=a,Ge.jsxs=a,Ge}var $e={};var ga;function Ps(){return ga||(ga=1,process.env.NODE_ENV!=="production"&&(function(){function e(w){if(w==null)return null;if(typeof w=="function")return w.$$typeof===P?null:w.displayName||w.name||null;if(typeof w=="string")return w;switch(w){case b:return"Fragment";case A:return"Profiler";case I:return"StrictMode";case g:return"Suspense";case f:return"SuspenseList";case C:return"Activity"}if(typeof w=="object")switch(typeof w.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),w.$$typeof){case v:return"Portal";case $:return w.displayName||"Context";case F:return(w._context.displayName||"Context")+".Consumer";case D:var R=w.render;return w=w.displayName,w||(w=R.displayName||R.name||"",w=w!==""?"ForwardRef("+w+")":"ForwardRef"),w;case y:return R=w.displayName||null,R!==null?R:e(w.type)||"Memo";case T:R=w._payload,w=w._init;try{return e(w(R))}catch{}}return null}function t(w){return""+w}function a(w){try{t(w);var R=!1}catch{R=!0}if(R){R=console;var M=R.error,N=typeof Symbol=="function"&&Symbol.toStringTag&&w[Symbol.toStringTag]||w.constructor.name||"Object";return M.call(R,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",N),t(w)}}function i(w){if(w===b)return"<>";if(typeof w=="object"&&w!==null&&w.$$typeof===T)return"<...>";try{var R=e(w);return R?"<"+R+">":"<...>"}catch{return"<...>"}}function s(){var w=k.A;return w===null?null:w.getOwner()}function r(){return Error("react-stack-top-frame")}function n(w){if(U.call(w,"key")){var R=Object.getOwnPropertyDescriptor(w,"key").get;if(R&&R.isReactWarning)return!1}return w.key!==void 0}function o(w,R){function M(){re||(re=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",R))}M.isReactWarning=!0,Object.defineProperty(w,"key",{get:M,configurable:!0})}function l(){var w=e(this.type);return ae[w]||(ae[w]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),w=this.props.ref,w!==void 0?w:null}function c(w,R,M,N,ne,ve){var G=M.ref;return w={$$typeof:_,type:w,key:R,props:M,_owner:N},(G!==void 0?G:null)!==null?Object.defineProperty(w,"ref",{enumerable:!1,get:l}):Object.defineProperty(w,"ref",{enumerable:!1,value:null}),w._store={},Object.defineProperty(w._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(w,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(w,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:ne}),Object.defineProperty(w,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:ve}),Object.freeze&&(Object.freeze(w.props),Object.freeze(w)),w}function d(w,R,M,N,ne,ve){var G=R.children;if(G!==void 0)if(N)if(q(G)){for(N=0;N<G.length;N++)p(G[N]);Object.freeze&&Object.freeze(G)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else p(G);if(U.call(R,"key")){G=e(w);var K=Object.keys(R).filter(function(Ne){return Ne!=="key"});N=0<K.length?"{key: someKey, "+K.join(": ..., ")+": ...}":"{key: someKey}",J[G+N]||(K=0<K.length?"{"+K.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
|
|
2
2
|
let props = %s;
|
|
3
3
|
<%s {...props} />
|
|
4
4
|
React keys must be passed directly to JSX without using spread:
|
package/client.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import Fs, { createContext as wt, useContext as _t, useMemo as b, useCallback as I, useState as V, useEffect as ke } from "react";
|
|
3
|
-
import { m as As, p as ks, d as Ds, o as ma, q as ga, r as fa, e as ya, i as Ls, l as Ns, h as xs } from "./index-
|
|
3
|
+
import { m as As, p as ks, d as Ds, o as ma, q as ga, r as fa, e as ya, i as Ls, l as Ns, h as xs } from "./index-D8MJQXDd.js";
|
|
4
4
|
var at = { exports: {} }, Ue = {};
|
|
5
5
|
var wa;
|
|
6
6
|
function Gs() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=require("./index-C7ZA8KMC.cjs"),E=require("react");function me(e){return{entityType:"tournament",id:e.id.toString(),name:e.name,slug:e.slug,gender:e.gender,type:e.type,region:e.region,country:{id:e.country.id.toString(),name:e.country.name,code:void 0,flag:e.country.url_flag??void 0,providerRef:m.toProviderRefArray(e.country.uuid)},assets:e.url_logo?{logo:e.url_logo}:void 0,providerRef:m.toProviderRefArray(e.uuid)}}function fe(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 ge(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 pe(e){return{entityType:"president",id:e.id.toString(),name:e.name,slug:e.slug,birthdate:e.birthdate??void 0,country:{id:e.country.id.toString(),name:e.country.name,code:void 0,flag:e.country.url_flag??void 0,providerRef:m.toProviderRefArray(e.country.uuid)},assets:e.url_thumb?{photo:e.url_thumb}:void 0,providerRef:m.toProviderRefArray(e.uuid)}}function ye(e){return{entityType:"venue",id:e.id.toString(),name:e.name,slug:e.slug,city:{id:e.city.id.toString(),name:e.city.name,country:{id:e.city.country.id.toString(),name:e.city.country.name,code:void 0,flag:e.city.country.url_flag??void 0,providerRef: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 he(e){return{entityType:"coach",id:e.id.toString(),name:e.name,slug:e.slug,birthdate:e.birthdate??void 0,country:{id:e.country.id.toString(),name:e.country.name,code:void 0,flag:e.country.url_flag??void 0,providerRef:m.toProviderRefArray(e.country.uuid)},assets:e.url_thumb?{photo:e.url_thumb}:void 0,providerRef:m.toProviderRefArray(e.uuid)}}function Te(e){switch(e.entity_type){case"tournament":return me(e);case"player":return fe(e);case"team":return ge(e);case"president":return pe(e);case"venue":return ye(e);case"coach":return he(e);default:throw new Error(`Unknown entity type: ${e.entity_type}`)}}async function ve(e,t){if(!e.query||e.query.trim()==="")return{results:[],query:e.query||""};const o=t||m.getConfig(),{sportal365Sports:s}=o,n=e.entityTypes&&e.entityTypes.length>0?e.entityTypes:["tournament","player","team","president","venue","coach"],i=await m.footballHttp.get({path:"/search",params:{query:e.query.trim(),entity_type:n.join(","),language_code:e.languageCode??s?.languageCode??"en"},headers:{"Accept-Language":e.languageCode??s?.languageCode??"en"},next:e.next,config:o});return!i||i.length===0?{results:[],query:e.query}:{results:i.map(Te),query:e.query}}const Se=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 N(e){if(e)return{id:e.id,legacyId:e.legacy_id??void 0,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,translations:e.translations.map(M),displayAsset:O(e.display_asset),slug:e.slug,providerRef:e.id}}function j(e){return{entityType:"team",id:e.id,legacyId:e.legacy_id??void 0,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,translations:e.translations.map(M),displayAsset:O(e.display_asset),slug:e.slug,tagScore:e.tag_score??void 0,sport:e.sport,country:N(e.country),gender:e.gender,competitionIds:e.competition_ids,type:e.type,national:e.national,undecided:e.undecided,providerRef:e.id}}function X(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:N(e.country),providerRef:e.id}}function _e(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:N(e.country),gender:e.gender,providerRef:e.id}}function Ce(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:N(e.country),gender:e.gender,birthdate:e.birthdate??void 0,position:e.position??void 0,providerRef:e.id}}function Ae(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:N(e.country),gender:e.gender,birthdate:e.birthdate??void 0,providerRef:e.id}}function Fe(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:N(e.country),gender:e.gender,birthdate:e.birthdate??void 0,providerRef:e.id}}function Me(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:N(e.country),city:e.city?X(e.city):void 0,providerRef:e.id}}function Oe(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:N(e.country),gender:e.gender,type:e.type??void 0,region:e.region??void 0,providerRef:e.id}}function Re(e){return{entityType:"match",id:e.id,legacyId:e.legacy_id??void 0,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,translations:e.translations.map(M),displayAsset:O(e.display_asset),slug:e.slug,tagScore:e.tag_score??void 0,sport:e.sport,competitionId:e.competition_id??void 0,startTime:e.start_time??void 0,homeTeam:e.home_team?j(e.home_team):void 0,awayTeam:e.away_team?j(e.away_team):void 0,providerRef:e.id}}function Pe(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 Ge(e){switch(e.entity_type){case"team":return j(e);case"city":return X(e);case"horse":return _e(e);case"player":return Ce(e);case"coach":return Ae(e);case"referee":return Fe(e);case"venue":return Me(e);case"tournament":case"competition":return Oe(e);case"match":return Re(e);case"country":return Pe(e);default:{const t=e;throw new Error(`Unknown entity type: ${t.entity_type}`)}}}async function Ne(e={},t){const o=t??m.getConfig(),s={};e.name&&(s.name=e.name),e.entityTypes&&e.entityTypes.length>0&&(s.entity_type=e.entityTypes.join(",")),e.sports&&e.sports.length>0&&(s.sport=e.sports.join(",")),e.eventStartTime&&(s.event_start_time=e.eventStartTime),e.ids&&e.ids.length>0&&(s.ids=e.ids.join(",")),e.competitionIds&&e.competitionIds.length>0&&(s.competition_ids=e.competitionIds.join(",")),e.domain&&(s.domain=e.domain),e.inputLanguage&&(s.input_language=e.inputLanguage),e.translationLanguage&&(s.translation_language=e.translationLanguage),e.limit!==void 0&&(s.limit=e.limit.toString()),e.offset!==void 0&&(s.offset=e.offset.toString());const n=await Se.get({path:"/suggest",params:s,next:e.next,config:o});return!n.results||n.results.length===0?{results:[],query:e.name}:{results:n.results.map(Ge),query:e.name}}const De=m.createHttpClient(m.SPORTAL365_STATISTICS_DOMAIN);function Ee(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(),s=e.next??{revalidate:600},n={participant_ids:e.teamId,season_ids:e.seasonId,participant_type:"TEAM"};console.log("[getTeamSeasonStatistics] Fetching team statistics:",{path:"/statistics/aggregate",params:n,teamId:e.teamId,seasonId:e.seasonId});const i=await De.get({path:"/statistics/aggregate",params:n,next:s,config:o});if(console.log("[getTeamSeasonStatistics] API response received:",{hasData:!!i.data,dataLength:i.data?.length??0,rawResponse:i}),!i.data||i.data.length===0)throw console.error("[getTeamSeasonStatistics] No statistics found:",{teamId:e.teamId,seasonId:e.seasonId,rawResponse:i}),new Error(`No statistics found for team ${e.teamId} in season ${e.seasonId}`);console.log("[getTeamSeasonStatistics] Transforming team statistics:",{teamId:i.data[0].id,teamName:i.data[0].name,statisticsCount:i.data[0].statistics?.length??0});const a=Ee(i.data[0],e.seasonId);return console.log("[getTeamSeasonStatistics] Successfully transformed team statistics:",{teamId:a.teamId,teamName:a.teamName,seasonId:a.seasonId,statisticsCount:a.statistics.length}),a}function Ie(e){const t=e.replace(/\/$/,"");function o(s){return`${t}${s}`}return{async get(s){const n=s.config||m.getConfig(),{fansUnited:i}=n;if(!i)throw new Error("Fans United configuration is missing. Add 'fansUnited' with 'apiKey' and 'clientId' to your config.");if(!i.apiKey||!i.clientId)throw new Error("Fans United configuration requires both 'apiKey' and 'clientId'");const a=new URL(o(s.path));if(a.searchParams.set("key",i.apiKey),a.searchParams.set("client_id",i.clientId),s.params)for(const[l,u]of Object.entries(s.params))u!==void 0&&(Array.isArray(u)?u.length>0&&a.searchParams.set(l,u.join(",")):a.searchParams.set(l,u));const d=await fetch(a.toString(),{method:"GET",headers:{Accept:"application/json","Content-Type":"application/json",...s.headers},signal:AbortSignal.timeout(3e4),...s.next&&{next:s.next}});if(!d.ok){let l=`Fans United API error: ${d.status} ${d.statusText}`;try{const u=await d.text();u&&(l+=` - ${u}`)}catch{}throw new Error(l)}return d.json()}}}const Le="https://football.fansunitedapi.com",D=Ie(Le);function He(e){return{id:String(e.id),name:e.name,active:e.active,providerRef:[{provider:"fansunited",id:String(e.id)}]}}function ke(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.flag,providerRef:[{provider:"fansunited",id:String(e.country.id)}]}),e.logo&&(t.assets={logo:e.logo}),e.seasons&&e.seasons.length>0&&(t.seasons=e.seasons.map(He)),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 Ue(e){return e.map(ke)}async function Be(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 s=await D.get({path:"/v1/competitions",params:o,config:t,next:e?.next});return Ue(s.data)}function $e(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 xe(e){return{id:e.id,name:e.name,type:e.type?.toUpperCase()||"LEAGUE",gender:e.gender?.toUpperCase(),country:e.country?$e(e.country):void 0,assets:e.assets?.logo?{logo:e.assets.logo}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function We(e){return xe(e.data)}async function qe(e,t,o){const s=o||m.getConfig(),n={};t?.lang&&(n.lang=t.lang);const i=await D.get({path:`/v1/competitions/${e}`,params:n,next:t?.next,config:s});return We(i)}function Ve(e){return{id:e.id,name:e.name,code:e.country_code,flag:e.assets?.flag,providerRef:[{provider:"fansunited",id:e.id}]}}function je(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?Ve(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 Ye(e){return je(e.data)}async function Ke(e,t,o){const s=o||m.getConfig(),n={};t?.lang&&(n.lang=t.lang);const i=await D.get({path:`/v1/teams/${e}`,params:n,next:t?.next,config:s});return Ye(i)}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 ze(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 Je(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 Z(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(ze),competitions:e.competitions?.map(Je),providerRef:[{provider:"fansunited",id:e.id}]}}function Qe(e){return Z(e.data)}function Xe(e){return e.data.map(Z)}async function Ze(e,t,o){const s=o||m.getConfig(),n={};t?.lang&&(n.lang=t.lang);const i=await D.get({path:`/v1/players/${e}`,params:n,next:t?.next,config:s});return Qe(i)}async function we(e,t){const o=t||m.getConfig(),s={};e?.lang&&(s.lang=e.lang),e?.playerIds&&(s.player_ids=e.playerIds),e?.countryId&&(s.country_id=e.countryId),e?.name&&(s.name=e.name),e?.scope&&(s.scope=e.scope),e?.limit!==void 0&&(s.limit=String(e.limit)),e?.page!==void 0&&(s.page=String(e.page)),e?.sortField&&(s.sort_field=e.sortField),e?.sortOrder&&(s.sort_order=e.sortOrder);const n=await D.get({path:"/v1/players",params:s,next:e?.next,config:o});return Xe(n)}function w(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 et(e){return{id:e.id,name:e.name,type:e.type?.toUpperCase()||"LEAGUE",gender:e.gender?.toUpperCase(),country:e.country?w(e.country):void 0,assets:e.assets?.logo?{logo:e.assets.logo}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function tt(e){if(e.status){const i={notstarted:{code:"not_started",type:"NOT_STARTED",name:"Not Started"},live:{code:"live",type:"LIVE",name:"Live"},finished:{code:"finished",type:"FINISHED",name:"Finished"},postponed:{code:"postponed",type:"POSTPONED",name:"Postponed"},cancelled:{code:"cancelled",type:"CANCELLED",name:"Cancelled"},abandoned:{code:"abandoned",type:"ABANDONED",name:"Abandoned"}}[e.status.type];if(i)return i}let t="not_started",o="NOT_STARTED",s="Not Started";return e.finished_at?(t="finished",o="FINISHED",s="Finished"):e.started_at&&(t="live",o="LIVE",s="Live"),{code:t,name:s,type:o}}function ot(e){return{kickoffTime:new Date(e.kickoff_at),currentMinute:e.minute??void 0,currentPeriod:void 0}}function z(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?w(e.country):void 0,assets:e.assets?.logo?{logo:e.assets.logo}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function st(e){if(!e)return;const t=s=>s?{competitorOne:s.home_goals!==null?String(s.home_goals):"0",competitorTwo:s.away_goals!==null?String(s.away_goals):"0"}:void 0,o=t(e.ft_score);if(o)return{competitorOne:o.competitorOne,competitorTwo:o.competitorTwo,breakdown:{total:o,halfTime:t(e.ht_score),regularTime:t(e.ft_score),extraTime:t(e.aet_score),penaltyShootout:t(e.pen_score)}}}function ee(e){return{id:e.id,status:tt(e),timing:ot(e),competitorOne:z(e.home_team),competitorTwo:z(e.away_team),score:st(e.scores),competition:e.context?.competition?et(e.context.competition):void 0,lineupStatus:e.lineups_confirmed?"CONFIRMED":"NOT_AVAILABLE",updatedAt:e.updated_at?new Date(e.updated_at):void 0,isUndecided:e.undecided??void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function nt(e){return ee(e.data)}function it(e){return e.data.map(ee)}async function at(e,t,o){const s=o||m.getConfig(),n={};t?.lang&&(n.lang=t.lang);const i=await D.get({path:`/v1/matches/${e}`,params:n,next:t?.next,config:s});return nt(i)}async function rt(e,t){const o=t||m.getConfig(),s={};e?.lang&&(s.lang=e.lang),e?.competitions&&(s.competitions=e.competitions),e?.countries&&(s.countries=e.countries),e?.fromDate&&(s.from_date=e.fromDate),e?.toDate&&(s.to_date=e.toDate),e?.matches&&(s.matches=e.matches),e?.teams&&(s.teams=e.teams),e?.status&&(s.status=e.status),e?.limit!==void 0&&(s.limit=String(e.limit)),e?.page!==void 0&&(s.page=String(e.page)),e?.sortField&&(s.sort_field=e.sortField),e?.sortOrder&&(s.sort_order=e.sortOrder),e?.showDeleted!==void 0&&(s.show_deleted=e.showDeleted?"true":"false");const n=await D.get({path:"/v1/matches",params:s,next:e?.next,config:o});return it(n)}function K(e){return{id:e.id,name:e.name,code:e.country_code,flag:e.assets?.flag||void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function ct(e){return{id:e.id,name:e.name,shortName:e.short_name||void 0,type:e.type||"LEAGUE",region:e.region,gender:e.gender?.toUpperCase(),country:e.country?K(e.country):void 0,assets:e.assets?.logo?{logo:e.assets.logo}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function lt(e){return{type:"player",id:e.id,name:e.name,position:e.position||void 0,gender:e.gender?.toUpperCase(),birthdate:e.birth_date||void 0,country:e.country?K(e.country):void 0,assets:e.assets?.headshot?{photo:e.assets.headshot}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function dt(e){return{type:e.national?"national":"club",id:e.id,name:e.name,shortName:e.short_name||void 0,threeLetterCode:e.code||void 0,gender:e.gender?.toUpperCase(),country:e.country?K(e.country):void 0,assets:e.assets?.logo?{logo:e.assets.logo}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function V(e){switch(e.entity_type){case"competition":{const t=ct(e);return{source:"FOOTBALL",entityType:"competition",entityId:e.id,entityData:t}}case"player":{const t=lt(e);return{source:"FOOTBALL",entityType:"player",entityId:e.id,entityData:t}}case"team":{const t=dt(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 ut(e,t){if(!e.query||e.query.trim()==="")return[];const o=t||m.getConfig(),s={q:e.query.trim()},i=(e.entityTypes&&e.entityTypes.length>0?e.entityTypes:["competition","team","player"]).map(d=>{switch(d){case"team":return"teams";case"player":return"players";case"competition":return"competitions";default:return d}});s.entities=i.join(","),e.lang&&(s.lang=e.lang),e.limit&&(s.limit=String(e.limit));const a=await D.get({path:"/v1/search",params:s,next:e.next,config:o}),r=[];return a.data&&(a.data.competitions&&a.data.competitions.forEach(d=>{const l=V({...d,entity_type:"competition"});l&&r.push(l)}),a.data.teams&&a.data.teams.forEach(d=>{const l=V({...d,entity_type:"team"});l&&r.push(l)}),a.data.players&&a.data.players.forEach(d=>{const l=V({...d,entity_type:"player"});l&&r.push(l)})),r}function mt(e){return!e.seasons||e.seasons.length===0?void 0:e.seasons.find(o=>o.active)??e.seasons[0]}function ft(e,t){const o=new Date,s=t.filter(n=>{const i=n.competitorOne.id===e||n.competitorTwo.id===e,a=n.status.type==="NOT_STARTED",r=new Date(n.timing.kickoffTime)>=o;return i&&a&&r});return s.sort((n,i)=>new Date(n.timing.kickoffTime).getTime()-new Date(i.timing.kickoffTime).getTime()),s[0]}function gt(e,t){const o=new Date,s=t.filter(n=>{const i=n.competitorOne.id===e||n.competitorTwo.id===e,a=n.status.type==="FINISHED",r=new Date(n.timing.kickoffTime)<=o;return i&&a&&r});return s.sort((n,i)=>new Date(i.timing.kickoffTime).getTime()-new Date(n.timing.kickoffTime).getTime()),s[0]}function pt(e,t){const o=new Date;return t.filter(n=>{const i=n.competitorOne.id===e||n.competitorTwo.id===e,a=n.status.type==="NOT_STARTED"||n.status.type==="LIVE",r=new Date(n.timing.kickoffTime)>=o||n.status.type==="LIVE";return i&&a&&r}).sort((n,i)=>new Date(n.timing.kickoffTime).getTime()-new Date(i.timing.kickoffTime).getTime())}function yt(e,t){const o=new Date;return t.filter(n=>{const i=n.competitorOne.id===e||n.competitorTwo.id===e,a=n.status.type==="FINISHED",r=new Date(n.timing.kickoffTime)<=o;return i&&a&&r}).sort((n,i)=>new Date(i.timing.kickoffTime).getTime()-new Date(n.timing.kickoffTime).getTime())}function ht(e,t,o){const s=o.filter(a=>a.status.type==="FINISHED"),n=o.filter(a=>a.status.type==="NOT_STARTED"||a.status.type==="POSTPONED"),i=t.entries.map(a=>{const r=a.competitor.id,d=s.filter(f=>f.competitorOne.id===e&&f.competitorTwo.id===r||f.competitorOne.id===r&&f.competitorTwo.id===e),l=n.filter(f=>f.competitorOne.id===e&&f.competitorTwo.id===r||f.competitorOne.id===r&&f.competitorTwo.id===e);let u,c;return d.forEach(f=>{const p=f.competitorOne.id===e,y=parseInt(f.score?.competitorOne??"0"),T=parseInt(f.score?.competitorTwo??"0"),R=p?y:T,C=p?T:y;let F;R>C?F="W":R===C?F="D":F="L";const P={result:F,score:`${y} - ${T}`,date:f.timing.kickoffTime,matchId:f.id,isUpcoming:!1};p?u=P:c=P}),l.forEach(f=>{const p=f.competitorOne.id===e;p&&!u?u={date:f.timing.kickoffTime,matchId:f.id,isUpcoming:!0}:!p&&!c&&(c={date:f.timing.kickoffTime,matchId:f.id,isUpcoming:!0})}),{rank:a.rank,teamId:a.competitor.id,teamName:a.competitor.name,teamShortName:a.competitor.shortName,teamLogo:a.competitor.logo,gamesPlayed:a.stats.played??0,points:a.stats.points??0,homeResult:u,awayResult:c}});return{teamId:e,rows:i}}function Tt(e,t=10){return e.players.filter(o=>(o.seasonStatistics?.goals??0)>0).sort((o,s)=>{const n=o.seasonStatistics?.goals??0,i=s.seasonStatistics?.goals??0;if(i!==n)return i-n;const a=o.seasonStatistics?.assists??0;return(s.seasonStatistics?.assists??0)-a}).slice(0,t)}function vt(e,t=10){return e.players.filter(o=>(o.seasonStatistics?.assists??0)>0).sort((o,s)=>{const n=o.seasonStatistics?.assists??0,i=s.seasonStatistics?.assists??0;if(i!==n)return i-n;const a=o.seasonStatistics?.goals??0;return(s.seasonStatistics?.goals??0)-a}).slice(0,t)}function St(e,t=10){return e.players.filter(o=>(o.seasonStatistics?.appearances??0)>0).sort((o,s)=>{const n=o.seasonStatistics?.appearances??0,i=s.seasonStatistics?.appearances??0;if(i!==n)return i-n;const a=o.seasonStatistics?.minutes??0;return(s.seasonStatistics?.minutes??0)-a}).slice(0,t)}function _t(e,t=10){return e.players.filter(o=>(o.seasonStatistics?.minutes??0)>0).sort((o,s)=>{const n=o.seasonStatistics?.minutes??0,i=s.seasonStatistics?.minutes??0;if(i!==n)return i-n;const a=o.seasonStatistics?.appearances??0;return(s.seasonStatistics?.appearances??0)-a}).slice(0,t)}function Ct(e,t=10){return e.players.filter(o=>(o.seasonStatistics?.cleansheets??0)>0).sort((o,s)=>{const n=o.seasonStatistics?.cleansheets??0,i=s.seasonStatistics?.cleansheets??0;if(i!==n)return i-n;const a=o.seasonStatistics?.appearances??0;return(s.seasonStatistics?.appearances??0)-a}).slice(0,t)}function At(e,t=10){return e.players.filter(o=>{const s=o.seasonStatistics?.yellowCards??0,n=o.seasonStatistics?.redCards??0;return s+n>0}).sort((o,s)=>{const n=o.seasonStatistics?.yellowCards??0,i=o.seasonStatistics?.redCards??0,a=s.seasonStatistics?.yellowCards??0,r=s.seasonStatistics?.redCards??0,d=n+i*3,l=a+r*3;return l!==d?l-d:r!==i?r-i:a-n}).slice(0,t)}function b(e){const t=new Map,o=new Map;return e.forEach(s=>{!s.mainEvents||s.mainEvents.length===0||s.mainEvents.forEach(n=>{if(n.primaryPlayer){const i=n.primaryPlayer.id;t.has(i)||t.set(i,{playerId:n.primaryPlayer.id,seasonId:"",teamId:"",goals:0,assists:0,yellowCards:0,redCards:0,appearances:0});const a=t.get(i);o.has(i)||o.set(i,new Set),o.get(i).add(s.id),(n.type==="GOAL"||n.type==="PENALTY_GOAL")&&(a.goals=(a.goals??0)+1),n.type==="YELLOW_CARD"&&(a.yellowCards=(a.yellowCards??0)+1),(n.type==="RED_CARD"||n.type==="YELLOW_RED_CARD")&&(a.redCards=(a.redCards??0)+1)}if(n.secondaryPlayer&&(n.type==="GOAL"||n.type==="PENALTY_GOAL")){const i=n.secondaryPlayer.id;t.has(i)||t.set(i,{playerId:n.secondaryPlayer.id,seasonId:"",teamId:"",goals:0,assists:0,yellowCards:0,redCards:0,appearances:0});const a=t.get(i);a.assists=(a.assists??0)+1,o.has(i)||o.set(i,new Set),o.get(i).add(s.id)}})}),o.forEach((s,n)=>{const i=t.get(n);i&&i.appearances!==void 0&&(i.appearances=s.size)}),t}function U(e){return Array.from(e.values()).map(t=>({...t,totalCards:(t.yellowCards??0)+(t.redCards??0)}))}function te(e,t=10){const o=b(e);return U(o).filter(n=>(n.goals??0)>0).sort((n,i)=>{const a=n.goals??0,r=i.goals??0;if(r!==a)return r-a;const d=n.assists??0;return(i.assists??0)-d}).slice(0,t)}function oe(e,t=10){const o=b(e);return U(o).filter(n=>(n.assists??0)>0).sort((n,i)=>{const a=n.assists??0,r=i.assists??0;if(r!==a)return r-a;const d=n.goals??0;return(i.goals??0)-d}).slice(0,t)}function se(e,t=10){const o=b(e);return U(o).filter(n=>(n.totalCards??0)>0).sort((n,i)=>{const a=(n.yellowCards??0)+(n.redCards??0)*3,r=(i.yellowCards??0)+(i.redCards??0)*3;if(r!==a)return r-a;const d=n.redCards??0,l=i.redCards??0;if(l!==d)return l-d;const u=n.yellowCards??0;return(i.yellowCards??0)-u}).slice(0,t)}function ne(e,t=10){const o=b(e);return U(o).filter(n=>(n.goals??0)+(n.assists??0)>0).sort((n,i)=>{const a=(n.goals??0)+(n.assists??0),r=(i.goals??0)+(i.assists??0);if(r!==a)return r-a;const d=n.goals??0,l=i.goals??0;if(l!==d)return l-d;const u=n.assists??0;return(i.assists??0)-u}).slice(0,t)}function ie(e){const t=b(e);return U(t).sort((s,n)=>{const i=s.appearances??0,a=n.appearances??0;if(a!==i)return a-i;const r=(s.goals??0)+(s.assists??0);return(n.goals??0)+(n.assists??0)-r})}function Ft(e,t=10){return E.useMemo(()=>te(e,t),[e,t])}function Mt(e,t=10){return E.useMemo(()=>oe(e,t),[e,t])}function Ot(e,t=10){return E.useMemo(()=>se(e,t),[e,t])}function Rt(e,t=10){return E.useMemo(()=>ne(e,t),[e,t])}function Pt(e){return E.useMemo(()=>ie(e),[e])}function ae(e){return E.useMemo(()=>b(e),[e])}function Gt(e,t){const o=ae(e);return E.useMemo(()=>o.get(t),[o,t])}const re=["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 Nt(e,t=!1,o=2){return t?`${Math.round(e)}%`:Number.isInteger(e)?e.toString():e.toFixed(o)}function Dt(e,t){const o=typeof e=="string"?parseFloat(e):e;if(isNaN(o)||t===0)return"0";const s=(o/t).toFixed(1);return`${o} (${s} avg)`}function Et(e,t){const o=typeof e=="string"?parseFloat(e):e;return isNaN(o)||t===0?"0.0":(o/t).toFixed(1)}function bt(e){const t=parseFloat(e);return isNaN(t)?"0%":`${Math.round(t)}%`}function ce(e,t,o){if(e.status?.type!=="FINISHED"||!e.score)return null;const s=parseInt(e.score.competitorOne||"0"),n=parseInt(e.score.competitorTwo||"0"),i=o?s:n,a=o?n:s;let r=null,d=null;const l=e.score.breakdown?.halfTime;if(l){const p=parseInt(l.competitorOne||"0"),y=parseInt(l.competitorTwo||"0");r=o?p:y,d=o?y:p}const u=e.statistics;let c=null,f=null;if(u){const p=u.find?.(y=>y.type==="CORNERS");p&&(c=o?p.competitorOne:p.competitorTwo,f=o?p.competitorTwo:p.competitorOne)}return{goalsFor:i,goalsAgainst:a,halfTimeGoalsFor:r,halfTimeGoalsAgainst:d,cornersFor:c,cornersAgainst:f,isWin:i>a,isDraw:i===a,isLoss:i<a}}function q(e,t){return e.competitorOne.id===t}function le(e,t){return e.competitorTwo.id===t}function It(e,t){return q(e,t)||le(e,t)}function Lt(e){return e.status?.type==="FINISHED"}function Ht(e,t){const o=q(e,t);return parseInt(o?e.score?.competitorOne||"0":e.score?.competitorTwo||"0")}function kt(e,t){const o=q(e,t);return parseInt(o?e.score?.competitorTwo||"0":e.score?.competitorOne||"0")}function Ut(e,t,o){const s=e.filter(u=>{if(u.status?.type!=="FINISHED"||!u.score)return!1;const c=u.competitorOne.id===t||u.competitorTwo.id===t,f=u.competitorOne.id===o||u.competitorTwo.id===o;return c&&f});let n=0,i=0,a=0,r=0,d=0;s.forEach(u=>{const c=parseInt(u.score?.competitorOne||"0"),f=parseInt(u.score?.competitorTwo||"0"),p=u.competitorOne.id===t,y=p?c:f,T=p?f:c;r+=y,d+=T,y>T?n++:T>y?i++:a++});const l=s.length;return{totalMatches:l,homeTeamWins:n,awayTeamWins:i,draws:a,homeTeamGoals:r,awayTeamGoals:d,homeTeamWinPercentage:l>0?n/l*100:0,awayTeamWinPercentage:l>0?i/l*100:0,drawPercentage:l>0?a/l*100:0,homeTeamAvgGoals:l>0?r/l:0,awayTeamAvgGoals:l>0?d/l:0}}function Bt(e,t,o,s=5){return e.filter(i=>{if(i.status?.type!=="FINISHED"||!i.score)return!1;const a=i.competitorOne.id===t||i.competitorTwo.id===t,r=i.competitorOne.id===o||i.competitorTwo.id===o;return a&&r}).sort((i,a)=>new Date(a.timing.kickoffTime).getTime()-new Date(i.timing.kickoffTime).getTime()).slice(0,s).map(i=>{const a=parseInt(i.score?.competitorOne||"0"),r=parseInt(i.score?.competitorTwo||"0"),d=i.competitorOne.id===t,l=d?a:r,u=d?r:a;let c;return l>u?c="home":u>l?c="away":c="draw",{id:i.id,date:new Date(i.timing.kickoffTime).toLocaleDateString("en-GB",{day:"numeric",month:"short",year:"numeric"}),homeTeamName:i.competitorOne.name,awayTeamName:i.competitorTwo.name,homeTeamLogo:i.competitorOne.assets?.logo,awayTeamLogo:i.competitorTwo.assets?.logo,homeScore:a,awayScore:r,venue:i.venue?.name,winner:c}})}function $t(e,t,o){return e.filter(s=>{const n=s.competitorOne.id===t,i=s.competitorTwo.id===t;return!n&&!i?!1:o==="home"?n:i}).map(s=>{const n=s.competitorOne.id===t;return ce(s,t,n)}).filter(s=>s!==null)}function J(e,t,o,s){let n=0;for(const i of e){const a=i.competitorOne.id===t,r=i.competitorTwo.id===t;if(!a&&!r||o==="home"&&!a||o==="away"&&!r||i.status?.type!=="FINISHED")continue;const d=i.mainEvents;if(!d||!Array.isArray(d))continue;const l=d.filter(y=>y.type&&re.includes(y.type)).sort((y,T)=>{const R=y.minute??0,C=T.minute??0;return R!==C?R-C:(y.injuryMinute??0)-(T.injuryMinute??0)});if(l.length===0)continue;const u=l[0],c=a?"ONE":"TWO",f=u.type==="OWN_GOAL";let p;f?p=u.competitorPosition!==c:p=u.competitorPosition===c,(s==="scored"&&p||s==="conceded"&&!p)&&n++}return n}function xt(e,t,o){let s=0;for(const n of e){const i=n.competitorOne.id===t,a=n.competitorTwo.id===t;if(!i&&!a||o==="home"&&!i||o==="away"&&!a||n.status?.type!=="FINISHED")continue;const r=n.mainEvents;r&&Array.isArray(r)&&s++}return s}function Wt(e,t,o){const s=$t(e,t,o),n=s.length;if(n===0)return{played:0,goalsForPerMatch:0,cleanSheets:0,wonToNil:0,scoringRate:0,scoredInBothHalves:0,scoredFirst:0,leadingAtHalfTime:0,goalsAgainstPerMatch:0,failedToScore:0,lostToNil:0,concedingRate:0,concededInBothHalves:0,concededFirst:0,losingAtHalfTime:0,avgCornersFor:0,avgCornersAgainst:0};const i=s.reduce((g,S)=>g+S.goalsFor,0),a=s.reduce((g,S)=>g+S.goalsAgainst,0),r=s.filter(g=>g.goalsAgainst===0).length,d=s.filter(g=>g.isWin&&g.goalsAgainst===0).length,l=s.filter(g=>g.goalsFor>0).length,u=s.filter(g=>g.goalsFor===0).length,c=s.filter(g=>g.isLoss&&g.goalsFor===0).length,f=s.filter(g=>g.goalsAgainst>0).length,p=s.filter(g=>g.halfTimeGoalsFor!==null),y=p.length,T=p.filter(g=>{const S=g.halfTimeGoalsFor,L=g.goalsFor-S;return S>0&&L>0}).length,R=J(e,t,o,"scored"),C=xt(e,t,o),F=p.filter(g=>g.halfTimeGoalsFor>g.halfTimeGoalsAgainst).length,P=p.filter(g=>{const S=g.halfTimeGoalsAgainst,L=g.goalsAgainst-S;return S>0&&L>0}).length,B=J(e,t,o,"conceded"),$=p.filter(g=>g.halfTimeGoalsAgainst>g.halfTimeGoalsFor).length,I=s.filter(g=>g.cornersFor!==null),x=I.reduce((g,S)=>g+(S.cornersFor||0),0),W=I.reduce((g,S)=>g+(S.cornersAgainst||0),0);return{played:n,goalsForPerMatch:H(i,n),cleanSheets:A(r,n),wonToNil:A(d,n),scoringRate:A(l,n),scoredInBothHalves:A(T,y),scoredFirst:A(R,C),leadingAtHalfTime:A(F,y),goalsAgainstPerMatch:H(a,n),failedToScore:A(u,n),lostToNil:A(c,n),concedingRate:A(f,n),concededInBothHalves:A(P,y),concededFirst:A(B,C),losingAtHalfTime:A($,y),avgCornersFor:H(x,I.length),avgCornersAgainst:H(W,I.length)}}function qt(e,t){return e.filter(o=>o.status?.type!=="FINISHED"?!1:o.competitorOne.id===t||o.competitorTwo.id===t).map(o=>{const s=o.competitorOne.id===t,n=parseInt(o.score?.competitorOne||"0"),i=parseInt(o.score?.competitorTwo||"0"),a=n+i,r=o.periods;let d=null;if(r&&Array.isArray(r)){const l=r.find(u=>u.type==="FIRST_HALF"||u.type==="1ST_HALF");if(l?.score){const u=parseInt(l.score.competitorOne||"0"),c=parseInt(l.score.competitorTwo||"0");d=u+c}}return{totalGoals:a,halfTimeGoals:d,isHome:s}})}function h(e,t){return e.length===0?0:e.filter(s=>s>t).length/e.length*100}function Vt(e,t){const o=qt(e,t),s=o.filter(c=>c.isHome),n=o.filter(c=>!c.isHome),i=o.map(c=>c.totalGoals),a=s.map(c=>c.totalGoals),r=n.map(c=>c.totalGoals),d=o.filter(c=>c.halfTimeGoals!==null).map(c=>c.halfTimeGoals),l=s.filter(c=>c.halfTimeGoals!==null).map(c=>c.halfTimeGoals),u=n.filter(c=>c.halfTimeGoals!==null).map(c=>c.halfTimeGoals);return{over05:{home:h(a,.5),total:h(i,.5),away:h(r,.5)},over15:{home:h(a,1.5),total:h(i,1.5),away:h(r,1.5)},over25:{home:h(a,2.5),total:h(i,2.5),away:h(r,2.5)},over35:{home:h(a,3.5),total:h(i,3.5),away:h(r,3.5)},over45:{home:h(a,4.5),total:h(i,4.5),away:h(r,4.5)},over55:{home:h(a,5.5),total:h(i,5.5),away:h(r,5.5)},over05HT:{home:h(l,.5),total:h(d,.5),away:h(u,.5)},over15HT:{home:h(l,1.5),total:h(d,1.5),away:h(u,1.5)},over25HT:{home:h(l,2.5),total:h(d,2.5),away:h(u,2.5)}}}function de(e,t){const o=e.competitorOne.id===t,s=e.competitorTwo.id===t;if(!o&&!s||!e.score)return null;const n=parseInt(o?e.score.competitorOne||"0":e.score.competitorTwo||"0"),i=parseInt(o?e.score.competitorTwo||"0":e.score.competitorOne||"0");let a;return n>i?a="W":n<i?a="L":a="D",{result:{score:`${n}:${i}`,result:a,isHome:o},isHome:o}}function jt(e,t,o,s,n,i){const a=t?.entries.find(G=>G.competitor.id===e),r=o?.entries.find(G=>G.competitor.id===e),d=s?.entries.find(G=>G.competitor.id===e),l=n?.entries.find(G=>G.competitor.id===e),u=i?.entries.find(G=>G.competitor.id===e);if(!a)return null;const c=r?.stats?.goalsFor??0,f=d?.stats?.goalsFor??0,p=a?.stats?.goalsFor??0,y=l?.stats?.goalsAgainst??0,T=u?.stats?.goalsAgainst??0,R=a?.stats?.goalsAgainst??0,C=r?.stats?.played??0,F=d?.stats?.played??0,P=a?.stats?.played??0,B=P>0?p/P:0,$=P>0?R/P:0,I=B+$,x=C>0?c/C:0,W=F>0?f/F:0,g=C>0?y/C:0,S=F>0?T/F:0,L=x+g,ue=W+S;return{homeGoals:c,totalGoals:p,awayGoals:f,homeGamesPlayed:C,awayGamesPlayed:F,totalGamesPlayed:P,homeGoalsConceded:y,totalGoalsConceded:R,awayGoalsConceded:T,gfPerMatch:B,gaPerMatch:$,gfGaPerMatch:I,homeGfPerMatch:x,awayGfPerMatch:W,homeGaPerMatch:g,awayGaPerMatch:S,homeGfGaPerMatch:L,awayGfGaPerMatch:ue}}function _(e,t,o,s){const n=e.filter(a=>{const r=a.competitorOne.id===t,d=a.competitorTwo.id===t;return!(!r&&!d||a.status?.type!=="FINISHED"||s==="home"&&!r||s==="away"&&!d)}).sort((a,r)=>new Date(r.timing.kickoffTime).getTime()-new Date(a.timing.kickoffTime).getTime());if(n.length===0)return null;let i=0;for(const a of n){const r=a.competitorOne.id===t;if(o(a,t,r))i++;else break}return i>0?i:null}const v={win:(e,t,o)=>{const s=parseInt(o?e.score?.competitorOne||"0":e.score?.competitorTwo||"0"),n=parseInt(o?e.score?.competitorTwo||"0":e.score?.competitorOne||"0");return s>n},draw:e=>e.score?.competitorOne===e.score?.competitorTwo,loss:(e,t,o)=>{const s=parseInt(o?e.score?.competitorOne||"0":e.score?.competitorTwo||"0"),n=parseInt(o?e.score?.competitorTwo||"0":e.score?.competitorOne||"0");return s<n},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:_(e,t,v.win,o),draw:_(e,t,v.draw,o),loss:_(e,t,v.loss,o),noWin:_(e,t,v.noWin,o),noDraw:_(e,t,v.noDraw,o),noDefeat:_(e,t,v.noDefeat,o),scored:_(e,t,v.scored,o),conceded:_(e,t,v.conceded,o),noGoalScored:_(e,t,v.noGoalScored,o),noGoalConceded:_(e,t,v.noGoalConceded,o),over25:_(e,t,v.over25,o),under25:_(e,t,v.under25,o),scoredTwice:_(e,t,v.scoredTwice,o),concededTwice:_(e,t,v.concededTwice,o)}}function Yt(e,t,o){const s=k(e,t,"home"),n=k(e,t),i=k(e,o,"away"),a=k(e,o);return[{label:"Consecutive wins",homeTeam:{home:s.win,total:n.win},awayTeam:{total:a.win,home:i.win},colorType:"neutral"},{label:"Consecutive draws",homeTeam:{home:s.draw,total:n.draw},awayTeam:{total:a.draw,home:i.draw},colorType:"neutral"},{label:"Consecutive defeats",homeTeam:{home:s.loss,total:n.loss},awayTeam:{total:a.loss,home:i.loss},colorType:"neutral"},{label:"No win",homeTeam:{home:s.noWin,total:n.noWin},awayTeam:{total:a.noWin,home:i.noWin},colorType:"negative"},{label:"No draw",homeTeam:{home:s.noDraw,total:n.noDraw},awayTeam:{total:a.noDraw,home:i.noDraw},colorType:"neutral"},{label:"No defeat",homeTeam:{home:s.noDefeat,total:n.noDefeat},awayTeam:{total:a.noDefeat,home:i.noDefeat},colorType:"positive"},{label:"Scored at least once",homeTeam:{home:s.scored,total:n.scored},awayTeam:{total:a.scored,home:i.scored},colorType:"positive"},{label:"Conceded at least once",homeTeam:{home:s.conceded,total:n.conceded},awayTeam:{total:a.conceded,home:i.conceded},colorType:"negative"},{label:"No goal scored",homeTeam:{home:s.noGoalScored,total:n.noGoalScored},awayTeam:{total:a.noGoalScored,home:i.noGoalScored},colorType:"neutral"},{label:"No goal conceded",homeTeam:{home:s.noGoalConceded,total:n.noGoalConceded},awayTeam:{total:a.noGoalConceded,home:i.noGoalConceded},colorType:"neutral"},{label:"GS + GC over 2.5",homeTeam:{home:s.over25,total:n.over25},awayTeam:{total:a.over25,home:i.over25},colorType:"neutral"},{label:"GS + GC under 2.5",homeTeam:{home:s.under25,total:n.under25},awayTeam:{total:a.under25,home:i.under25},colorType:"neutral"},{label:"Scored at least twice",homeTeam:{home:s.scoredTwice,total:n.scoredTwice},awayTeam:{total:a.scoredTwice,home:i.scoredTwice},colorType:"positive"},{label:"Conceded at least twice",homeTeam:{home:s.concededTwice,total:n.concededTwice},awayTeam:{total:a.concededTwice,home:i.concededTwice},colorType:"negative"}]}function Q(e,t){const o=new Map;return e.forEach(s=>{if(s.status?.type!=="FINISHED")return;const n=de(s,t);if(!n)return;const i=n.isHome?s.competitorTwo.id:s.competitorOne.id,a=n.isHome?s.competitorTwo:s.competitorOne,r=o.get(i)||{opponentId:i,opponentName:a.name,opponentLogo:a.assets?.logo};n.isHome?r.homeResult=n.result:r.awayResult=n.result,o.set(i,r)}),o}function Kt(e,t,o,s,n,i,a){const r=Q(e,t),d=Q(e,o),l=new Set([...r.keys(),...d.keys(),t,o]),u=[];return l.forEach(c=>{const f=r.get(c),p=d.get(c);if(!f&&!p&&c!==t&&c!==o)return;let y,T;c===t?(y=s,T=i):c===o?(y=n,T=a):(y=f?.opponentName||p?.opponentName||"",T=f?.opponentLogo||p?.opponentLogo),u.push({opponentId:c,opponentName:y,opponentLogo:T,homeTeamHome:f?.homeResult,homeTeamAway:f?.awayResult,awayTeamHome:p?.homeResult,awayTeamAway:p?.awayResult,isHomeTeamRow:c===t,isAwayTeamRow:c===o})}),u.sort((c,f)=>c.isHomeTeamRow?-1:f.isHomeTeamRow?1:c.isAwayTeamRow?-1:f.isAwayTeamRow?1:c.opponentName.localeCompare(f.opponentName))}exports.addProviderRef=m.addProviderRef;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.getProviderRefId=m.getProviderRefId;exports.isConfigured=m.isConfigured;exports.setConfig=m.setConfig;exports.toProviderRefArray=m.toProviderRefArray;exports.GOAL_EVENT_TYPES=re;exports.aggregatePlayerStatisticsFromMatches=b;exports.analyzeMatch=ce;exports.calcAverage=H;exports.calcPercentage=A;exports.calculateH2HStats=Ut;exports.calculateStreak=_;exports.formatAsAverage=Et;exports.formatPossessionPercentage=bt;exports.formatStatValue=Nt;exports.formatWithAverage=Dt;exports.getActiveSeason=mt;exports.getAllPlayerStatisticsFromMatches=ie;exports.getFansUnitedFootballCompetition=qe;exports.getFansUnitedFootballCompetitions=Be;exports.getFansUnitedFootballMatch=at;exports.getFansUnitedFootballMatches=rt;exports.getFansUnitedFootballPlayer=Ze;exports.getFansUnitedFootballPlayers=we;exports.getFansUnitedFootballSearch=ut;exports.getFansUnitedFootballTeam=Ke;exports.getMatchResult=de;exports.getMostCardedPlayersFromMatches=se;exports.getOpponentScore=kt;exports.getRecentH2HMeetings=Bt;exports.getTeamFinishedMatches=yt;exports.getTeamGoalStats=jt;exports.getTeamHomeAwayStats=Wt;exports.getTeamMostDecorated=At;exports.getTeamNextMatch=ft;exports.getTeamOverUnderStats=Vt;exports.getTeamPreviousMatch=gt;exports.getTeamResultsTable=ht;exports.getTeamScore=Ht;exports.getTeamSeasonStatistics=be;exports.getTeamStreaks=k;exports.getTeamStreaksComparison=Yt;exports.getTeamTopAppearances=St;exports.getTeamTopAssisters=vt;exports.getTeamTopCleanSheets=Ct;exports.getTeamTopMinutesPlayed=_t;exports.getTeamTopScorers=Tt;exports.getTeamUpcomingMatches=pt;exports.getTeamsCommonOpponents=Kt;exports.getTopAssistersFromMatches=oe;exports.getTopGoalContributorsFromMatches=ne;exports.getTopScorersFromMatches=te;exports.isMatchFinished=Lt;exports.isTeamAway=le;exports.isTeamHome=q;exports.isTeamInMatch=It;exports.search=Ne;exports.searchFootball=ve;exports.streakFilters=v;exports.useAllPlayerStatisticsFromMatches=Pt;exports.useMostCardedPlayersFromMatches=Ot;exports.usePlayerStatistics=Gt;exports.usePlayerStatisticsMap=ae;exports.useTopAssistersFromMatches=Mt;exports.useTopGoalContributorsFromMatches=Rt;exports.useTopScorersFromMatches=Ft;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=require("./index-BWAwKR8L.cjs"),E=require("react");function me(e){return{entityType:"tournament",id:e.id.toString(),name:e.name,slug:e.slug,gender:e.gender,type:e.type,region:e.region,country:{id:e.country.id.toString(),name:e.country.name,code:void 0,flag:e.country.url_flag??void 0,providerRef:m.toProviderRefArray(e.country.uuid)},assets:e.url_logo?{logo:e.url_logo}:void 0,providerRef:m.toProviderRefArray(e.uuid)}}function fe(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 ge(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 pe(e){return{entityType:"president",id:e.id.toString(),name:e.name,slug:e.slug,birthdate:e.birthdate??void 0,country:{id:e.country.id.toString(),name:e.country.name,code:void 0,flag:e.country.url_flag??void 0,providerRef:m.toProviderRefArray(e.country.uuid)},assets:e.url_thumb?{photo:e.url_thumb}:void 0,providerRef:m.toProviderRefArray(e.uuid)}}function ye(e){return{entityType:"venue",id:e.id.toString(),name:e.name,slug:e.slug,city:{id:e.city.id.toString(),name:e.city.name,country:{id:e.city.country.id.toString(),name:e.city.country.name,code:void 0,flag:e.city.country.url_flag??void 0,providerRef: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 he(e){return{entityType:"coach",id:e.id.toString(),name:e.name,slug:e.slug,birthdate:e.birthdate??void 0,country:{id:e.country.id.toString(),name:e.country.name,code:void 0,flag:e.country.url_flag??void 0,providerRef:m.toProviderRefArray(e.country.uuid)},assets:e.url_thumb?{photo:e.url_thumb}:void 0,providerRef:m.toProviderRefArray(e.uuid)}}function Te(e){switch(e.entity_type){case"tournament":return me(e);case"player":return fe(e);case"team":return ge(e);case"president":return pe(e);case"venue":return ye(e);case"coach":return he(e);default:throw new Error(`Unknown entity type: ${e.entity_type}`)}}async function ve(e,t){if(!e.query||e.query.trim()==="")return{results:[],query:e.query||""};const o=t||m.getConfig(),{sportal365Sports:s}=o,n=e.entityTypes&&e.entityTypes.length>0?e.entityTypes:["tournament","player","team","president","venue","coach"],i=await m.footballHttp.get({path:"/search",params:{query:e.query.trim(),entity_type:n.join(","),language_code:e.languageCode??s?.languageCode??"en"},headers:{"Accept-Language":e.languageCode??s?.languageCode??"en"},next:e.next,config:o});return!i||i.length===0?{results:[],query:e.query}:{results:i.map(Te),query:e.query}}const Se=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 N(e){if(e)return{id:e.id,legacyId:e.legacy_id??void 0,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,translations:e.translations.map(M),displayAsset:O(e.display_asset),slug:e.slug,providerRef:e.id}}function j(e){return{entityType:"team",id:e.id,legacyId:e.legacy_id??void 0,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,translations:e.translations.map(M),displayAsset:O(e.display_asset),slug:e.slug,tagScore:e.tag_score??void 0,sport:e.sport,country:N(e.country),gender:e.gender,competitionIds:e.competition_ids,type:e.type,national:e.national,undecided:e.undecided,providerRef:e.id}}function X(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:N(e.country),providerRef:e.id}}function _e(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:N(e.country),gender:e.gender,providerRef:e.id}}function Ce(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:N(e.country),gender:e.gender,birthdate:e.birthdate??void 0,position:e.position??void 0,providerRef:e.id}}function Ae(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:N(e.country),gender:e.gender,birthdate:e.birthdate??void 0,providerRef:e.id}}function Fe(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:N(e.country),gender:e.gender,birthdate:e.birthdate??void 0,providerRef:e.id}}function Me(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:N(e.country),city:e.city?X(e.city):void 0,providerRef:e.id}}function Oe(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:N(e.country),gender:e.gender,type:e.type??void 0,region:e.region??void 0,providerRef:e.id}}function Re(e){return{entityType:"match",id:e.id,legacyId:e.legacy_id??void 0,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,translations:e.translations.map(M),displayAsset:O(e.display_asset),slug:e.slug,tagScore:e.tag_score??void 0,sport:e.sport,competitionId:e.competition_id??void 0,startTime:e.start_time??void 0,homeTeam:e.home_team?j(e.home_team):void 0,awayTeam:e.away_team?j(e.away_team):void 0,providerRef:e.id}}function Pe(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 Ge(e){switch(e.entity_type){case"team":return j(e);case"city":return X(e);case"horse":return _e(e);case"player":return Ce(e);case"coach":return Ae(e);case"referee":return Fe(e);case"venue":return Me(e);case"tournament":case"competition":return Oe(e);case"match":return Re(e);case"country":return Pe(e);default:{const t=e;throw new Error(`Unknown entity type: ${t.entity_type}`)}}}async function Ne(e={},t){const o=t??m.getConfig(),s={};e.name&&(s.name=e.name),e.entityTypes&&e.entityTypes.length>0&&(s.entity_type=e.entityTypes.join(",")),e.sports&&e.sports.length>0&&(s.sport=e.sports.join(",")),e.eventStartTime&&(s.event_start_time=e.eventStartTime),e.ids&&e.ids.length>0&&(s.ids=e.ids.join(",")),e.competitionIds&&e.competitionIds.length>0&&(s.competition_ids=e.competitionIds.join(",")),e.domain&&(s.domain=e.domain),e.inputLanguage&&(s.input_language=e.inputLanguage),e.translationLanguage&&(s.translation_language=e.translationLanguage),e.limit!==void 0&&(s.limit=e.limit.toString()),e.offset!==void 0&&(s.offset=e.offset.toString());const n=await Se.get({path:"/suggest",params:s,next:e.next,config:o});return!n.results||n.results.length===0?{results:[],query:e.name}:{results:n.results.map(Ge),query:e.name}}const De=m.createHttpClient(m.SPORTAL365_STATISTICS_DOMAIN);function Ee(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(),s=e.next??{revalidate:600},n={participant_ids:e.teamId,season_ids:e.seasonId,participant_type:"TEAM"};console.log("[getTeamSeasonStatistics] Fetching team statistics:",{path:"/statistics/aggregate",params:n,teamId:e.teamId,seasonId:e.seasonId});const i=await De.get({path:"/statistics/aggregate",params:n,next:s,config:o});if(console.log("[getTeamSeasonStatistics] API response received:",{hasData:!!i.data,dataLength:i.data?.length??0,rawResponse:i}),!i.data||i.data.length===0)throw console.error("[getTeamSeasonStatistics] No statistics found:",{teamId:e.teamId,seasonId:e.seasonId,rawResponse:i}),new Error(`No statistics found for team ${e.teamId} in season ${e.seasonId}`);console.log("[getTeamSeasonStatistics] Transforming team statistics:",{teamId:i.data[0].id,teamName:i.data[0].name,statisticsCount:i.data[0].statistics?.length??0});const a=Ee(i.data[0],e.seasonId);return console.log("[getTeamSeasonStatistics] Successfully transformed team statistics:",{teamId:a.teamId,teamName:a.teamName,seasonId:a.seasonId,statisticsCount:a.statistics.length}),a}function Ie(e){const t=e.replace(/\/$/,"");function o(s){return`${t}${s}`}return{async get(s){const n=s.config||m.getConfig(),{fansUnited:i}=n;if(!i)throw new Error("Fans United configuration is missing. Add 'fansUnited' with 'apiKey' and 'clientId' to your config.");if(!i.apiKey||!i.clientId)throw new Error("Fans United configuration requires both 'apiKey' and 'clientId'");const a=new URL(o(s.path));if(a.searchParams.set("key",i.apiKey),a.searchParams.set("client_id",i.clientId),s.params)for(const[l,u]of Object.entries(s.params))u!==void 0&&(Array.isArray(u)?u.length>0&&a.searchParams.set(l,u.join(",")):a.searchParams.set(l,u));const d=await fetch(a.toString(),{method:"GET",headers:{Accept:"application/json","Content-Type":"application/json",...s.headers},signal:AbortSignal.timeout(3e4),...s.next&&{next:s.next}});if(!d.ok){let l=`Fans United API error: ${d.status} ${d.statusText}`;try{const u=await d.text();u&&(l+=` - ${u}`)}catch{}throw new Error(l)}return d.json()}}}const Le="https://football.fansunitedapi.com",D=Ie(Le);function He(e){return{id:String(e.id),name:e.name,active:e.active,providerRef:[{provider:"fansunited",id:String(e.id)}]}}function ke(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.flag,providerRef:[{provider:"fansunited",id:String(e.country.id)}]}),e.logo&&(t.assets={logo:e.logo}),e.seasons&&e.seasons.length>0&&(t.seasons=e.seasons.map(He)),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 Ue(e){return e.map(ke)}async function Be(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 s=await D.get({path:"/v1/competitions",params:o,config:t,next:e?.next});return Ue(s.data)}function $e(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 xe(e){return{id:e.id,name:e.name,type:e.type?.toUpperCase()||"LEAGUE",gender:e.gender?.toUpperCase(),country:e.country?$e(e.country):void 0,assets:e.assets?.logo?{logo:e.assets.logo}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function We(e){return xe(e.data)}async function qe(e,t,o){const s=o||m.getConfig(),n={};t?.lang&&(n.lang=t.lang);const i=await D.get({path:`/v1/competitions/${e}`,params:n,next:t?.next,config:s});return We(i)}function Ve(e){return{id:e.id,name:e.name,code:e.country_code,flag:e.assets?.flag,providerRef:[{provider:"fansunited",id:e.id}]}}function je(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?Ve(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 Ye(e){return je(e.data)}async function Ke(e,t,o){const s=o||m.getConfig(),n={};t?.lang&&(n.lang=t.lang);const i=await D.get({path:`/v1/teams/${e}`,params:n,next:t?.next,config:s});return Ye(i)}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 ze(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 Je(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 Z(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(ze),competitions:e.competitions?.map(Je),providerRef:[{provider:"fansunited",id:e.id}]}}function Qe(e){return Z(e.data)}function Xe(e){return e.data.map(Z)}async function Ze(e,t,o){const s=o||m.getConfig(),n={};t?.lang&&(n.lang=t.lang);const i=await D.get({path:`/v1/players/${e}`,params:n,next:t?.next,config:s});return Qe(i)}async function we(e,t){const o=t||m.getConfig(),s={};e?.lang&&(s.lang=e.lang),e?.playerIds&&(s.player_ids=e.playerIds),e?.countryId&&(s.country_id=e.countryId),e?.name&&(s.name=e.name),e?.scope&&(s.scope=e.scope),e?.limit!==void 0&&(s.limit=String(e.limit)),e?.page!==void 0&&(s.page=String(e.page)),e?.sortField&&(s.sort_field=e.sortField),e?.sortOrder&&(s.sort_order=e.sortOrder);const n=await D.get({path:"/v1/players",params:s,next:e?.next,config:o});return Xe(n)}function w(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 et(e){return{id:e.id,name:e.name,type:e.type?.toUpperCase()||"LEAGUE",gender:e.gender?.toUpperCase(),country:e.country?w(e.country):void 0,assets:e.assets?.logo?{logo:e.assets.logo}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function tt(e){if(e.status){const i={notstarted:{code:"not_started",type:"NOT_STARTED",name:"Not Started"},live:{code:"live",type:"LIVE",name:"Live"},finished:{code:"finished",type:"FINISHED",name:"Finished"},postponed:{code:"postponed",type:"POSTPONED",name:"Postponed"},cancelled:{code:"cancelled",type:"CANCELLED",name:"Cancelled"},abandoned:{code:"abandoned",type:"ABANDONED",name:"Abandoned"}}[e.status.type];if(i)return i}let t="not_started",o="NOT_STARTED",s="Not Started";return e.finished_at?(t="finished",o="FINISHED",s="Finished"):e.started_at&&(t="live",o="LIVE",s="Live"),{code:t,name:s,type:o}}function ot(e){return{kickoffTime:new Date(e.kickoff_at),currentMinute:e.minute??void 0,currentPeriod:void 0}}function z(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?w(e.country):void 0,assets:e.assets?.logo?{logo:e.assets.logo}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function st(e){if(!e)return;const t=s=>s?{competitorOne:s.home_goals!==null?String(s.home_goals):"0",competitorTwo:s.away_goals!==null?String(s.away_goals):"0"}:void 0,o=t(e.ft_score);if(o)return{competitorOne:o.competitorOne,competitorTwo:o.competitorTwo,breakdown:{total:o,halfTime:t(e.ht_score),regularTime:t(e.ft_score),extraTime:t(e.aet_score),penaltyShootout:t(e.pen_score)}}}function ee(e){return{id:e.id,status:tt(e),timing:ot(e),competitorOne:z(e.home_team),competitorTwo:z(e.away_team),score:st(e.scores),competition:e.context?.competition?et(e.context.competition):void 0,lineupStatus:e.lineups_confirmed?"CONFIRMED":"NOT_AVAILABLE",updatedAt:e.updated_at?new Date(e.updated_at):void 0,isUndecided:e.undecided??void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function nt(e){return ee(e.data)}function it(e){return e.data.map(ee)}async function at(e,t,o){const s=o||m.getConfig(),n={};t?.lang&&(n.lang=t.lang);const i=await D.get({path:`/v1/matches/${e}`,params:n,next:t?.next,config:s});return nt(i)}async function rt(e,t){const o=t||m.getConfig(),s={};e?.lang&&(s.lang=e.lang),e?.competitions&&(s.competitions=e.competitions),e?.countries&&(s.countries=e.countries),e?.fromDate&&(s.from_date=e.fromDate),e?.toDate&&(s.to_date=e.toDate),e?.matches&&(s.matches=e.matches),e?.teams&&(s.teams=e.teams),e?.status&&(s.status=e.status),e?.limit!==void 0&&(s.limit=String(e.limit)),e?.page!==void 0&&(s.page=String(e.page)),e?.sortField&&(s.sort_field=e.sortField),e?.sortOrder&&(s.sort_order=e.sortOrder),e?.showDeleted!==void 0&&(s.show_deleted=e.showDeleted?"true":"false");const n=await D.get({path:"/v1/matches",params:s,next:e?.next,config:o});return it(n)}function K(e){return{id:e.id,name:e.name,code:e.country_code,flag:e.assets?.flag||void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function ct(e){return{id:e.id,name:e.name,shortName:e.short_name||void 0,type:e.type||"LEAGUE",region:e.region,gender:e.gender?.toUpperCase(),country:e.country?K(e.country):void 0,assets:e.assets?.logo?{logo:e.assets.logo}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function lt(e){return{type:"player",id:e.id,name:e.name,position:e.position||void 0,gender:e.gender?.toUpperCase(),birthdate:e.birth_date||void 0,country:e.country?K(e.country):void 0,assets:e.assets?.headshot?{photo:e.assets.headshot}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function dt(e){return{type:e.national?"national":"club",id:e.id,name:e.name,shortName:e.short_name||void 0,threeLetterCode:e.code||void 0,gender:e.gender?.toUpperCase(),country:e.country?K(e.country):void 0,assets:e.assets?.logo?{logo:e.assets.logo}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function V(e){switch(e.entity_type){case"competition":{const t=ct(e);return{source:"FOOTBALL",entityType:"competition",entityId:e.id,entityData:t}}case"player":{const t=lt(e);return{source:"FOOTBALL",entityType:"player",entityId:e.id,entityData:t}}case"team":{const t=dt(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 ut(e,t){if(!e.query||e.query.trim()==="")return[];const o=t||m.getConfig(),s={q:e.query.trim()},i=(e.entityTypes&&e.entityTypes.length>0?e.entityTypes:["competition","team","player"]).map(d=>{switch(d){case"team":return"teams";case"player":return"players";case"competition":return"competitions";default:return d}});s.entities=i.join(","),e.lang&&(s.lang=e.lang),e.limit&&(s.limit=String(e.limit));const a=await D.get({path:"/v1/search",params:s,next:e.next,config:o}),r=[];return a.data&&(a.data.competitions&&a.data.competitions.forEach(d=>{const l=V({...d,entity_type:"competition"});l&&r.push(l)}),a.data.teams&&a.data.teams.forEach(d=>{const l=V({...d,entity_type:"team"});l&&r.push(l)}),a.data.players&&a.data.players.forEach(d=>{const l=V({...d,entity_type:"player"});l&&r.push(l)})),r}function mt(e){return!e.seasons||e.seasons.length===0?void 0:e.seasons.find(o=>o.active)??e.seasons[0]}function ft(e,t){const o=new Date,s=t.filter(n=>{const i=n.competitorOne.id===e||n.competitorTwo.id===e,a=n.status.type==="NOT_STARTED",r=new Date(n.timing.kickoffTime)>=o;return i&&a&&r});return s.sort((n,i)=>new Date(n.timing.kickoffTime).getTime()-new Date(i.timing.kickoffTime).getTime()),s[0]}function gt(e,t){const o=new Date,s=t.filter(n=>{const i=n.competitorOne.id===e||n.competitorTwo.id===e,a=n.status.type==="FINISHED",r=new Date(n.timing.kickoffTime)<=o;return i&&a&&r});return s.sort((n,i)=>new Date(i.timing.kickoffTime).getTime()-new Date(n.timing.kickoffTime).getTime()),s[0]}function pt(e,t){const o=new Date;return t.filter(n=>{const i=n.competitorOne.id===e||n.competitorTwo.id===e,a=n.status.type==="NOT_STARTED"||n.status.type==="LIVE",r=new Date(n.timing.kickoffTime)>=o||n.status.type==="LIVE";return i&&a&&r}).sort((n,i)=>new Date(n.timing.kickoffTime).getTime()-new Date(i.timing.kickoffTime).getTime())}function yt(e,t){const o=new Date;return t.filter(n=>{const i=n.competitorOne.id===e||n.competitorTwo.id===e,a=n.status.type==="FINISHED",r=new Date(n.timing.kickoffTime)<=o;return i&&a&&r}).sort((n,i)=>new Date(i.timing.kickoffTime).getTime()-new Date(n.timing.kickoffTime).getTime())}function ht(e,t,o){const s=o.filter(a=>a.status.type==="FINISHED"),n=o.filter(a=>a.status.type==="NOT_STARTED"||a.status.type==="POSTPONED"),i=t.entries.map(a=>{const r=a.competitor.id,d=s.filter(f=>f.competitorOne.id===e&&f.competitorTwo.id===r||f.competitorOne.id===r&&f.competitorTwo.id===e),l=n.filter(f=>f.competitorOne.id===e&&f.competitorTwo.id===r||f.competitorOne.id===r&&f.competitorTwo.id===e);let u,c;return d.forEach(f=>{const p=f.competitorOne.id===e,y=parseInt(f.score?.competitorOne??"0"),T=parseInt(f.score?.competitorTwo??"0"),R=p?y:T,C=p?T:y;let F;R>C?F="W":R===C?F="D":F="L";const P={result:F,score:`${y} - ${T}`,date:f.timing.kickoffTime,matchId:f.id,isUpcoming:!1};p?u=P:c=P}),l.forEach(f=>{const p=f.competitorOne.id===e;p&&!u?u={date:f.timing.kickoffTime,matchId:f.id,isUpcoming:!0}:!p&&!c&&(c={date:f.timing.kickoffTime,matchId:f.id,isUpcoming:!0})}),{rank:a.rank,teamId:a.competitor.id,teamName:a.competitor.name,teamShortName:a.competitor.shortName,teamLogo:a.competitor.logo,gamesPlayed:a.stats.played??0,points:a.stats.points??0,homeResult:u,awayResult:c}});return{teamId:e,rows:i}}function Tt(e,t=10){return e.players.filter(o=>(o.seasonStatistics?.goals??0)>0).sort((o,s)=>{const n=o.seasonStatistics?.goals??0,i=s.seasonStatistics?.goals??0;if(i!==n)return i-n;const a=o.seasonStatistics?.assists??0;return(s.seasonStatistics?.assists??0)-a}).slice(0,t)}function vt(e,t=10){return e.players.filter(o=>(o.seasonStatistics?.assists??0)>0).sort((o,s)=>{const n=o.seasonStatistics?.assists??0,i=s.seasonStatistics?.assists??0;if(i!==n)return i-n;const a=o.seasonStatistics?.goals??0;return(s.seasonStatistics?.goals??0)-a}).slice(0,t)}function St(e,t=10){return e.players.filter(o=>(o.seasonStatistics?.appearances??0)>0).sort((o,s)=>{const n=o.seasonStatistics?.appearances??0,i=s.seasonStatistics?.appearances??0;if(i!==n)return i-n;const a=o.seasonStatistics?.minutes??0;return(s.seasonStatistics?.minutes??0)-a}).slice(0,t)}function _t(e,t=10){return e.players.filter(o=>(o.seasonStatistics?.minutes??0)>0).sort((o,s)=>{const n=o.seasonStatistics?.minutes??0,i=s.seasonStatistics?.minutes??0;if(i!==n)return i-n;const a=o.seasonStatistics?.appearances??0;return(s.seasonStatistics?.appearances??0)-a}).slice(0,t)}function Ct(e,t=10){return e.players.filter(o=>(o.seasonStatistics?.cleansheets??0)>0).sort((o,s)=>{const n=o.seasonStatistics?.cleansheets??0,i=s.seasonStatistics?.cleansheets??0;if(i!==n)return i-n;const a=o.seasonStatistics?.appearances??0;return(s.seasonStatistics?.appearances??0)-a}).slice(0,t)}function At(e,t=10){return e.players.filter(o=>{const s=o.seasonStatistics?.yellowCards??0,n=o.seasonStatistics?.redCards??0;return s+n>0}).sort((o,s)=>{const n=o.seasonStatistics?.yellowCards??0,i=o.seasonStatistics?.redCards??0,a=s.seasonStatistics?.yellowCards??0,r=s.seasonStatistics?.redCards??0,d=n+i*3,l=a+r*3;return l!==d?l-d:r!==i?r-i:a-n}).slice(0,t)}function b(e){const t=new Map,o=new Map;return e.forEach(s=>{!s.mainEvents||s.mainEvents.length===0||s.mainEvents.forEach(n=>{if(n.primaryPlayer){const i=n.primaryPlayer.id;t.has(i)||t.set(i,{playerId:n.primaryPlayer.id,seasonId:"",teamId:"",goals:0,assists:0,yellowCards:0,redCards:0,appearances:0});const a=t.get(i);o.has(i)||o.set(i,new Set),o.get(i).add(s.id),(n.type==="GOAL"||n.type==="PENALTY_GOAL")&&(a.goals=(a.goals??0)+1),n.type==="YELLOW_CARD"&&(a.yellowCards=(a.yellowCards??0)+1),(n.type==="RED_CARD"||n.type==="YELLOW_RED_CARD")&&(a.redCards=(a.redCards??0)+1)}if(n.secondaryPlayer&&(n.type==="GOAL"||n.type==="PENALTY_GOAL")){const i=n.secondaryPlayer.id;t.has(i)||t.set(i,{playerId:n.secondaryPlayer.id,seasonId:"",teamId:"",goals:0,assists:0,yellowCards:0,redCards:0,appearances:0});const a=t.get(i);a.assists=(a.assists??0)+1,o.has(i)||o.set(i,new Set),o.get(i).add(s.id)}})}),o.forEach((s,n)=>{const i=t.get(n);i&&i.appearances!==void 0&&(i.appearances=s.size)}),t}function U(e){return Array.from(e.values()).map(t=>({...t,totalCards:(t.yellowCards??0)+(t.redCards??0)}))}function te(e,t=10){const o=b(e);return U(o).filter(n=>(n.goals??0)>0).sort((n,i)=>{const a=n.goals??0,r=i.goals??0;if(r!==a)return r-a;const d=n.assists??0;return(i.assists??0)-d}).slice(0,t)}function oe(e,t=10){const o=b(e);return U(o).filter(n=>(n.assists??0)>0).sort((n,i)=>{const a=n.assists??0,r=i.assists??0;if(r!==a)return r-a;const d=n.goals??0;return(i.goals??0)-d}).slice(0,t)}function se(e,t=10){const o=b(e);return U(o).filter(n=>(n.totalCards??0)>0).sort((n,i)=>{const a=(n.yellowCards??0)+(n.redCards??0)*3,r=(i.yellowCards??0)+(i.redCards??0)*3;if(r!==a)return r-a;const d=n.redCards??0,l=i.redCards??0;if(l!==d)return l-d;const u=n.yellowCards??0;return(i.yellowCards??0)-u}).slice(0,t)}function ne(e,t=10){const o=b(e);return U(o).filter(n=>(n.goals??0)+(n.assists??0)>0).sort((n,i)=>{const a=(n.goals??0)+(n.assists??0),r=(i.goals??0)+(i.assists??0);if(r!==a)return r-a;const d=n.goals??0,l=i.goals??0;if(l!==d)return l-d;const u=n.assists??0;return(i.assists??0)-u}).slice(0,t)}function ie(e){const t=b(e);return U(t).sort((s,n)=>{const i=s.appearances??0,a=n.appearances??0;if(a!==i)return a-i;const r=(s.goals??0)+(s.assists??0);return(n.goals??0)+(n.assists??0)-r})}function Ft(e,t=10){return E.useMemo(()=>te(e,t),[e,t])}function Mt(e,t=10){return E.useMemo(()=>oe(e,t),[e,t])}function Ot(e,t=10){return E.useMemo(()=>se(e,t),[e,t])}function Rt(e,t=10){return E.useMemo(()=>ne(e,t),[e,t])}function Pt(e){return E.useMemo(()=>ie(e),[e])}function ae(e){return E.useMemo(()=>b(e),[e])}function Gt(e,t){const o=ae(e);return E.useMemo(()=>o.get(t),[o,t])}const re=["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 Nt(e,t=!1,o=2){return t?`${Math.round(e)}%`:Number.isInteger(e)?e.toString():e.toFixed(o)}function Dt(e,t){const o=typeof e=="string"?parseFloat(e):e;if(isNaN(o)||t===0)return"0";const s=(o/t).toFixed(1);return`${o} (${s} avg)`}function Et(e,t){const o=typeof e=="string"?parseFloat(e):e;return isNaN(o)||t===0?"0.0":(o/t).toFixed(1)}function bt(e){const t=parseFloat(e);return isNaN(t)?"0%":`${Math.round(t)}%`}function ce(e,t,o){if(e.status?.type!=="FINISHED"||!e.score)return null;const s=parseInt(e.score.competitorOne||"0"),n=parseInt(e.score.competitorTwo||"0"),i=o?s:n,a=o?n:s;let r=null,d=null;const l=e.score.breakdown?.halfTime;if(l){const p=parseInt(l.competitorOne||"0"),y=parseInt(l.competitorTwo||"0");r=o?p:y,d=o?y:p}const u=e.statistics;let c=null,f=null;if(u){const p=u.find?.(y=>y.type==="CORNERS");p&&(c=o?p.competitorOne:p.competitorTwo,f=o?p.competitorTwo:p.competitorOne)}return{goalsFor:i,goalsAgainst:a,halfTimeGoalsFor:r,halfTimeGoalsAgainst:d,cornersFor:c,cornersAgainst:f,isWin:i>a,isDraw:i===a,isLoss:i<a}}function q(e,t){return e.competitorOne.id===t}function le(e,t){return e.competitorTwo.id===t}function It(e,t){return q(e,t)||le(e,t)}function Lt(e){return e.status?.type==="FINISHED"}function Ht(e,t){const o=q(e,t);return parseInt(o?e.score?.competitorOne||"0":e.score?.competitorTwo||"0")}function kt(e,t){const o=q(e,t);return parseInt(o?e.score?.competitorTwo||"0":e.score?.competitorOne||"0")}function Ut(e,t,o){const s=e.filter(u=>{if(u.status?.type!=="FINISHED"||!u.score)return!1;const c=u.competitorOne.id===t||u.competitorTwo.id===t,f=u.competitorOne.id===o||u.competitorTwo.id===o;return c&&f});let n=0,i=0,a=0,r=0,d=0;s.forEach(u=>{const c=parseInt(u.score?.competitorOne||"0"),f=parseInt(u.score?.competitorTwo||"0"),p=u.competitorOne.id===t,y=p?c:f,T=p?f:c;r+=y,d+=T,y>T?n++:T>y?i++:a++});const l=s.length;return{totalMatches:l,homeTeamWins:n,awayTeamWins:i,draws:a,homeTeamGoals:r,awayTeamGoals:d,homeTeamWinPercentage:l>0?n/l*100:0,awayTeamWinPercentage:l>0?i/l*100:0,drawPercentage:l>0?a/l*100:0,homeTeamAvgGoals:l>0?r/l:0,awayTeamAvgGoals:l>0?d/l:0}}function Bt(e,t,o,s=5){return e.filter(i=>{if(i.status?.type!=="FINISHED"||!i.score)return!1;const a=i.competitorOne.id===t||i.competitorTwo.id===t,r=i.competitorOne.id===o||i.competitorTwo.id===o;return a&&r}).sort((i,a)=>new Date(a.timing.kickoffTime).getTime()-new Date(i.timing.kickoffTime).getTime()).slice(0,s).map(i=>{const a=parseInt(i.score?.competitorOne||"0"),r=parseInt(i.score?.competitorTwo||"0"),d=i.competitorOne.id===t,l=d?a:r,u=d?r:a;let c;return l>u?c="home":u>l?c="away":c="draw",{id:i.id,date:new Date(i.timing.kickoffTime).toLocaleDateString("en-GB",{day:"numeric",month:"short",year:"numeric"}),homeTeamName:i.competitorOne.name,awayTeamName:i.competitorTwo.name,homeTeamLogo:i.competitorOne.assets?.logo,awayTeamLogo:i.competitorTwo.assets?.logo,homeScore:a,awayScore:r,venue:i.venue?.name,winner:c}})}function $t(e,t,o){return e.filter(s=>{const n=s.competitorOne.id===t,i=s.competitorTwo.id===t;return!n&&!i?!1:o==="home"?n:i}).map(s=>{const n=s.competitorOne.id===t;return ce(s,t,n)}).filter(s=>s!==null)}function J(e,t,o,s){let n=0;for(const i of e){const a=i.competitorOne.id===t,r=i.competitorTwo.id===t;if(!a&&!r||o==="home"&&!a||o==="away"&&!r||i.status?.type!=="FINISHED")continue;const d=i.mainEvents;if(!d||!Array.isArray(d))continue;const l=d.filter(y=>y.type&&re.includes(y.type)).sort((y,T)=>{const R=y.minute??0,C=T.minute??0;return R!==C?R-C:(y.injuryMinute??0)-(T.injuryMinute??0)});if(l.length===0)continue;const u=l[0],c=a?"ONE":"TWO",f=u.type==="OWN_GOAL";let p;f?p=u.competitorPosition!==c:p=u.competitorPosition===c,(s==="scored"&&p||s==="conceded"&&!p)&&n++}return n}function xt(e,t,o){let s=0;for(const n of e){const i=n.competitorOne.id===t,a=n.competitorTwo.id===t;if(!i&&!a||o==="home"&&!i||o==="away"&&!a||n.status?.type!=="FINISHED")continue;const r=n.mainEvents;r&&Array.isArray(r)&&s++}return s}function Wt(e,t,o){const s=$t(e,t,o),n=s.length;if(n===0)return{played:0,goalsForPerMatch:0,cleanSheets:0,wonToNil:0,scoringRate:0,scoredInBothHalves:0,scoredFirst:0,leadingAtHalfTime:0,goalsAgainstPerMatch:0,failedToScore:0,lostToNil:0,concedingRate:0,concededInBothHalves:0,concededFirst:0,losingAtHalfTime:0,avgCornersFor:0,avgCornersAgainst:0};const i=s.reduce((g,S)=>g+S.goalsFor,0),a=s.reduce((g,S)=>g+S.goalsAgainst,0),r=s.filter(g=>g.goalsAgainst===0).length,d=s.filter(g=>g.isWin&&g.goalsAgainst===0).length,l=s.filter(g=>g.goalsFor>0).length,u=s.filter(g=>g.goalsFor===0).length,c=s.filter(g=>g.isLoss&&g.goalsFor===0).length,f=s.filter(g=>g.goalsAgainst>0).length,p=s.filter(g=>g.halfTimeGoalsFor!==null),y=p.length,T=p.filter(g=>{const S=g.halfTimeGoalsFor,L=g.goalsFor-S;return S>0&&L>0}).length,R=J(e,t,o,"scored"),C=xt(e,t,o),F=p.filter(g=>g.halfTimeGoalsFor>g.halfTimeGoalsAgainst).length,P=p.filter(g=>{const S=g.halfTimeGoalsAgainst,L=g.goalsAgainst-S;return S>0&&L>0}).length,B=J(e,t,o,"conceded"),$=p.filter(g=>g.halfTimeGoalsAgainst>g.halfTimeGoalsFor).length,I=s.filter(g=>g.cornersFor!==null),x=I.reduce((g,S)=>g+(S.cornersFor||0),0),W=I.reduce((g,S)=>g+(S.cornersAgainst||0),0);return{played:n,goalsForPerMatch:H(i,n),cleanSheets:A(r,n),wonToNil:A(d,n),scoringRate:A(l,n),scoredInBothHalves:A(T,y),scoredFirst:A(R,C),leadingAtHalfTime:A(F,y),goalsAgainstPerMatch:H(a,n),failedToScore:A(u,n),lostToNil:A(c,n),concedingRate:A(f,n),concededInBothHalves:A(P,y),concededFirst:A(B,C),losingAtHalfTime:A($,y),avgCornersFor:H(x,I.length),avgCornersAgainst:H(W,I.length)}}function qt(e,t){return e.filter(o=>o.status?.type!=="FINISHED"?!1:o.competitorOne.id===t||o.competitorTwo.id===t).map(o=>{const s=o.competitorOne.id===t,n=parseInt(o.score?.competitorOne||"0"),i=parseInt(o.score?.competitorTwo||"0"),a=n+i,r=o.periods;let d=null;if(r&&Array.isArray(r)){const l=r.find(u=>u.type==="FIRST_HALF"||u.type==="1ST_HALF");if(l?.score){const u=parseInt(l.score.competitorOne||"0"),c=parseInt(l.score.competitorTwo||"0");d=u+c}}return{totalGoals:a,halfTimeGoals:d,isHome:s}})}function h(e,t){return e.length===0?0:e.filter(s=>s>t).length/e.length*100}function Vt(e,t){const o=qt(e,t),s=o.filter(c=>c.isHome),n=o.filter(c=>!c.isHome),i=o.map(c=>c.totalGoals),a=s.map(c=>c.totalGoals),r=n.map(c=>c.totalGoals),d=o.filter(c=>c.halfTimeGoals!==null).map(c=>c.halfTimeGoals),l=s.filter(c=>c.halfTimeGoals!==null).map(c=>c.halfTimeGoals),u=n.filter(c=>c.halfTimeGoals!==null).map(c=>c.halfTimeGoals);return{over05:{home:h(a,.5),total:h(i,.5),away:h(r,.5)},over15:{home:h(a,1.5),total:h(i,1.5),away:h(r,1.5)},over25:{home:h(a,2.5),total:h(i,2.5),away:h(r,2.5)},over35:{home:h(a,3.5),total:h(i,3.5),away:h(r,3.5)},over45:{home:h(a,4.5),total:h(i,4.5),away:h(r,4.5)},over55:{home:h(a,5.5),total:h(i,5.5),away:h(r,5.5)},over05HT:{home:h(l,.5),total:h(d,.5),away:h(u,.5)},over15HT:{home:h(l,1.5),total:h(d,1.5),away:h(u,1.5)},over25HT:{home:h(l,2.5),total:h(d,2.5),away:h(u,2.5)}}}function de(e,t){const o=e.competitorOne.id===t,s=e.competitorTwo.id===t;if(!o&&!s||!e.score)return null;const n=parseInt(o?e.score.competitorOne||"0":e.score.competitorTwo||"0"),i=parseInt(o?e.score.competitorTwo||"0":e.score.competitorOne||"0");let a;return n>i?a="W":n<i?a="L":a="D",{result:{score:`${n}:${i}`,result:a,isHome:o},isHome:o}}function jt(e,t,o,s,n,i){const a=t?.entries.find(G=>G.competitor.id===e),r=o?.entries.find(G=>G.competitor.id===e),d=s?.entries.find(G=>G.competitor.id===e),l=n?.entries.find(G=>G.competitor.id===e),u=i?.entries.find(G=>G.competitor.id===e);if(!a)return null;const c=r?.stats?.goalsFor??0,f=d?.stats?.goalsFor??0,p=a?.stats?.goalsFor??0,y=l?.stats?.goalsAgainst??0,T=u?.stats?.goalsAgainst??0,R=a?.stats?.goalsAgainst??0,C=r?.stats?.played??0,F=d?.stats?.played??0,P=a?.stats?.played??0,B=P>0?p/P:0,$=P>0?R/P:0,I=B+$,x=C>0?c/C:0,W=F>0?f/F:0,g=C>0?y/C:0,S=F>0?T/F:0,L=x+g,ue=W+S;return{homeGoals:c,totalGoals:p,awayGoals:f,homeGamesPlayed:C,awayGamesPlayed:F,totalGamesPlayed:P,homeGoalsConceded:y,totalGoalsConceded:R,awayGoalsConceded:T,gfPerMatch:B,gaPerMatch:$,gfGaPerMatch:I,homeGfPerMatch:x,awayGfPerMatch:W,homeGaPerMatch:g,awayGaPerMatch:S,homeGfGaPerMatch:L,awayGfGaPerMatch:ue}}function _(e,t,o,s){const n=e.filter(a=>{const r=a.competitorOne.id===t,d=a.competitorTwo.id===t;return!(!r&&!d||a.status?.type!=="FINISHED"||s==="home"&&!r||s==="away"&&!d)}).sort((a,r)=>new Date(r.timing.kickoffTime).getTime()-new Date(a.timing.kickoffTime).getTime());if(n.length===0)return null;let i=0;for(const a of n){const r=a.competitorOne.id===t;if(o(a,t,r))i++;else break}return i>0?i:null}const v={win:(e,t,o)=>{const s=parseInt(o?e.score?.competitorOne||"0":e.score?.competitorTwo||"0"),n=parseInt(o?e.score?.competitorTwo||"0":e.score?.competitorOne||"0");return s>n},draw:e=>e.score?.competitorOne===e.score?.competitorTwo,loss:(e,t,o)=>{const s=parseInt(o?e.score?.competitorOne||"0":e.score?.competitorTwo||"0"),n=parseInt(o?e.score?.competitorTwo||"0":e.score?.competitorOne||"0");return s<n},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:_(e,t,v.win,o),draw:_(e,t,v.draw,o),loss:_(e,t,v.loss,o),noWin:_(e,t,v.noWin,o),noDraw:_(e,t,v.noDraw,o),noDefeat:_(e,t,v.noDefeat,o),scored:_(e,t,v.scored,o),conceded:_(e,t,v.conceded,o),noGoalScored:_(e,t,v.noGoalScored,o),noGoalConceded:_(e,t,v.noGoalConceded,o),over25:_(e,t,v.over25,o),under25:_(e,t,v.under25,o),scoredTwice:_(e,t,v.scoredTwice,o),concededTwice:_(e,t,v.concededTwice,o)}}function Yt(e,t,o){const s=k(e,t,"home"),n=k(e,t),i=k(e,o,"away"),a=k(e,o);return[{label:"Consecutive wins",homeTeam:{home:s.win,total:n.win},awayTeam:{total:a.win,home:i.win},colorType:"neutral"},{label:"Consecutive draws",homeTeam:{home:s.draw,total:n.draw},awayTeam:{total:a.draw,home:i.draw},colorType:"neutral"},{label:"Consecutive defeats",homeTeam:{home:s.loss,total:n.loss},awayTeam:{total:a.loss,home:i.loss},colorType:"neutral"},{label:"No win",homeTeam:{home:s.noWin,total:n.noWin},awayTeam:{total:a.noWin,home:i.noWin},colorType:"negative"},{label:"No draw",homeTeam:{home:s.noDraw,total:n.noDraw},awayTeam:{total:a.noDraw,home:i.noDraw},colorType:"neutral"},{label:"No defeat",homeTeam:{home:s.noDefeat,total:n.noDefeat},awayTeam:{total:a.noDefeat,home:i.noDefeat},colorType:"positive"},{label:"Scored at least once",homeTeam:{home:s.scored,total:n.scored},awayTeam:{total:a.scored,home:i.scored},colorType:"positive"},{label:"Conceded at least once",homeTeam:{home:s.conceded,total:n.conceded},awayTeam:{total:a.conceded,home:i.conceded},colorType:"negative"},{label:"No goal scored",homeTeam:{home:s.noGoalScored,total:n.noGoalScored},awayTeam:{total:a.noGoalScored,home:i.noGoalScored},colorType:"neutral"},{label:"No goal conceded",homeTeam:{home:s.noGoalConceded,total:n.noGoalConceded},awayTeam:{total:a.noGoalConceded,home:i.noGoalConceded},colorType:"neutral"},{label:"GS + GC over 2.5",homeTeam:{home:s.over25,total:n.over25},awayTeam:{total:a.over25,home:i.over25},colorType:"neutral"},{label:"GS + GC under 2.5",homeTeam:{home:s.under25,total:n.under25},awayTeam:{total:a.under25,home:i.under25},colorType:"neutral"},{label:"Scored at least twice",homeTeam:{home:s.scoredTwice,total:n.scoredTwice},awayTeam:{total:a.scoredTwice,home:i.scoredTwice},colorType:"positive"},{label:"Conceded at least twice",homeTeam:{home:s.concededTwice,total:n.concededTwice},awayTeam:{total:a.concededTwice,home:i.concededTwice},colorType:"negative"}]}function Q(e,t){const o=new Map;return e.forEach(s=>{if(s.status?.type!=="FINISHED")return;const n=de(s,t);if(!n)return;const i=n.isHome?s.competitorTwo.id:s.competitorOne.id,a=n.isHome?s.competitorTwo:s.competitorOne,r=o.get(i)||{opponentId:i,opponentName:a.name,opponentLogo:a.assets?.logo};n.isHome?r.homeResult=n.result:r.awayResult=n.result,o.set(i,r)}),o}function Kt(e,t,o,s,n,i,a){const r=Q(e,t),d=Q(e,o),l=new Set([...r.keys(),...d.keys(),t,o]),u=[];return l.forEach(c=>{const f=r.get(c),p=d.get(c);if(!f&&!p&&c!==t&&c!==o)return;let y,T;c===t?(y=s,T=i):c===o?(y=n,T=a):(y=f?.opponentName||p?.opponentName||"",T=f?.opponentLogo||p?.opponentLogo),u.push({opponentId:c,opponentName:y,opponentLogo:T,homeTeamHome:f?.homeResult,homeTeamAway:f?.awayResult,awayTeamHome:p?.homeResult,awayTeamAway:p?.awayResult,isHomeTeamRow:c===t,isAwayTeamRow:c===o})}),u.sort((c,f)=>c.isHomeTeamRow?-1:f.isHomeTeamRow?1:c.isAwayTeamRow?-1:f.isAwayTeamRow?1:c.opponentName.localeCompare(f.opponentName))}exports.addProviderRef=m.addProviderRef;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.getProviderRefId=m.getProviderRefId;exports.isConfigured=m.isConfigured;exports.setConfig=m.setConfig;exports.toProviderRefArray=m.toProviderRefArray;exports.GOAL_EVENT_TYPES=re;exports.aggregatePlayerStatisticsFromMatches=b;exports.analyzeMatch=ce;exports.calcAverage=H;exports.calcPercentage=A;exports.calculateH2HStats=Ut;exports.calculateStreak=_;exports.formatAsAverage=Et;exports.formatPossessionPercentage=bt;exports.formatStatValue=Nt;exports.formatWithAverage=Dt;exports.getActiveSeason=mt;exports.getAllPlayerStatisticsFromMatches=ie;exports.getFansUnitedFootballCompetition=qe;exports.getFansUnitedFootballCompetitions=Be;exports.getFansUnitedFootballMatch=at;exports.getFansUnitedFootballMatches=rt;exports.getFansUnitedFootballPlayer=Ze;exports.getFansUnitedFootballPlayers=we;exports.getFansUnitedFootballSearch=ut;exports.getFansUnitedFootballTeam=Ke;exports.getMatchResult=de;exports.getMostCardedPlayersFromMatches=se;exports.getOpponentScore=kt;exports.getRecentH2HMeetings=Bt;exports.getTeamFinishedMatches=yt;exports.getTeamGoalStats=jt;exports.getTeamHomeAwayStats=Wt;exports.getTeamMostDecorated=At;exports.getTeamNextMatch=ft;exports.getTeamOverUnderStats=Vt;exports.getTeamPreviousMatch=gt;exports.getTeamResultsTable=ht;exports.getTeamScore=Ht;exports.getTeamSeasonStatistics=be;exports.getTeamStreaks=k;exports.getTeamStreaksComparison=Yt;exports.getTeamTopAppearances=St;exports.getTeamTopAssisters=vt;exports.getTeamTopCleanSheets=Ct;exports.getTeamTopMinutesPlayed=_t;exports.getTeamTopScorers=Tt;exports.getTeamUpcomingMatches=pt;exports.getTeamsCommonOpponents=Kt;exports.getTopAssistersFromMatches=oe;exports.getTopGoalContributorsFromMatches=ne;exports.getTopScorersFromMatches=te;exports.isMatchFinished=Lt;exports.isTeamAway=le;exports.isTeamHome=q;exports.isTeamInMatch=It;exports.search=Ne;exports.searchFootball=ve;exports.streakFilters=v;exports.useAllPlayerStatisticsFromMatches=Pt;exports.useMostCardedPlayersFromMatches=Ot;exports.usePlayerStatistics=Gt;exports.usePlayerStatisticsMap=ae;exports.useTopAssistersFromMatches=Mt;exports.useTopGoalContributorsFromMatches=Rt;exports.useTopScorersFromMatches=Ft;
|
package/fansunited-data-layer.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { t as C, g as F, f as se, c as Z, S as ie, a as ae } from "./index-
|
|
2
|
-
import { b as no, d as so, e as io, h as ao, i as ro, j as co, k as lo, l as uo, m as mo, n as fo, o as po, p as go, q as yo, r as ho, s as To, u as vo, v as So } from "./index-
|
|
1
|
+
import { t as C, g as F, f as se, c as Z, S as ie, a as ae } from "./index-D8MJQXDd.js";
|
|
2
|
+
import { b as no, d as so, e as io, h as ao, i as ro, j as co, k as lo, l as uo, m as mo, n as fo, o as po, p as go, q as yo, r as ho, s as To, u as vo, v as So } from "./index-D8MJQXDd.js";
|
|
3
3
|
import { useMemo as L } from "react";
|
|
4
4
|
function re(e) {
|
|
5
5
|
return {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const S="__FANSUNITED_DATA_LAYER_CONFIG__";function L(e){globalThis[S]=e}function g(){const e=globalThis[S];if(!e)throw new Error("Data layer config not initialized. Call setConfig() in your root layout.");return e}function D(){return globalThis[S]!==void 0}function O(e){const t=e.replace(/\/$/,"");function o(a){const{sportal365Sports:s}=a;if(!s)throw new Error("Sportal365 Sports API configuration is missing");const c=`${s.username}:${s.password}`;return`Basic ${btoa(c)}`}function n(a){return`${t}${a}`}return{async get(a){const s=a.config||g(),{sportal365Sports:c}=s;if(!c)throw new Error("Sportal365 Sports API configuration is missing");const r=new URL(n(a.path));if(a.params)for(const[_,y]of Object.entries(a.params))y!==void 0&&(Array.isArray(y)?y.length>0&&r.searchParams.set(_,y.join(",")):r.searchParams.set(_,y));const f={Authorization:o(s),"Content-Type":"application/json","X-Project":c.projectId,...a.headers};console.log("[Sportal365 HTTP] Making request:",{url:r.toString(),method:"GET",headers:{...f,Authorization:f.Authorization?"[REDACTED]":void 0},params:a.params});const u=await fetch(r.toString(),{method:"GET",headers:f,signal:c.timeout?AbortSignal.timeout(c.timeout):void 0,...a.next&&{next:a.next}});if(console.log("[Sportal365 HTTP] Response received:",{url:r.toString(),status:u.status,statusText:u.statusText,ok:u.ok,headers:Object.fromEntries(u.headers.entries())}),!u.ok){const _=`Sportal365 API error: ${u.status} ${u.statusText}`;throw console.error("[Sportal365 HTTP] Request failed:",{url:r.toString(),status:u.status,statusText:u.statusText}),new Error(_)}const l=await u.json();return console.log("[Sportal365 HTTP] Response data:",{url:r.toString(),dataType:typeof l,isArray:Array.isArray(l),hasData:!!l,keys:typeof l=="object"&&l!==null?Object.keys(l):void 0,data:l}),l}}}const F="https://football.api.sportal365.com",N="https://sports-statistics.api.sportal365.com",P="https://sports-search.api.sportal365.com",m=O(F);function C(e){if(e)return{id:e.id,name:e.name,slug:e.slug,position:e.position,gender:e.gender,assets:e.assets?{photo:e.assets.thumb?.url,photoTransparent:e.assets.thumb_transparent_background?.url}:void 0}}const x={GOAL:"GOAL",PENALTY_GOAL:"PENALTY_GOAL",OWN_GOAL:"OWN_GOAL",DISALLOWED_GOAL:"DISALLOWED_GOAL",PENALTY_SHOOTOUT_SCORED:"PENALTY_SHOOTOUT_SCORED",PENALTY_SHOOTOUT_MISSED:"PENALTY_SHOOTOUT_MISSED",YELLOW_CARD:"YELLOW_CARD",RED_CARD:"RED_CARD",YELLOW_RED_CARD:"YELLOW_RED_CARD",SUBSTITUTION:"SUBSTITUTION",KICKOFF:"KICKOFF",HALFTIME:"HALFTIME",START_SECOND_HALF:"START_SECOND_HALF",FINISHED:"FINISHED",INJURY_TIME:"INJURY_TIME",PENALTY_AWARDED:"PENALTY_AWARDED",PENALTY_MISSED:"PENALTY_MISSED",PENALTY_SAVED:"PENALTY_SAVED"};function h(e){const t=x[e.type_code];return t?{id:e.id,type:t,competitorPosition:e.team_position==="HOME"?"ONE":"TWO",minute:e.minute,injuryMinute:e.injury_minute,primaryPlayer:C(e.primary_player),secondaryPlayer:C(e.secondary_player),score:e.score?{competitorOne:String(e.score.home),competitorTwo:String(e.score.away)}:void 0}:(console.warn(`Unknown event type: ${e.type_code}`),null)}function i(e,t="sportal365"){if(e)return[{provider:t,id:e}]}function M(e,t){return e?e.find(n=>n.provider===t)?.id:void 0}function H(e,t,o){const n=e??[],a=n.findIndex(s=>s.provider===t);if(a>=0){const s=[...n];return s[a]={provider:t,id:o},s}else return[...n,{provider:t,id:o}]}function $(e){const t={finished_ap:"finished_after_penalties",finished_aet:"finished_after_extra_time",finished:"finished",not_started:"not_started",live:"live",interrupted:"interrupted",cancelled:"cancelled",postponed:"postponed",abandoned:"abandoned"};let o;return e.code&&t[e.code]?o=t[e.code]:o={FINISHED:"finished",NOT_STARTED:"not_started",LIVE:"live",INTERRUPTED:"interrupted",CANCELLED:"cancelled",POSTPONED:"postponed",UNKNOWN:"not_started",ABANDONED:"abandoned"}[e.type]??"not_started",{code:o,name:e.name,shortName:e.short_name,type:e.type}}function b(e){return{id:e.id,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code,slug:e.slug,type:e.type==="national"?"national":"club",gender:e.gender,assets:e.assets?{logo:e.assets.logo?.url,homeKit:e.assets.home_kit?.url,awayKit:e.assets.away_kit?.url,squadImage:e.assets.squad_image?.url}:void 0,metadata:e.shirt_color?{shirtColors:[{type:"home",colorCode:e.shirt_color}]}:void 0,providerRef:i(e.uuid)}}function q(e){return{kickoffTime:new Date(e.kickoff_time),currentMinute:e.minute?.regular_time,phaseStartedAt:e.phase_started_at?new Date(e.phase_started_at):void 0,finishedAt:e.finished_at?new Date(e.finished_at):void 0,firstHalfStartedAt:e.first_half_started_at?new Date(e.first_half_started_at):void 0,secondHalfStartedAt:e.second_half_started_at?new Date(e.second_half_started_at):void 0,extraTimeFirstHalfStartedAt:e.extra_time_first_half_started_at?new Date(e.extra_time_first_half_started_at):void 0,extraTimeSecondHalfStartedAt:e.extra_time_second_half_started_at?new Date(e.extra_time_second_half_started_at):void 0}}function Y(e){if(!e)return;const t=n=>n?{competitorOne:String(n.home),competitorTwo:String(n.away)}:void 0,o=e.after_extra_time??e.regular_time;return{competitorOne:o?.home!=null?String(o.home):null,competitorTwo:o?.away!=null?String(o.away):null,breakdown:{total:t(e.total),halfTime:t(e.half_time),regularTime:t(e.regular_time),extraTime:t(e.extra_time),penaltyShootout:t(e.penalty_shootout),aggregate:t(e.aggregate)}}}function U(e){if(e)return{id:e.id,name:e.name,slug:e.slug,assets:e.assets?.image?.url?{image:e.assets.image.url}:void 0,providerRef:i(e.uuid)}}function W(e){if(e?.length)return e.map(t=>({id:t.id,name:t.name,slug:t.slug,role:t.role??"REFEREE",gender:t.gender}))}function j(e){if(!e.season?.tournament)return;const{tournament:t,...o}=e.season;return{id:t.id,name:t.name,slug:t.slug,type:t.type,region:t.region,country:t.country?{id:t.country.id,name:t.country.name,code:t.country.code??void 0,flag:t.country.assets?.flag?.url,providerRef:i(t.country.uuid)}:void 0,season:{id:o.id,name:o.name,status:o.status},stage:e.stage?{id:e.stage.id,name:e.stage.name,type:e.stage.type}:void 0,assets:t.assets?.logo?.url?{logo:t.assets.logo.url}:void 0,providerRef:i(t.uuid)}}function G(e){if(!e.winner?.match?.id)return;const t={"Regular Time":"REGULAR_TIME","Extra Time":"EXTRA_TIME",Penalties:"PENALTIES"};return{competitorId:e.winner.match.id,reason:e.winner.match.reason?.name?t[e.winner.match.reason.name]:void 0,aggregate:!!e.winner.aggregate}}function k(e){return{id:e.id,slug:e.slug,status:$(e.status),timing:q(e),competitorOne:b(e.home_team),competitorTwo:b(e.away_team),competition:j(e),round:e.round?{id:e.round.id??e.round.key,key:e.round.key,name:e.round.name,type:e.round.type??"REGULAR",providerRef:i(e.round.uuid)}:void 0,group:e.group?{id:e.group.id,name:e.group.name,providerRef:i(e.group.uuid)}:void 0,venue:U(e.venue),officials:W(e.referees),spectators:e.spectators??void 0,score:Y(e.score),mainEvents:e.main_events?.map(h).filter(t=>t!==null),penaltyShootoutEvents:e.penalty_shootout_events?.map(h).filter(t=>t!==null),winner:G(e),coverage:e.coverage==="NOT_LIVE"?"UNKNOWN":e.coverage,lineupStatus:e.lineup_status==="UNCONFIRMED"?"EXPECTED":e.lineup_status,providerRef:i(e.uuid)}}function K(e){const t=e.player;return{id:t.id,name:t.name,slug:t.slug,position:t.position,shirtNumber:e.shirt_number,positionX:e.position_x??void 0,positionY:e.position_y??void 0,country:t.country?{id:t.country.id,name:t.country.name,code:t.country.code,providerRef:i(t.country.uuid)}:void 0,birthdate:t.birthdate,profile:t.profile?{height:t.profile.height,weight:t.profile.weight}:void 0,assets:t.assets?{photo:t.assets.thumb?.url,photoTransparent:t.assets.thumb_transparent_background?.url}:void 0,events:e.events?.map(h).filter(o=>o!==null),providerRef:i(t.uuid)}}function A(e){const t=[],o=[];for(const n of e.players){const a=K(n);n.type.category==="start"?t.push(a):n.type.category==="sub"&&o.push(a)}return{competitorId:e.team_id,formation:e.formation,coach:e.coach?{id:e.coach.id,name:e.coach.name,slug:e.coach.slug,country:e.coach.country?{id:e.coach.country.id,name:e.coach.country.name,code:e.coach.country.code,providerRef:i(e.coach.country.uuid)}:void 0,birthdate:e.coach.birthdate,providerRef:i(e.coach.uuid)}:void 0,starters:t,substitutes:o}}function V(e){return{matchId:e.match_id,confirmed:e.status==="CONFIRMED",competitorOne:A(e.home_team),competitorTwo:A(e.away_team)}}function p(e,t,o,n){return t==null?null:{key:e,value:String(t),label:o,unit:n}}function I(e,t){const o=(t.shots_on??0)+(t.shots_off??0)+(t.shots_blocked??0),n=[p("possession",t.possession,"Possession","%"),p("shots_total",o,"Shots"),p("shots_on_target",t.shots_on,"Shots on Target"),p("shots_off_target",t.shots_off,"Shots off Target"),p("shots_blocked",t.shots_blocked,"Shots Blocked"),p("corners",t.corners,"Corner Kicks"),p("goal_kicks",t.goal_kicks,"Goal Kicks"),p("throw_ins",t.throw_in,"Throw Ins"),p("offsides",t.offside,"Offsides"),p("fouls",t.fouls_committed,"Fouls"),p("yellow_cards",t.yellow_cards,"Yellow Cards"),p("passes",t.pass,"Passes"),p("crosses",t.crosses,"Crosses")];return{competitorId:e,statistics:n.filter(a=>a!==null)}}function B(e){const t=e.find(n=>n.home_team),o=e.find(n=>!n.home_team);if(!t||!o)throw new Error("Missing competitor statistics");return{competitorOne:I(String(t.team.id),t.statistics),competitorTwo:I(String(o.team.id),o.statistics)}}function z(e){const t=e.urls?.find(o=>o.app_type==="desktop")?.url;return{id:e.id,name:e.name,code:e.code,value:e.value??void 0,odds:e.odds,oddsOld:e.odds_old,movement:e.movement==="STABLE"?"NONE":e.movement,url:t}}function X(e){return{type:{id:e.type.id,code:e.type.code,name:e.type.name},period:{id:e.scope.id,type:e.scope.type,name:e.scope.name},selections:e.selections.map(z)}}function J(e){if(!e)return!0;const t=e.replace("#",""),o=parseInt(t.substring(0,2),16),n=parseInt(t.substring(2,4),16),a=parseInt(t.substring(4,6),16);return(.2126*o+.7152*n+.0722*a)/255<.5}function Q(e){const t=e.bookmaker.assets?.[0],o=e.bookmaker.branding||t,n=e.bookmaker.branding?.background_color||t?.background_color,a=e.bookmaker.branding?.text_color||(J(n)?"#FFFFFF":"#000000");return{operator:{id:e.bookmaker.id,name:e.bookmaker.name,url:e.bookmaker.url,branding:o?{backgroundColor:n,textColor:a,logo:t?.logo}:void 0},type:e.type,markets:e.markets.map(X)}}function Z(e,t){return{matchId:e,operators:t.map(Q)}}function E(e){if(e==null||e==="")return;const t=typeof e=="number"?e:parseInt(e,10);return isNaN(t)?void 0:t}function w(e){return{externalId:e.external_id,minute:E(e.elapsed),addedTime:E(e.elapsed_plus),text:e.auto_text,details:e.details,meta:{type:e.type,commentaryType:e.commentary_type,subtype1:e.subtype_1,subtype2:e.subtype_2,timestamp:e.incident_timestamp}}}async function ee(e,t,o){const n=o||g(),{sportal365Sports:a}=n,s=await m.get({path:`/v2/matches/${e}`,params:{language_code:t?.languageCode??a?.languageCode??"en",odd_client:t?.oddClient,odd_type:t?.oddType,scope_type:t?.scopeType,odd_format:t?.oddFormat,market_types:t?.marketTypes,bookmaker_ids:t?.bookmakerIds,optional_data:t?.optionalData},headers:{"Accept-Language":t?.languageCode??a?.languageCode??"en"},next:t?.next,config:n});return k(s)}async function te(e,t,o){const n=o||g(),{sportal365Sports:a}=n;return(await m.get({path:`/v2/matches/${e}/events`,params:{language_code:t?.languageCode??a?.languageCode??"en"},headers:{"Accept-Language":t?.languageCode??a?.languageCode??"en"},next:t?.next,config:n})).events.map(h).filter(c=>c!==null)}async function oe(e,t,o){const n=o||g(),{sportal365Sports:a}=n,s=await m.get({path:`/v2/matches/${e}/lineups`,params:{language_code:t?.languageCode??a?.languageCode??"en"},headers:{"Accept-Language":t?.languageCode??a?.languageCode??"en"},next:t?.next,config:n});return V(s)}async function ne(e,t,o){const n=o||g(),{sportal365Sports:a}=n,s=await m.get({path:`/v2/matches/${e}`,params:{language_code:t?.languageCode??a?.languageCode??"en",odd_client:t?.oddClient??a?.oddClient,odd_type:t?.oddType,scope_type:t?.scopeType??"ALL",odd_format:t?.oddFormat??"DECIMAL",market_types:t?.marketTypes,bookmaker_ids:t?.bookmakerIds},headers:{"Accept-Language":t?.languageCode??a?.languageCode??"en"},next:t?.next,config:n});return Z(e,s.odds??[])}async function ae(e,t,o){const n=o||g(),{sportal365Sports:a}=n,s=await m.get({path:`/events/${e}/teamstats`,params:{language_code:t?.languageCode??a?.languageCode??"en"},headers:{"Accept-Language":t?.languageCode??a?.languageCode??"en"},next:t?.next,config:n});return B(s)}async function se(e,t,o){const n=o||g(),{sportal365Sports:a}=n;return(await m.get({path:`/matches/${e}/commentary`,params:{language_code:t?.languageCode??a?.languageCode??"en"},headers:{"Accept-Language":t?.languageCode??a?.languageCode??"en"},next:t?.next,config:n})).map(w)}async function ie(e,t){const o=t||g(),{sportal365Sports:n}=o;return(await m.get({path:"/v2/matches",params:{language_code:e.languageCode??n?.languageCode??"en",limit:e.limit.toString(),offset:e.offset.toString(),tournament_ids:e.tournamentIds,season_ids:e.seasonIds,stage_ids:e.stageIds,group_ids:e.groupIds,round_ids:e.roundIds,round_filter:e.roundFilter,from_kickoff_time:e.fromKickoffTime,to_kickoff_time:e.toKickoffTime,team_ids:e.teamIds,team_ids_operator:e.teamIdsOperator,referee_id:e.refereeId,venue_id:e.venueId,player_id:e.playerId,status_types:e.statusTypes,status_codes:e.statusCodes,odd_client:e.oddClient??n?.oddClient,odd_type:e.oddType,scope_type:e.scopeType,odd_format:e.oddFormat,market_types:e.marketTypes,bookmaker_ids:e.bookmakerIds,sort_direction:e.sortDirection,optional_data:e.optionalData},headers:{"Accept-Language":e.languageCode??n?.languageCode??"en"},next:e.next,config:o})).matches.map(k)}function re(e){return{id:e.id,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code,slug:e.slug,type:e.type==="placeholder"||e.type==="club"?"club":"national",gender:e.gender,country:e.country?{id:e.country.id,name:e.country.name,code:e.country.code??void 0,flag:e.country.assets?.flag?.url,providerRef:i(e.country.uuid)}:void 0,venue:e.venue?{id:e.venue.id,name:e.venue.name,slug:e.venue.slug,city:e.venue.city?{id:e.venue.city.id,name:e.venue.city.name,country:e.venue.city.country?{id:e.venue.city.country.id,name:e.venue.city.country.name,code:e.venue.city.country.code??void 0,flag:e.venue.city.country.assets?.flag?.url,providerRef:i(e.venue.city.country.uuid)}:void 0,providerRef:i(e.venue.city.uuid??void 0)}:void 0,country:e.venue.country?{id:e.venue.country.id,name:e.venue.country.name,code:e.venue.country.code??void 0,flag:e.venue.country.assets?.flag?.url,providerRef:i(e.venue.country.uuid)}:void 0,profile:e.venue.profile?{latitude:e.venue.profile.lat,longitude:e.venue.profile.lng,capacity:e.venue.profile.capacity}:void 0,assets:e.venue.assets?.image?.url?{image:e.venue.assets.image.url}:void 0,providerRef:i(e.venue.uuid)}:void 0,coach:e.coach?{id:e.coach.id,name:e.coach.name,slug:e.coach.slug,country:{id:e.coach.country.id,name:e.coach.country.name,code:e.coach.country.code??void 0,flag:e.coach.country.assets?.flag?.url,providerRef:i(e.coach.country.uuid)},birthdate:e.coach.birthdate,providerRef:i(e.coach.uuid)}:void 0,founded:e.founded,assets:e.assets?{logo:e.assets.logo?.url,homeKit:e.assets.home_kit?.url,awayKit:e.assets.away_kit?.url,squadImage:e.assets.squad_image?.url}:void 0,metadata:{shirtColors:e.shirt_colors?.map(t=>({type:t.type,colorCode:t.color_code})),socials:e.social?{website:e.social.web,x:e.social.twitter_id,facebook:e.social.facebook_id,instagram:e.social.instagram_id,wikipedia:e.social.wikipedia_id}:void 0},activeSeasons:e.active_seasons?.map(t=>({id:t.id,name:t.name,slug:t.slug,active:t.status==="ACTIVE",providerRef:i(t.uuid)})),currentSeason:e.current_season?{id:e.current_season.id,name:e.current_season.name,slug:e.current_season.slug,active:e.current_season.status==="ACTIVE",providerRef:i(e.current_season.uuid)}:void 0,form:e.form&&e.form.length>0?{competitorId:e.id,results:e.form.map(t=>{const n=t.participants[0].id===e.uuid?t.participants[1]:t.participants[0],a=t.result[0]?.results.find(r=>r.position==="1")?.value,s=t.result[0]?.results.find(r=>r.position==="2")?.value,c=t.outcome==="win"?"W":t.outcome==="draw"?"D":"L";return{matchId:t.id,result:c,score:a&&s?`${a}-${s}`:void 0,opponent:{id:n.id,name:n.name,logo:n.display_asset?.url},date:new Date(t.start_time),competition:t.competition?{id:t.competition.id,name:t.competition.name}:void 0}}),formString:e.form.map(t=>t.outcome==="win"?"W":t.outcome==="draw"?"D":"L").join("")}:void 0,providerRef:i(e.uuid)}}function de(e){const t=e.player;return{id:t.id,name:t.name,slug:t.slug,position:t.position,shirtNumber:e.shirt_number,country:t.country?{id:t.country.id,name:t.country.name,code:t.country.code??void 0,flag:t.country.assets?.flag?.url,providerRef:i(t.country.uuid)}:void 0,gender:t.gender,birthdate:t.birthdate,profile:{height:t.profile?.height??void 0,weight:t.profile?.weight??void 0},assets:t.assets?{photo:t.assets.thumb?.url,photoTransparent:t.assets.thumb_transparent_background?.url}:void 0,status:e.status,contractType:e.contract_type,contractUntil:e.contract_until??void 0,joinedDate:e.start_date??void 0,providerRef:i(t.id)}}function ce(e){return{id:e.id,name:e.name,slug:e.slug,country:e.country?{id:e.country.id,name:e.country.name,code:e.country.code??void 0,flag:e.country.assets?.flag?.url,providerRef:i(e.country.uuid)}:void 0,birthdate:e.birthdate,providerRef:i(e.uuid)}}function ue(e){return{teamId:e.team.id,teamName:e.team.name,coach:e.coach?ce(e.coach):void 0,players:e.players.map(de)}}function le(e){const t=parseInt(e,10);return isNaN(t)?void 0:t}function d(e,t){const o=e.find(n=>n.name===t);return o?le(o.value):void 0}function ge(e,t){const o=e.statistics;return{playerId:e.player.id,seasonId:e.season.id,teamId:t,appearances:d(o,"played"),started:d(o,"started"),substituteIn:d(o,"substitute_in"),substituteOut:d(o,"substitute_out"),minutes:d(o,"minutes"),minutesSubstitute:d(o,"minutes_substitute"),goals:d(o,"goals"),goalsSubstitute:d(o,"goals_substitute"),penaltyGoals:d(o,"penalty_goals"),ownGoals:d(o,"own_goals"),assists:d(o,"assists"),shots:d(o,"shots"),shotsOnTarget:d(o,"shots_on_target"),yellowCards:d(o,"yellow_cards"),redCards:d(o,"red_cards"),foulsCommitted:d(o,"fouls_committed"),penaltiesCommitted:d(o,"penalties_committed"),penaltiesMissed:d(o,"penalties_missed"),cleansheets:d(o,"cleansheets"),saves:d(o,"saves"),conceded:d(o,"conceded"),caughtBall:d(o,"caught_ball"),penaltiesReceived:d(o,"penalties_received"),offsides:d(o,"offsides"),rawStatistics:o.map(n=>({name:n.name,value:n.value}))}}async function R(e,t){const o=t||g(),{sportal365Sports:n}=o,{seasonIds:a,teamId:s,languageCode:c,next:r}=e,f=r??{revalidate:120},u={season_ids:a.join(","),team_id:s,language_code:c??n?.languageCode??"en"};console.log("[getFootballPlayerSeasonStatistics] Fetching player statistics:",{path:"/v2/statistics/players/season",params:u,teamId:s,seasonIds:a});const l=await m.get({path:"/v2/statistics/players/season",params:u,headers:{"Accept-Language":c??n?.languageCode??"en"},next:f,config:o});console.log("[getFootballPlayerSeasonStatistics] API response received:",{statisticsCount:l.statistics?.length??0,hasStatistics:!!l.statistics&&l.statistics.length>0});const _={};for(const y of l.statistics){const v=y.player.id;_[v]=ge(y,s),console.log("[getFootballPlayerSeasonStatistics] Transformed stats for player:",{playerId:v,playerName:y.player.name,hasStats:!!_[v]})}return console.log("[getFootballPlayerSeasonStatistics] Returning stats map with",Object.keys(_).length,"players"),_}async function me(e,t,o){const n=o||g(),{sportal365Sports:a}=n,s=await m.get({path:`/v2/teams/${e}`,params:{language_code:t?.languageCode??a?.languageCode??"en",optional_data:"form"},headers:{"Accept-Language":t?.languageCode??a?.languageCode??"en"},next:t?.next,config:n});return re(s)}async function pe(e,t,o){const n=o||g(),{sportal365Sports:a}=n;console.log("[getFootballTeamSquad] Fetching squad for team:",e,"with options:",t);const s=await m.get({path:`/v2/teams/${e}/squad`,params:{language_code:t?.languageCode??a?.languageCode??"en",memberStatus:t?.memberStatus??"ACTIVE"},headers:{"Accept-Language":t?.languageCode??a?.languageCode??"en"},next:t?.next,config:n});console.log("[getFootballTeamSquad] Squad API response:",{teamId:s.team?.id,teamName:s.team?.name,playerCount:s.players?.length,hasCoach:!!s.coach});const c=ue(s);if(t?.seasonIds&&t.seasonIds.length>0){console.log("[getFootballTeamSquad] Fetching player statistics for seasonIds:",t.seasonIds);try{const r=await R({seasonIds:t.seasonIds,teamId:e,languageCode:t.languageCode,next:t.next},n);console.log("[getFootballTeamSquad] Player statistics received:",{playerIdsWithStats:Object.keys(r),statsCount:Object.keys(r).length});let f=0;for(const u of c.players){const l=r[u.id];l?(u.seasonStatistics=l,f++,console.log("[getFootballTeamSquad] Attached stats to player:",u.id,u.name)):console.log("[getFootballTeamSquad] No stats found for player:",u.id,u.name)}console.log("[getFootballTeamSquad] Statistics attachment complete:",{totalPlayers:c.players.length,playersWithStats:f,playersWithoutStats:c.players.length-f})}catch(r){console.error("[getFootballTeamSquad] Failed to fetch player statistics:",{error:r instanceof Error?r.message:String(r),stack:r instanceof Error?r.stack:void 0,teamId:e,seasonIds:t.seasonIds})}}else console.log("[getFootballTeamSquad] No seasonIds provided, skipping player statistics fetch");return c}function fe(e){return{id:String(e.id),name:e.name,slug:e.slug,type:e.type,region:e.region,gender:e.gender,country:{id:String(e.country.id),name:e.country.name,flag:e.country.url_flag,providerRef:i(e.country.uuid)},seasons:e.seasons.map(t=>({id:String(t.id),name:t.name,slug:t.slug,active:t.active,providerRef:i(t.uuid)})),assets:e.url_logo?{logo:e.url_logo}:void 0,providerRef:i(e.uuid)}}function _e(e){const t=e.rounds.map(o=>({id:o.id,name:o.name,key:o.key,type:o.type,status:o.status,startDate:o.start_date,endDate:o.end_date,providerRef:i(o.uuid)}));return{id:e.stage.id,name:e.stage.name,slug:e.stage.slug,shortName:e.stage.short_name??void 0,type:e.stage.type,status:e.stage.status,coverage:e.stage.coverage,order:e.stage.order_in_season,startDate:e.stage.start_date,endDate:e.stage.end_date,rounds:t,providerRef:i(e.stage.uuid)}}function ye(e){const{season:t,stages:o}=e,{tournament:n}=t,a={id:n.id,name:n.name,slug:n.slug,type:n.type,region:n.region,gender:n.gender,country:{id:n.country.id,name:n.country.name,code:n.country.code??void 0,flag:n.country.assets?.flag?.url,providerRef:i(n.country.uuid)},assets:n.assets?.logo?.url?{logo:n.assets.logo.url}:void 0,providerRef:i(n.uuid)};return{id:t.id,name:t.name,slug:t.slug,active:t.status==="ACTIVE",status:t.status==="ACTIVE"?"ACTIVE":"INACTIVE",competition:a,stages:o.map(_e),providerRef:i(t.uuid)}}async function he(e,t,o){const n=o||g(),{sportal365Sports:a}=n,s=await m.get({path:`/tournaments/${e}`,params:{language_code:t?.languageCode??a?.languageCode??"en"},headers:{"Accept-Language":t?.languageCode??a?.languageCode??"en"},next:t?.next,config:n});return fe(s)}async function ve(e,t){const o=t||g(),{sportal365Sports:n}=o;if(!e?.seasonId&&!e?.competitionId)throw new Error("Either seasonId or competitionId must be provided");const a={language_code:e?.languageCode??n?.languageCode??"en"};e.seasonId?a.season_id=e.seasonId:e.competitionId&&(a.tournament_id=e.competitionId,e.status&&(a.status=e.status));const s=await m.get({path:"/v2/seasons/details",params:a,headers:{"Accept-Language":e?.languageCode??n?.languageCode??"en"},next:e?.next,config:o});return ye(s)}function T(e){return{championsleague:"championsLeague",europaleague:"europaLeague",conferenceleague:"conferenceLeague",relegation:"relegation",playoff:"playoff",promotion:"promotion"}[e.toLowerCase()]??e.toLowerCase().replace(/_/g,"")}function Se(e){const t=e.toLowerCase();return t==="relegation"?"BOTTOM":t==="playoff"?"MIDDLE":"TOP"}function Te(e,t){if(!t||t.length===0)return;const o=t.map(a=>{const s=a.event,c=s.home_team.id===e,r=c?s.away_team:s.home_team,f=`${s.goal_home}-${s.goal_away}`;return{matchId:s.id.toString(),result:a.outcome,score:f,homeAway:c?"HOME":"AWAY",opponent:{id:r.id.toString(),name:r.name,logo:r.url_logo},date:new Date(s.start_time),competition:void 0}}),n=o.map(a=>a.result).join("");return{competitorId:e.toString(),results:o,formString:n}}function Ce(e){return{key:T(e.code),name:e.name,position:Se(e.type)}}function be(e){const t={played:e.played,won:e.wins,drawn:e.draws,lost:e.defeits,goalsFor:e.goals_for,goalsAgainst:e.goals_against,goalDifference:e.goals_for-e.goals_against,points:e.points},o=e.rules?.length>0?e.rules.map(a=>T(a.code)):void 0,n=Te(e.team.id,e.team.form??[]);return{rank:e.rank,competitor:{id:e.team.id.toString(),name:e.team.name,shortName:e.team.short_name??void 0,logo:e.team.url_logo},stats:t,form:n,rules:o}}function Ae(e){const t=e.map(be),o=new Map;for(const n of e)if(n.rules)for(const a of n.rules){const s=T(a.code);o.has(s)||o.set(s,Ce(a))}return{entries:t,metadata:{legend:Array.from(o.values())}}}async function Ie(e,t){const o=t||g(),{sportal365Sports:n}=o,a=e.expand?.join(","),s=await m.get({path:`/tournaments/seasons/stages/${e.stageId}/standing`,params:{expand:a,language_code:e.languageCode??n?.languageCode??"en"},headers:{"Accept-Language":e.languageCode??n?.languageCode??"en"},next:e.next,config:o});return!s||s.length===0?{entries:[],metadata:{legend:[]}}:Ae(s)}exports.SPORTAL365_SPORTS_SEARCH_DOMAIN=P;exports.SPORTAL365_STATISTICS_DOMAIN=N;exports.addProviderRef=H;exports.createHttpClient=O;exports.footballHttp=m;exports.getConfig=g;exports.getFootballCompetition=he;exports.getFootballMatch=ee;exports.getFootballMatchCommentary=se;exports.getFootballMatchEvents=te;exports.getFootballMatchLineups=oe;exports.getFootballMatchOdds=ne;exports.getFootballMatchStatistics=ae;exports.getFootballMatches=ie;exports.getFootballPlayerSeasonStatistics=R;exports.getFootballSeasonDetails=ve;exports.getFootballStandings=Ie;exports.getFootballTeam=me;exports.getFootballTeamSquad=pe;exports.getProviderRefId=M;exports.isConfigured=D;exports.setConfig=L;exports.toProviderRefArray=i;
|
|
@@ -2,13 +2,13 @@ const S = "__FANSUNITED_DATA_LAYER_CONFIG__";
|
|
|
2
2
|
function de(e) {
|
|
3
3
|
globalThis[S] = e;
|
|
4
4
|
}
|
|
5
|
-
function
|
|
5
|
+
function g() {
|
|
6
6
|
const e = globalThis[S];
|
|
7
7
|
if (!e)
|
|
8
8
|
throw new Error("Data layer config not initialized. Call setConfig() in your root layout.");
|
|
9
9
|
return e;
|
|
10
10
|
}
|
|
11
|
-
function
|
|
11
|
+
function ue() {
|
|
12
12
|
return globalThis[S] !== void 0;
|
|
13
13
|
}
|
|
14
14
|
function O(e) {
|
|
@@ -17,42 +17,72 @@ function O(e) {
|
|
|
17
17
|
const { sportal365Sports: a } = s;
|
|
18
18
|
if (!a)
|
|
19
19
|
throw new Error("Sportal365 Sports API configuration is missing");
|
|
20
|
-
const
|
|
21
|
-
return `Basic ${btoa(
|
|
20
|
+
const u = `${a.username}:${a.password}`;
|
|
21
|
+
return `Basic ${btoa(u)}`;
|
|
22
22
|
}
|
|
23
23
|
function n(s) {
|
|
24
24
|
return `${t}${s}`;
|
|
25
25
|
}
|
|
26
26
|
return {
|
|
27
27
|
async get(s) {
|
|
28
|
-
const a = s.config ||
|
|
29
|
-
if (!
|
|
28
|
+
const a = s.config || g(), { sportal365Sports: u } = a;
|
|
29
|
+
if (!u)
|
|
30
30
|
throw new Error("Sportal365 Sports API configuration is missing");
|
|
31
|
-
const
|
|
31
|
+
const r = new URL(n(s.path));
|
|
32
32
|
if (s.params)
|
|
33
|
-
for (const [
|
|
34
|
-
|
|
35
|
-
const
|
|
33
|
+
for (const [y, _] of Object.entries(s.params))
|
|
34
|
+
_ !== void 0 && (Array.isArray(_) ? _.length > 0 && r.searchParams.set(y, _.join(",")) : r.searchParams.set(y, _));
|
|
35
|
+
const f = {
|
|
36
|
+
Authorization: o(a),
|
|
37
|
+
"Content-Type": "application/json",
|
|
38
|
+
"X-Project": u.projectId,
|
|
39
|
+
// Merge custom headers (they can override defaults)
|
|
40
|
+
...s.headers
|
|
41
|
+
};
|
|
42
|
+
console.log("[Sportal365 HTTP] Making request:", {
|
|
43
|
+
url: r.toString(),
|
|
36
44
|
method: "GET",
|
|
37
45
|
headers: {
|
|
38
|
-
|
|
39
|
-
"
|
|
40
|
-
"X-Project": c.projectId,
|
|
41
|
-
// Merge custom headers (they can override defaults)
|
|
42
|
-
...s.headers
|
|
46
|
+
...f,
|
|
47
|
+
Authorization: f.Authorization ? "[REDACTED]" : void 0
|
|
43
48
|
},
|
|
44
|
-
|
|
49
|
+
params: s.params
|
|
50
|
+
});
|
|
51
|
+
const c = await fetch(r.toString(), {
|
|
52
|
+
method: "GET",
|
|
53
|
+
headers: f,
|
|
54
|
+
signal: u.timeout ? AbortSignal.timeout(u.timeout) : void 0,
|
|
45
55
|
// Next.js cache options for ISR/on-demand revalidation
|
|
46
56
|
...s.next && { next: s.next }
|
|
47
57
|
});
|
|
48
|
-
if (
|
|
49
|
-
|
|
50
|
-
|
|
58
|
+
if (console.log("[Sportal365 HTTP] Response received:", {
|
|
59
|
+
url: r.toString(),
|
|
60
|
+
status: c.status,
|
|
61
|
+
statusText: c.statusText,
|
|
62
|
+
ok: c.ok,
|
|
63
|
+
headers: Object.fromEntries(c.headers.entries())
|
|
64
|
+
}), !c.ok) {
|
|
65
|
+
const y = `Sportal365 API error: ${c.status} ${c.statusText}`;
|
|
66
|
+
throw console.error("[Sportal365 HTTP] Request failed:", {
|
|
67
|
+
url: r.toString(),
|
|
68
|
+
status: c.status,
|
|
69
|
+
statusText: c.statusText
|
|
70
|
+
}), new Error(y);
|
|
71
|
+
}
|
|
72
|
+
const l = await c.json();
|
|
73
|
+
return console.log("[Sportal365 HTTP] Response data:", {
|
|
74
|
+
url: r.toString(),
|
|
75
|
+
dataType: typeof l,
|
|
76
|
+
isArray: Array.isArray(l),
|
|
77
|
+
hasData: !!l,
|
|
78
|
+
keys: typeof l == "object" && l !== null ? Object.keys(l) : void 0,
|
|
79
|
+
data: l
|
|
80
|
+
}), l;
|
|
51
81
|
}
|
|
52
82
|
};
|
|
53
83
|
}
|
|
54
|
-
const L = "https://football.api.sportal365.com",
|
|
55
|
-
function
|
|
84
|
+
const L = "https://football.api.sportal365.com", ce = "https://sports-statistics.api.sportal365.com", le = "https://sports-search.api.sportal365.com", p = O(L);
|
|
85
|
+
function C(e) {
|
|
56
86
|
if (e)
|
|
57
87
|
return {
|
|
58
88
|
id: e.id,
|
|
@@ -91,7 +121,7 @@ const R = {
|
|
|
91
121
|
PENALTY_MISSED: "PENALTY_MISSED",
|
|
92
122
|
PENALTY_SAVED: "PENALTY_SAVED"
|
|
93
123
|
};
|
|
94
|
-
function
|
|
124
|
+
function h(e) {
|
|
95
125
|
const t = R[e.type_code];
|
|
96
126
|
return t ? {
|
|
97
127
|
id: e.id,
|
|
@@ -99,8 +129,8 @@ function y(e) {
|
|
|
99
129
|
competitorPosition: e.team_position === "HOME" ? "ONE" : "TWO",
|
|
100
130
|
minute: e.minute,
|
|
101
131
|
injuryMinute: e.injury_minute,
|
|
102
|
-
primaryPlayer:
|
|
103
|
-
secondaryPlayer:
|
|
132
|
+
primaryPlayer: C(e.primary_player),
|
|
133
|
+
secondaryPlayer: C(e.secondary_player),
|
|
104
134
|
score: e.score ? { competitorOne: String(e.score.home), competitorTwo: String(e.score.away) } : void 0
|
|
105
135
|
} : (console.warn(`Unknown event type: ${e.type_code}`), null);
|
|
106
136
|
}
|
|
@@ -193,7 +223,7 @@ function N(e) {
|
|
|
193
223
|
extraTimeSecondHalfStartedAt: e.extra_time_second_half_started_at ? new Date(e.extra_time_second_half_started_at) : void 0
|
|
194
224
|
};
|
|
195
225
|
}
|
|
196
|
-
function
|
|
226
|
+
function x(e) {
|
|
197
227
|
if (!e) return;
|
|
198
228
|
const t = (n) => n ? { competitorOne: String(n.home), competitorTwo: String(n.away) } : void 0, o = e.after_extra_time ?? e.regular_time;
|
|
199
229
|
return {
|
|
@@ -209,7 +239,7 @@ function F(e) {
|
|
|
209
239
|
}
|
|
210
240
|
};
|
|
211
241
|
}
|
|
212
|
-
function
|
|
242
|
+
function F(e) {
|
|
213
243
|
if (e)
|
|
214
244
|
return {
|
|
215
245
|
id: e.id,
|
|
@@ -259,7 +289,7 @@ function M(e) {
|
|
|
259
289
|
providerRef: i(t.uuid)
|
|
260
290
|
};
|
|
261
291
|
}
|
|
262
|
-
function
|
|
292
|
+
function H(e) {
|
|
263
293
|
if (!e.winner?.match?.id) return;
|
|
264
294
|
const t = {
|
|
265
295
|
"Regular Time": "REGULAR_TIME",
|
|
@@ -293,19 +323,19 @@ function k(e) {
|
|
|
293
323
|
name: e.group.name,
|
|
294
324
|
providerRef: i(e.group.uuid)
|
|
295
325
|
} : void 0,
|
|
296
|
-
venue:
|
|
326
|
+
venue: F(e.venue),
|
|
297
327
|
officials: P(e.referees),
|
|
298
328
|
spectators: e.spectators ?? void 0,
|
|
299
|
-
score:
|
|
300
|
-
mainEvents: e.main_events?.map(
|
|
301
|
-
penaltyShootoutEvents: e.penalty_shootout_events?.map(
|
|
302
|
-
winner:
|
|
329
|
+
score: x(e.score),
|
|
330
|
+
mainEvents: e.main_events?.map(h).filter((t) => t !== null),
|
|
331
|
+
penaltyShootoutEvents: e.penalty_shootout_events?.map(h).filter((t) => t !== null),
|
|
332
|
+
winner: H(e),
|
|
303
333
|
coverage: e.coverage === "NOT_LIVE" ? "UNKNOWN" : e.coverage,
|
|
304
334
|
lineupStatus: e.lineup_status === "UNCONFIRMED" ? "EXPECTED" : e.lineup_status,
|
|
305
335
|
providerRef: i(e.uuid)
|
|
306
336
|
};
|
|
307
337
|
}
|
|
308
|
-
function
|
|
338
|
+
function $(e) {
|
|
309
339
|
const t = e.player;
|
|
310
340
|
return {
|
|
311
341
|
id: t.id,
|
|
@@ -330,14 +360,14 @@ function H(e) {
|
|
|
330
360
|
photo: t.assets.thumb?.url,
|
|
331
361
|
photoTransparent: t.assets.thumb_transparent_background?.url
|
|
332
362
|
} : void 0,
|
|
333
|
-
events: e.events?.map(
|
|
363
|
+
events: e.events?.map(h).filter((o) => o !== null),
|
|
334
364
|
providerRef: i(t.uuid)
|
|
335
365
|
};
|
|
336
366
|
}
|
|
337
|
-
function
|
|
367
|
+
function A(e) {
|
|
338
368
|
const t = [], o = [];
|
|
339
369
|
for (const n of e.players) {
|
|
340
|
-
const s =
|
|
370
|
+
const s = $(n);
|
|
341
371
|
n.type.category === "start" ? t.push(s) : n.type.category === "sub" && o.push(s);
|
|
342
372
|
}
|
|
343
373
|
return {
|
|
@@ -360,45 +390,45 @@ function I(e) {
|
|
|
360
390
|
substitutes: o
|
|
361
391
|
};
|
|
362
392
|
}
|
|
363
|
-
function
|
|
393
|
+
function q(e) {
|
|
364
394
|
return {
|
|
365
395
|
matchId: e.match_id,
|
|
366
396
|
confirmed: e.status === "CONFIRMED",
|
|
367
|
-
competitorOne:
|
|
368
|
-
competitorTwo:
|
|
397
|
+
competitorOne: A(e.home_team),
|
|
398
|
+
competitorTwo: A(e.away_team)
|
|
369
399
|
};
|
|
370
400
|
}
|
|
371
|
-
function
|
|
401
|
+
function m(e, t, o, n) {
|
|
372
402
|
return t == null ? null : { key: e, value: String(t), label: o, unit: n };
|
|
373
403
|
}
|
|
374
|
-
function
|
|
404
|
+
function I(e, t) {
|
|
375
405
|
const o = (t.shots_on ?? 0) + (t.shots_off ?? 0) + (t.shots_blocked ?? 0), n = [
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
406
|
+
m("possession", t.possession, "Possession", "%"),
|
|
407
|
+
m("shots_total", o, "Shots"),
|
|
408
|
+
m("shots_on_target", t.shots_on, "Shots on Target"),
|
|
409
|
+
m("shots_off_target", t.shots_off, "Shots off Target"),
|
|
410
|
+
m("shots_blocked", t.shots_blocked, "Shots Blocked"),
|
|
411
|
+
m("corners", t.corners, "Corner Kicks"),
|
|
412
|
+
m("goal_kicks", t.goal_kicks, "Goal Kicks"),
|
|
413
|
+
m("throw_ins", t.throw_in, "Throw Ins"),
|
|
414
|
+
m("offsides", t.offside, "Offsides"),
|
|
415
|
+
m("fouls", t.fouls_committed, "Fouls"),
|
|
416
|
+
m("yellow_cards", t.yellow_cards, "Yellow Cards"),
|
|
417
|
+
m("passes", t.pass, "Passes"),
|
|
418
|
+
m("crosses", t.crosses, "Crosses")
|
|
389
419
|
];
|
|
390
420
|
return {
|
|
391
421
|
competitorId: e,
|
|
392
422
|
statistics: n.filter((s) => s !== null)
|
|
393
423
|
};
|
|
394
424
|
}
|
|
395
|
-
function
|
|
425
|
+
function Y(e) {
|
|
396
426
|
const t = e.find((n) => n.home_team), o = e.find((n) => !n.home_team);
|
|
397
427
|
if (!t || !o)
|
|
398
428
|
throw new Error("Missing competitor statistics");
|
|
399
429
|
return {
|
|
400
|
-
competitorOne:
|
|
401
|
-
competitorTwo:
|
|
430
|
+
competitorOne: I(String(t.team.id), t.statistics),
|
|
431
|
+
competitorTwo: I(String(o.team.id), o.statistics)
|
|
402
432
|
};
|
|
403
433
|
}
|
|
404
434
|
function U(e) {
|
|
@@ -414,7 +444,7 @@ function U(e) {
|
|
|
414
444
|
url: t
|
|
415
445
|
};
|
|
416
446
|
}
|
|
417
|
-
function
|
|
447
|
+
function j(e) {
|
|
418
448
|
return {
|
|
419
449
|
type: {
|
|
420
450
|
id: e.type.id,
|
|
@@ -429,13 +459,13 @@ function W(e) {
|
|
|
429
459
|
selections: e.selections.map(U)
|
|
430
460
|
};
|
|
431
461
|
}
|
|
432
|
-
function
|
|
462
|
+
function W(e) {
|
|
433
463
|
if (!e) return !0;
|
|
434
464
|
const t = e.replace("#", ""), o = parseInt(t.substring(0, 2), 16), n = parseInt(t.substring(2, 4), 16), s = parseInt(t.substring(4, 6), 16);
|
|
435
465
|
return (0.2126 * o + 0.7152 * n + 0.0722 * s) / 255 < 0.5;
|
|
436
466
|
}
|
|
437
467
|
function G(e) {
|
|
438
|
-
const t = e.bookmaker.assets?.[0], o = e.bookmaker.branding || t, n = e.bookmaker.branding?.background_color || t?.background_color, s = e.bookmaker.branding?.text_color || (
|
|
468
|
+
const t = e.bookmaker.assets?.[0], o = e.bookmaker.branding || t, n = e.bookmaker.branding?.background_color || t?.background_color, s = e.bookmaker.branding?.text_color || (W(n) ? "#FFFFFF" : "#000000");
|
|
439
469
|
return {
|
|
440
470
|
operator: {
|
|
441
471
|
id: e.bookmaker.id,
|
|
@@ -448,7 +478,7 @@ function G(e) {
|
|
|
448
478
|
} : void 0
|
|
449
479
|
},
|
|
450
480
|
type: e.type,
|
|
451
|
-
markets: e.markets.map(
|
|
481
|
+
markets: e.markets.map(j)
|
|
452
482
|
};
|
|
453
483
|
}
|
|
454
484
|
function K(e, t) {
|
|
@@ -480,7 +510,7 @@ function V(e) {
|
|
|
480
510
|
};
|
|
481
511
|
}
|
|
482
512
|
async function pe(e, t, o) {
|
|
483
|
-
const n = o ||
|
|
513
|
+
const n = o || g(), { sportal365Sports: s } = n, a = await p.get({
|
|
484
514
|
path: `/v2/matches/${e}`,
|
|
485
515
|
params: {
|
|
486
516
|
language_code: t?.languageCode ?? s?.languageCode ?? "en",
|
|
@@ -501,8 +531,8 @@ async function pe(e, t, o) {
|
|
|
501
531
|
return k(a);
|
|
502
532
|
}
|
|
503
533
|
async function fe(e, t, o) {
|
|
504
|
-
const n = o ||
|
|
505
|
-
return (await
|
|
534
|
+
const n = o || g(), { sportal365Sports: s } = n;
|
|
535
|
+
return (await p.get({
|
|
506
536
|
path: `/v2/matches/${e}/events`,
|
|
507
537
|
params: {
|
|
508
538
|
language_code: t?.languageCode ?? s?.languageCode ?? "en"
|
|
@@ -512,10 +542,10 @@ async function fe(e, t, o) {
|
|
|
512
542
|
},
|
|
513
543
|
next: t?.next,
|
|
514
544
|
config: n
|
|
515
|
-
})).events.map(
|
|
545
|
+
})).events.map(h).filter((u) => u !== null);
|
|
516
546
|
}
|
|
517
|
-
async function
|
|
518
|
-
const n = o ||
|
|
547
|
+
async function ye(e, t, o) {
|
|
548
|
+
const n = o || g(), { sportal365Sports: s } = n, a = await p.get({
|
|
519
549
|
path: `/v2/matches/${e}/lineups`,
|
|
520
550
|
params: {
|
|
521
551
|
language_code: t?.languageCode ?? s?.languageCode ?? "en"
|
|
@@ -526,10 +556,10 @@ async function _e(e, t, o) {
|
|
|
526
556
|
next: t?.next,
|
|
527
557
|
config: n
|
|
528
558
|
});
|
|
529
|
-
return
|
|
559
|
+
return q(a);
|
|
530
560
|
}
|
|
531
|
-
async function
|
|
532
|
-
const n = o ||
|
|
561
|
+
async function _e(e, t, o) {
|
|
562
|
+
const n = o || g(), { sportal365Sports: s } = n, a = await p.get({
|
|
533
563
|
path: `/v2/matches/${e}`,
|
|
534
564
|
params: {
|
|
535
565
|
language_code: t?.languageCode ?? s?.languageCode ?? "en",
|
|
@@ -549,7 +579,7 @@ async function ye(e, t, o) {
|
|
|
549
579
|
return K(e, a.odds ?? []);
|
|
550
580
|
}
|
|
551
581
|
async function he(e, t, o) {
|
|
552
|
-
const n = o ||
|
|
582
|
+
const n = o || g(), { sportal365Sports: s } = n, a = await p.get({
|
|
553
583
|
path: `/events/${e}/teamstats`,
|
|
554
584
|
params: {
|
|
555
585
|
language_code: t?.languageCode ?? s?.languageCode ?? "en"
|
|
@@ -560,11 +590,11 @@ async function he(e, t, o) {
|
|
|
560
590
|
next: t?.next,
|
|
561
591
|
config: n
|
|
562
592
|
});
|
|
563
|
-
return
|
|
593
|
+
return Y(a);
|
|
564
594
|
}
|
|
565
595
|
async function ve(e, t, o) {
|
|
566
|
-
const n = o ||
|
|
567
|
-
return (await
|
|
596
|
+
const n = o || g(), { sportal365Sports: s } = n;
|
|
597
|
+
return (await p.get({
|
|
568
598
|
path: `/matches/${e}/commentary`,
|
|
569
599
|
params: {
|
|
570
600
|
language_code: t?.languageCode ?? s?.languageCode ?? "en"
|
|
@@ -577,8 +607,8 @@ async function ve(e, t, o) {
|
|
|
577
607
|
})).map(V);
|
|
578
608
|
}
|
|
579
609
|
async function Se(e, t) {
|
|
580
|
-
const o = t ||
|
|
581
|
-
return (await
|
|
610
|
+
const o = t || g(), { sportal365Sports: n } = o;
|
|
611
|
+
return (await p.get({
|
|
582
612
|
path: "/v2/matches",
|
|
583
613
|
params: {
|
|
584
614
|
language_code: e.languageCode ?? n?.languageCode ?? "en",
|
|
@@ -726,10 +756,10 @@ function B(e) {
|
|
|
726
756
|
form: e.form && e.form.length > 0 ? {
|
|
727
757
|
competitorId: e.id,
|
|
728
758
|
results: e.form.map((t) => {
|
|
729
|
-
const n = t.participants[0].id === e.uuid ? t.participants[1] : t.participants[0], s = t.result[0]?.results.find((
|
|
759
|
+
const n = t.participants[0].id === e.uuid ? t.participants[1] : t.participants[0], s = t.result[0]?.results.find((r) => r.position === "1")?.value, a = t.result[0]?.results.find((r) => r.position === "2")?.value, u = t.outcome === "win" ? "W" : t.outcome === "draw" ? "D" : "L";
|
|
730
760
|
return {
|
|
731
761
|
matchId: t.id,
|
|
732
|
-
result:
|
|
762
|
+
result: u,
|
|
733
763
|
score: s && a ? `${s}-${a}` : void 0,
|
|
734
764
|
opponent: {
|
|
735
765
|
id: n.id,
|
|
@@ -748,7 +778,7 @@ function B(e) {
|
|
|
748
778
|
providerRef: i(e.uuid)
|
|
749
779
|
};
|
|
750
780
|
}
|
|
751
|
-
function
|
|
781
|
+
function z(e) {
|
|
752
782
|
const t = e.player;
|
|
753
783
|
return {
|
|
754
784
|
id: t.id,
|
|
@@ -781,7 +811,7 @@ function X(e) {
|
|
|
781
811
|
// Using player.id as provider reference
|
|
782
812
|
};
|
|
783
813
|
}
|
|
784
|
-
function
|
|
814
|
+
function X(e) {
|
|
785
815
|
return {
|
|
786
816
|
id: e.id,
|
|
787
817
|
name: e.name,
|
|
@@ -801,15 +831,15 @@ function J(e) {
|
|
|
801
831
|
return {
|
|
802
832
|
teamId: e.team.id,
|
|
803
833
|
teamName: e.team.name,
|
|
804
|
-
coach: e.coach ?
|
|
805
|
-
players: e.players.map(
|
|
834
|
+
coach: e.coach ? X(e.coach) : void 0,
|
|
835
|
+
players: e.players.map(z)
|
|
806
836
|
};
|
|
807
837
|
}
|
|
808
838
|
function Q(e) {
|
|
809
839
|
const t = parseInt(e, 10);
|
|
810
840
|
return isNaN(t) ? void 0 : t;
|
|
811
841
|
}
|
|
812
|
-
function
|
|
842
|
+
function d(e, t) {
|
|
813
843
|
const o = e.find((n) => n.name === t);
|
|
814
844
|
return o ? Q(o.value) : void 0;
|
|
815
845
|
}
|
|
@@ -820,37 +850,37 @@ function Z(e, t) {
|
|
|
820
850
|
seasonId: e.season.id,
|
|
821
851
|
teamId: t,
|
|
822
852
|
// Core statistics
|
|
823
|
-
appearances:
|
|
824
|
-
started:
|
|
825
|
-
substituteIn:
|
|
826
|
-
substituteOut:
|
|
827
|
-
minutes:
|
|
828
|
-
minutesSubstitute:
|
|
853
|
+
appearances: d(o, "played"),
|
|
854
|
+
started: d(o, "started"),
|
|
855
|
+
substituteIn: d(o, "substitute_in"),
|
|
856
|
+
substituteOut: d(o, "substitute_out"),
|
|
857
|
+
minutes: d(o, "minutes"),
|
|
858
|
+
minutesSubstitute: d(o, "minutes_substitute"),
|
|
829
859
|
// Scoring
|
|
830
|
-
goals:
|
|
831
|
-
goalsSubstitute:
|
|
832
|
-
penaltyGoals:
|
|
833
|
-
ownGoals:
|
|
834
|
-
assists:
|
|
860
|
+
goals: d(o, "goals"),
|
|
861
|
+
goalsSubstitute: d(o, "goals_substitute"),
|
|
862
|
+
penaltyGoals: d(o, "penalty_goals"),
|
|
863
|
+
ownGoals: d(o, "own_goals"),
|
|
864
|
+
assists: d(o, "assists"),
|
|
835
865
|
// Shooting
|
|
836
|
-
shots:
|
|
837
|
-
shotsOnTarget:
|
|
866
|
+
shots: d(o, "shots"),
|
|
867
|
+
shotsOnTarget: d(o, "shots_on_target"),
|
|
838
868
|
// Discipline
|
|
839
|
-
yellowCards:
|
|
840
|
-
redCards:
|
|
841
|
-
foulsCommitted:
|
|
842
|
-
penaltiesCommitted:
|
|
869
|
+
yellowCards: d(o, "yellow_cards"),
|
|
870
|
+
redCards: d(o, "red_cards"),
|
|
871
|
+
foulsCommitted: d(o, "fouls_committed"),
|
|
872
|
+
penaltiesCommitted: d(o, "penalties_committed"),
|
|
843
873
|
// Penalties
|
|
844
|
-
penaltiesMissed:
|
|
874
|
+
penaltiesMissed: d(o, "penalties_missed"),
|
|
845
875
|
// Defensive
|
|
846
|
-
cleansheets:
|
|
876
|
+
cleansheets: d(o, "cleansheets"),
|
|
847
877
|
// Goalkeeper-specific
|
|
848
|
-
saves:
|
|
849
|
-
conceded:
|
|
850
|
-
caughtBall:
|
|
851
|
-
penaltiesReceived:
|
|
878
|
+
saves: d(o, "saves"),
|
|
879
|
+
conceded: d(o, "conceded"),
|
|
880
|
+
caughtBall: d(o, "caught_ball"),
|
|
881
|
+
penaltiesReceived: d(o, "penalties_received"),
|
|
852
882
|
// Other
|
|
853
|
-
offsides:
|
|
883
|
+
offsides: d(o, "offsides"),
|
|
854
884
|
// Raw statistics array (for any additional stats not mapped above)
|
|
855
885
|
rawStatistics: o.map((n) => ({
|
|
856
886
|
name: n.name,
|
|
@@ -859,43 +889,43 @@ function Z(e, t) {
|
|
|
859
889
|
};
|
|
860
890
|
}
|
|
861
891
|
async function w(e, t) {
|
|
862
|
-
const o = t ||
|
|
892
|
+
const o = t || g(), { sportal365Sports: n } = o, { seasonIds: s, teamId: a, languageCode: u, next: r } = e, f = r ?? { revalidate: 120 }, c = {
|
|
863
893
|
season_ids: s.join(","),
|
|
864
894
|
team_id: a,
|
|
865
|
-
language_code:
|
|
895
|
+
language_code: u ?? n?.languageCode ?? "en"
|
|
866
896
|
};
|
|
867
897
|
console.log("[getFootballPlayerSeasonStatistics] Fetching player statistics:", {
|
|
868
898
|
path: "/v2/statistics/players/season",
|
|
869
|
-
params:
|
|
899
|
+
params: c,
|
|
870
900
|
teamId: a,
|
|
871
901
|
seasonIds: s
|
|
872
902
|
});
|
|
873
|
-
const l = await
|
|
903
|
+
const l = await p.get({
|
|
874
904
|
path: "/v2/statistics/players/season",
|
|
875
|
-
params:
|
|
905
|
+
params: c,
|
|
876
906
|
headers: {
|
|
877
|
-
"Accept-Language":
|
|
907
|
+
"Accept-Language": u ?? n?.languageCode ?? "en"
|
|
878
908
|
},
|
|
879
|
-
next:
|
|
909
|
+
next: f,
|
|
880
910
|
config: o
|
|
881
911
|
});
|
|
882
912
|
console.log("[getFootballPlayerSeasonStatistics] API response received:", {
|
|
883
913
|
statisticsCount: l.statistics?.length ?? 0,
|
|
884
914
|
hasStatistics: !!l.statistics && l.statistics.length > 0
|
|
885
915
|
});
|
|
886
|
-
const
|
|
887
|
-
for (const
|
|
888
|
-
const v =
|
|
889
|
-
|
|
916
|
+
const y = {};
|
|
917
|
+
for (const _ of l.statistics) {
|
|
918
|
+
const v = _.player.id;
|
|
919
|
+
y[v] = Z(_, a), console.log("[getFootballPlayerSeasonStatistics] Transformed stats for player:", {
|
|
890
920
|
playerId: v,
|
|
891
|
-
playerName:
|
|
892
|
-
hasStats: !!
|
|
921
|
+
playerName: _.player.name,
|
|
922
|
+
hasStats: !!y[v]
|
|
893
923
|
});
|
|
894
924
|
}
|
|
895
|
-
return console.log("[getFootballPlayerSeasonStatistics] Returning stats map with", Object.keys(
|
|
925
|
+
return console.log("[getFootballPlayerSeasonStatistics] Returning stats map with", Object.keys(y).length, "players"), y;
|
|
896
926
|
}
|
|
897
|
-
async function
|
|
898
|
-
const n = o ||
|
|
927
|
+
async function Te(e, t, o) {
|
|
928
|
+
const n = o || g(), { sportal365Sports: s } = n, a = await p.get({
|
|
899
929
|
path: `/v2/teams/${e}`,
|
|
900
930
|
params: {
|
|
901
931
|
language_code: t?.languageCode ?? s?.languageCode ?? "en",
|
|
@@ -909,10 +939,10 @@ async function Ce(e, t, o) {
|
|
|
909
939
|
});
|
|
910
940
|
return B(a);
|
|
911
941
|
}
|
|
912
|
-
async function
|
|
913
|
-
const n = o ||
|
|
942
|
+
async function Ce(e, t, o) {
|
|
943
|
+
const n = o || g(), { sportal365Sports: s } = n;
|
|
914
944
|
console.log("[getFootballTeamSquad] Fetching squad for team:", e, "with options:", t);
|
|
915
|
-
const a = await
|
|
945
|
+
const a = await p.get({
|
|
916
946
|
path: `/v2/teams/${e}/squad`,
|
|
917
947
|
params: {
|
|
918
948
|
language_code: t?.languageCode ?? s?.languageCode ?? "en",
|
|
@@ -930,11 +960,11 @@ async function Te(e, t, o) {
|
|
|
930
960
|
playerCount: a.players?.length,
|
|
931
961
|
hasCoach: !!a.coach
|
|
932
962
|
});
|
|
933
|
-
const
|
|
963
|
+
const u = J(a);
|
|
934
964
|
if (t?.seasonIds && t.seasonIds.length > 0) {
|
|
935
965
|
console.log("[getFootballTeamSquad] Fetching player statistics for seasonIds:", t.seasonIds);
|
|
936
966
|
try {
|
|
937
|
-
const
|
|
967
|
+
const r = await w(
|
|
938
968
|
{
|
|
939
969
|
seasonIds: t.seasonIds,
|
|
940
970
|
teamId: e,
|
|
@@ -944,30 +974,30 @@ async function Te(e, t, o) {
|
|
|
944
974
|
n
|
|
945
975
|
);
|
|
946
976
|
console.log("[getFootballTeamSquad] Player statistics received:", {
|
|
947
|
-
playerIdsWithStats: Object.keys(
|
|
948
|
-
statsCount: Object.keys(
|
|
977
|
+
playerIdsWithStats: Object.keys(r),
|
|
978
|
+
statsCount: Object.keys(r).length
|
|
949
979
|
});
|
|
950
|
-
let
|
|
951
|
-
for (const
|
|
952
|
-
const l =
|
|
953
|
-
l ? (
|
|
980
|
+
let f = 0;
|
|
981
|
+
for (const c of u.players) {
|
|
982
|
+
const l = r[c.id];
|
|
983
|
+
l ? (c.seasonStatistics = l, f++, console.log("[getFootballTeamSquad] Attached stats to player:", c.id, c.name)) : console.log("[getFootballTeamSquad] No stats found for player:", c.id, c.name);
|
|
954
984
|
}
|
|
955
985
|
console.log("[getFootballTeamSquad] Statistics attachment complete:", {
|
|
956
|
-
totalPlayers:
|
|
957
|
-
playersWithStats:
|
|
958
|
-
playersWithoutStats:
|
|
986
|
+
totalPlayers: u.players.length,
|
|
987
|
+
playersWithStats: f,
|
|
988
|
+
playersWithoutStats: u.players.length - f
|
|
959
989
|
});
|
|
960
|
-
} catch (
|
|
990
|
+
} catch (r) {
|
|
961
991
|
console.error("[getFootballTeamSquad] Failed to fetch player statistics:", {
|
|
962
|
-
error:
|
|
963
|
-
stack:
|
|
992
|
+
error: r instanceof Error ? r.message : String(r),
|
|
993
|
+
stack: r instanceof Error ? r.stack : void 0,
|
|
964
994
|
teamId: e,
|
|
965
995
|
seasonIds: t.seasonIds
|
|
966
996
|
});
|
|
967
997
|
}
|
|
968
998
|
} else
|
|
969
999
|
console.log("[getFootballTeamSquad] No seasonIds provided, skipping player statistics fetch");
|
|
970
|
-
return
|
|
1000
|
+
return u;
|
|
971
1001
|
}
|
|
972
1002
|
function ee(e) {
|
|
973
1003
|
return {
|
|
@@ -1054,7 +1084,7 @@ function oe(e) {
|
|
|
1054
1084
|
};
|
|
1055
1085
|
}
|
|
1056
1086
|
async function be(e, t, o) {
|
|
1057
|
-
const n = o ||
|
|
1087
|
+
const n = o || g(), { sportal365Sports: s } = n, a = await p.get({
|
|
1058
1088
|
path: `/tournaments/${e}`,
|
|
1059
1089
|
params: {
|
|
1060
1090
|
language_code: t?.languageCode ?? s?.languageCode ?? "en"
|
|
@@ -1067,15 +1097,15 @@ async function be(e, t, o) {
|
|
|
1067
1097
|
});
|
|
1068
1098
|
return ee(a);
|
|
1069
1099
|
}
|
|
1070
|
-
async function
|
|
1071
|
-
const o = t ||
|
|
1100
|
+
async function Ae(e, t) {
|
|
1101
|
+
const o = t || g(), { sportal365Sports: n } = o;
|
|
1072
1102
|
if (!e?.seasonId && !e?.competitionId)
|
|
1073
1103
|
throw new Error("Either seasonId or competitionId must be provided");
|
|
1074
1104
|
const s = {
|
|
1075
1105
|
language_code: e?.languageCode ?? n?.languageCode ?? "en"
|
|
1076
1106
|
};
|
|
1077
1107
|
e.seasonId ? s.season_id = e.seasonId : e.competitionId && (s.tournament_id = e.competitionId, e.status && (s.status = e.status));
|
|
1078
|
-
const a = await
|
|
1108
|
+
const a = await p.get({
|
|
1079
1109
|
path: "/v2/seasons/details",
|
|
1080
1110
|
params: s,
|
|
1081
1111
|
headers: {
|
|
@@ -1086,7 +1116,7 @@ async function Ie(e, t) {
|
|
|
1086
1116
|
});
|
|
1087
1117
|
return oe(a);
|
|
1088
1118
|
}
|
|
1089
|
-
function
|
|
1119
|
+
function T(e) {
|
|
1090
1120
|
return {
|
|
1091
1121
|
championsleague: "championsLeague",
|
|
1092
1122
|
europaleague: "europaLeague",
|
|
@@ -1104,16 +1134,16 @@ function se(e, t) {
|
|
|
1104
1134
|
if (!t || t.length === 0)
|
|
1105
1135
|
return;
|
|
1106
1136
|
const o = t.map((s) => {
|
|
1107
|
-
const a = s.event,
|
|
1137
|
+
const a = s.event, u = a.home_team.id === e, r = u ? a.away_team : a.home_team, f = `${a.goal_home}-${a.goal_away}`;
|
|
1108
1138
|
return {
|
|
1109
1139
|
matchId: a.id.toString(),
|
|
1110
1140
|
result: s.outcome,
|
|
1111
|
-
score:
|
|
1112
|
-
homeAway:
|
|
1141
|
+
score: f,
|
|
1142
|
+
homeAway: u ? "HOME" : "AWAY",
|
|
1113
1143
|
opponent: {
|
|
1114
|
-
id:
|
|
1115
|
-
name:
|
|
1116
|
-
logo:
|
|
1144
|
+
id: r.id.toString(),
|
|
1145
|
+
name: r.name,
|
|
1146
|
+
logo: r.url_logo
|
|
1117
1147
|
},
|
|
1118
1148
|
date: new Date(a.start_time),
|
|
1119
1149
|
competition: void 0
|
|
@@ -1128,7 +1158,7 @@ function se(e, t) {
|
|
|
1128
1158
|
}
|
|
1129
1159
|
function ae(e) {
|
|
1130
1160
|
return {
|
|
1131
|
-
key:
|
|
1161
|
+
key: T(e.code),
|
|
1132
1162
|
name: e.name,
|
|
1133
1163
|
position: ne(e.type)
|
|
1134
1164
|
};
|
|
@@ -1143,7 +1173,7 @@ function ie(e) {
|
|
|
1143
1173
|
goalsAgainst: e.goals_against,
|
|
1144
1174
|
goalDifference: e.goals_for - e.goals_against,
|
|
1145
1175
|
points: e.points
|
|
1146
|
-
}, o = e.rules?.length > 0 ? e.rules.map((s) =>
|
|
1176
|
+
}, o = e.rules?.length > 0 ? e.rules.map((s) => T(s.code)) : void 0, n = se(e.team.id, e.team.form ?? []);
|
|
1147
1177
|
return {
|
|
1148
1178
|
rank: e.rank,
|
|
1149
1179
|
competitor: {
|
|
@@ -1162,7 +1192,7 @@ function re(e) {
|
|
|
1162
1192
|
for (const n of e)
|
|
1163
1193
|
if (n.rules)
|
|
1164
1194
|
for (const s of n.rules) {
|
|
1165
|
-
const a =
|
|
1195
|
+
const a = T(s.code);
|
|
1166
1196
|
o.has(a) || o.set(a, ae(s));
|
|
1167
1197
|
}
|
|
1168
1198
|
return {
|
|
@@ -1172,8 +1202,8 @@ function re(e) {
|
|
|
1172
1202
|
}
|
|
1173
1203
|
};
|
|
1174
1204
|
}
|
|
1175
|
-
async function
|
|
1176
|
-
const o = t ||
|
|
1205
|
+
async function Ie(e, t) {
|
|
1206
|
+
const o = t || g(), { sportal365Sports: n } = o, s = e.expand?.join(","), a = await p.get({
|
|
1177
1207
|
path: `/tournaments/seasons/stages/${e.stageId}/standing`,
|
|
1178
1208
|
params: {
|
|
1179
1209
|
expand: s,
|
|
@@ -1189,26 +1219,26 @@ async function Ae(e, t) {
|
|
|
1189
1219
|
}
|
|
1190
1220
|
export {
|
|
1191
1221
|
le as S,
|
|
1192
|
-
|
|
1222
|
+
ce as a,
|
|
1193
1223
|
me as b,
|
|
1194
1224
|
O as c,
|
|
1195
1225
|
be as d,
|
|
1196
1226
|
pe as e,
|
|
1197
|
-
|
|
1198
|
-
|
|
1227
|
+
p as f,
|
|
1228
|
+
g,
|
|
1199
1229
|
ve as h,
|
|
1200
1230
|
fe as i,
|
|
1201
|
-
|
|
1202
|
-
|
|
1231
|
+
ye as j,
|
|
1232
|
+
_e as k,
|
|
1203
1233
|
he as l,
|
|
1204
1234
|
Se as m,
|
|
1205
1235
|
w as n,
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1236
|
+
Ae as o,
|
|
1237
|
+
Ie as p,
|
|
1238
|
+
Te as q,
|
|
1239
|
+
Ce as r,
|
|
1210
1240
|
ge as s,
|
|
1211
1241
|
i as t,
|
|
1212
|
-
|
|
1242
|
+
ue as u,
|
|
1213
1243
|
de as v
|
|
1214
1244
|
};
|
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.5.
|
|
7
|
+
"version": "0.5.2",
|
|
8
8
|
"type": "module",
|
|
9
9
|
"main": "./fansunited-data-layer.cjs",
|
|
10
10
|
"module": "./fansunited-data-layer.js",
|
package/index-C7ZA8KMC.cjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";const S="__FANSUNITED_DATA_LAYER_CONFIG__";function R(e){globalThis[S]=e}function u(){const e=globalThis[S];if(!e)throw new Error("Data layer config not initialized. Call setConfig() in your root layout.");return e}function D(){return globalThis[S]!==void 0}function O(e){const t=e.replace(/\/$/,"");function o(a){const{sportal365Sports:s}=a;if(!s)throw new Error("Sportal365 Sports API configuration is missing");const c=`${s.username}:${s.password}`;return`Basic ${btoa(c)}`}function n(a){return`${t}${a}`}return{async get(a){const s=a.config||u(),{sportal365Sports:c}=s;if(!c)throw new Error("Sportal365 Sports API configuration is missing");const d=new URL(n(a.path));if(a.params)for(const[f,g]of Object.entries(a.params))g!==void 0&&(Array.isArray(g)?g.length>0&&d.searchParams.set(f,g.join(",")):d.searchParams.set(f,g));const p=await fetch(d.toString(),{method:"GET",headers:{Authorization:o(s),"Content-Type":"application/json","X-Project":c.projectId,...a.headers},signal:c.timeout?AbortSignal.timeout(c.timeout):void 0,...a.next&&{next:a.next}});if(!p.ok)throw new Error(`Sportal365 API error: ${p.status} ${p.statusText}`);return p.json()}}}const F="https://football.api.sportal365.com",N="https://sports-statistics.api.sportal365.com",P="https://sports-search.api.sportal365.com",l=O(F);function T(e){if(e)return{id:e.id,name:e.name,slug:e.slug,position:e.position,gender:e.gender,assets:e.assets?{photo:e.assets.thumb?.url,photoTransparent:e.assets.thumb_transparent_background?.url}:void 0}}const x={GOAL:"GOAL",PENALTY_GOAL:"PENALTY_GOAL",OWN_GOAL:"OWN_GOAL",DISALLOWED_GOAL:"DISALLOWED_GOAL",PENALTY_SHOOTOUT_SCORED:"PENALTY_SHOOTOUT_SCORED",PENALTY_SHOOTOUT_MISSED:"PENALTY_SHOOTOUT_MISSED",YELLOW_CARD:"YELLOW_CARD",RED_CARD:"RED_CARD",YELLOW_RED_CARD:"YELLOW_RED_CARD",SUBSTITUTION:"SUBSTITUTION",KICKOFF:"KICKOFF",HALFTIME:"HALFTIME",START_SECOND_HALF:"START_SECOND_HALF",FINISHED:"FINISHED",INJURY_TIME:"INJURY_TIME",PENALTY_AWARDED:"PENALTY_AWARDED",PENALTY_MISSED:"PENALTY_MISSED",PENALTY_SAVED:"PENALTY_SAVED"};function y(e){const t=x[e.type_code];return t?{id:e.id,type:t,competitorPosition:e.team_position==="HOME"?"ONE":"TWO",minute:e.minute,injuryMinute:e.injury_minute,primaryPlayer:T(e.primary_player),secondaryPlayer:T(e.secondary_player),score:e.score?{competitorOne:String(e.score.home),competitorTwo:String(e.score.away)}:void 0}:(console.warn(`Unknown event type: ${e.type_code}`),null)}function i(e,t="sportal365"){if(e)return[{provider:t,id:e}]}function M(e,t){return e?e.find(n=>n.provider===t)?.id:void 0}function H(e,t,o){const n=e??[],a=n.findIndex(s=>s.provider===t);if(a>=0){const s=[...n];return s[a]={provider:t,id:o},s}else return[...n,{provider:t,id:o}]}function $(e){const t={finished_ap:"finished_after_penalties",finished_aet:"finished_after_extra_time",finished:"finished",not_started:"not_started",live:"live",interrupted:"interrupted",cancelled:"cancelled",postponed:"postponed",abandoned:"abandoned"};let o;return e.code&&t[e.code]?o=t[e.code]:o={FINISHED:"finished",NOT_STARTED:"not_started",LIVE:"live",INTERRUPTED:"interrupted",CANCELLED:"cancelled",POSTPONED:"postponed",UNKNOWN:"not_started",ABANDONED:"abandoned"}[e.type]??"not_started",{code:o,name:e.name,shortName:e.short_name,type:e.type}}function b(e){return{id:e.id,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code,slug:e.slug,type:e.type==="national"?"national":"club",gender:e.gender,assets:e.assets?{logo:e.assets.logo?.url,homeKit:e.assets.home_kit?.url,awayKit:e.assets.away_kit?.url,squadImage:e.assets.squad_image?.url}:void 0,metadata:e.shirt_color?{shirtColors:[{type:"home",colorCode:e.shirt_color}]}:void 0,providerRef:i(e.uuid)}}function Y(e){return{kickoffTime:new Date(e.kickoff_time),currentMinute:e.minute?.regular_time,phaseStartedAt:e.phase_started_at?new Date(e.phase_started_at):void 0,finishedAt:e.finished_at?new Date(e.finished_at):void 0,firstHalfStartedAt:e.first_half_started_at?new Date(e.first_half_started_at):void 0,secondHalfStartedAt:e.second_half_started_at?new Date(e.second_half_started_at):void 0,extraTimeFirstHalfStartedAt:e.extra_time_first_half_started_at?new Date(e.extra_time_first_half_started_at):void 0,extraTimeSecondHalfStartedAt:e.extra_time_second_half_started_at?new Date(e.extra_time_second_half_started_at):void 0}}function q(e){if(!e)return;const t=n=>n?{competitorOne:String(n.home),competitorTwo:String(n.away)}:void 0,o=e.after_extra_time??e.regular_time;return{competitorOne:o?.home!=null?String(o.home):null,competitorTwo:o?.away!=null?String(o.away):null,breakdown:{total:t(e.total),halfTime:t(e.half_time),regularTime:t(e.regular_time),extraTime:t(e.extra_time),penaltyShootout:t(e.penalty_shootout),aggregate:t(e.aggregate)}}}function U(e){if(e)return{id:e.id,name:e.name,slug:e.slug,assets:e.assets?.image?.url?{image:e.assets.image.url}:void 0,providerRef:i(e.uuid)}}function W(e){if(e?.length)return e.map(t=>({id:t.id,name:t.name,slug:t.slug,role:t.role??"REFEREE",gender:t.gender}))}function G(e){if(!e.season?.tournament)return;const{tournament:t,...o}=e.season;return{id:t.id,name:t.name,slug:t.slug,type:t.type,region:t.region,country:t.country?{id:t.country.id,name:t.country.name,code:t.country.code??void 0,flag:t.country.assets?.flag?.url,providerRef:i(t.country.uuid)}:void 0,season:{id:o.id,name:o.name,status:o.status},stage:e.stage?{id:e.stage.id,name:e.stage.name,type:e.stage.type}:void 0,assets:t.assets?.logo?.url?{logo:t.assets.logo.url}:void 0,providerRef:i(t.uuid)}}function j(e){if(!e.winner?.match?.id)return;const t={"Regular Time":"REGULAR_TIME","Extra Time":"EXTRA_TIME",Penalties:"PENALTIES"};return{competitorId:e.winner.match.id,reason:e.winner.match.reason?.name?t[e.winner.match.reason.name]:void 0,aggregate:!!e.winner.aggregate}}function k(e){return{id:e.id,slug:e.slug,status:$(e.status),timing:Y(e),competitorOne:b(e.home_team),competitorTwo:b(e.away_team),competition:G(e),round:e.round?{id:e.round.id??e.round.key,key:e.round.key,name:e.round.name,type:e.round.type??"REGULAR",providerRef:i(e.round.uuid)}:void 0,group:e.group?{id:e.group.id,name:e.group.name,providerRef:i(e.group.uuid)}:void 0,venue:U(e.venue),officials:W(e.referees),spectators:e.spectators??void 0,score:q(e.score),mainEvents:e.main_events?.map(y).filter(t=>t!==null),penaltyShootoutEvents:e.penalty_shootout_events?.map(y).filter(t=>t!==null),winner:j(e),coverage:e.coverage==="NOT_LIVE"?"UNKNOWN":e.coverage,lineupStatus:e.lineup_status==="UNCONFIRMED"?"EXPECTED":e.lineup_status,providerRef:i(e.uuid)}}function K(e){const t=e.player;return{id:t.id,name:t.name,slug:t.slug,position:t.position,shirtNumber:e.shirt_number,positionX:e.position_x??void 0,positionY:e.position_y??void 0,country:t.country?{id:t.country.id,name:t.country.name,code:t.country.code,providerRef:i(t.country.uuid)}:void 0,birthdate:t.birthdate,profile:t.profile?{height:t.profile.height,weight:t.profile.weight}:void 0,assets:t.assets?{photo:t.assets.thumb?.url,photoTransparent:t.assets.thumb_transparent_background?.url}:void 0,events:e.events?.map(y).filter(o=>o!==null),providerRef:i(t.uuid)}}function A(e){const t=[],o=[];for(const n of e.players){const a=K(n);n.type.category==="start"?t.push(a):n.type.category==="sub"&&o.push(a)}return{competitorId:e.team_id,formation:e.formation,coach:e.coach?{id:e.coach.id,name:e.coach.name,slug:e.coach.slug,country:e.coach.country?{id:e.coach.country.id,name:e.coach.country.name,code:e.coach.country.code,providerRef:i(e.coach.country.uuid)}:void 0,birthdate:e.coach.birthdate,providerRef:i(e.coach.uuid)}:void 0,starters:t,substitutes:o}}function V(e){return{matchId:e.match_id,confirmed:e.status==="CONFIRMED",competitorOne:A(e.home_team),competitorTwo:A(e.away_team)}}function m(e,t,o,n){return t==null?null:{key:e,value:String(t),label:o,unit:n}}function I(e,t){const o=(t.shots_on??0)+(t.shots_off??0)+(t.shots_blocked??0),n=[m("possession",t.possession,"Possession","%"),m("shots_total",o,"Shots"),m("shots_on_target",t.shots_on,"Shots on Target"),m("shots_off_target",t.shots_off,"Shots off Target"),m("shots_blocked",t.shots_blocked,"Shots Blocked"),m("corners",t.corners,"Corner Kicks"),m("goal_kicks",t.goal_kicks,"Goal Kicks"),m("throw_ins",t.throw_in,"Throw Ins"),m("offsides",t.offside,"Offsides"),m("fouls",t.fouls_committed,"Fouls"),m("yellow_cards",t.yellow_cards,"Yellow Cards"),m("passes",t.pass,"Passes"),m("crosses",t.crosses,"Crosses")];return{competitorId:e,statistics:n.filter(a=>a!==null)}}function B(e){const t=e.find(n=>n.home_team),o=e.find(n=>!n.home_team);if(!t||!o)throw new Error("Missing competitor statistics");return{competitorOne:I(String(t.team.id),t.statistics),competitorTwo:I(String(o.team.id),o.statistics)}}function X(e){const t=e.urls?.find(o=>o.app_type==="desktop")?.url;return{id:e.id,name:e.name,code:e.code,value:e.value??void 0,odds:e.odds,oddsOld:e.odds_old,movement:e.movement==="STABLE"?"NONE":e.movement,url:t}}function z(e){return{type:{id:e.type.id,code:e.type.code,name:e.type.name},period:{id:e.scope.id,type:e.scope.type,name:e.scope.name},selections:e.selections.map(X)}}function J(e){if(!e)return!0;const t=e.replace("#",""),o=parseInt(t.substring(0,2),16),n=parseInt(t.substring(2,4),16),a=parseInt(t.substring(4,6),16);return(.2126*o+.7152*n+.0722*a)/255<.5}function Q(e){const t=e.bookmaker.assets?.[0],o=e.bookmaker.branding||t,n=e.bookmaker.branding?.background_color||t?.background_color,a=e.bookmaker.branding?.text_color||(J(n)?"#FFFFFF":"#000000");return{operator:{id:e.bookmaker.id,name:e.bookmaker.name,url:e.bookmaker.url,branding:o?{backgroundColor:n,textColor:a,logo:t?.logo}:void 0},type:e.type,markets:e.markets.map(z)}}function Z(e,t){return{matchId:e,operators:t.map(Q)}}function E(e){if(e==null||e==="")return;const t=typeof e=="number"?e:parseInt(e,10);return isNaN(t)?void 0:t}function w(e){return{externalId:e.external_id,minute:E(e.elapsed),addedTime:E(e.elapsed_plus),text:e.auto_text,details:e.details,meta:{type:e.type,commentaryType:e.commentary_type,subtype1:e.subtype_1,subtype2:e.subtype_2,timestamp:e.incident_timestamp}}}async function ee(e,t,o){const n=o||u(),{sportal365Sports:a}=n,s=await l.get({path:`/v2/matches/${e}`,params:{language_code:t?.languageCode??a?.languageCode??"en",odd_client:t?.oddClient,odd_type:t?.oddType,scope_type:t?.scopeType,odd_format:t?.oddFormat,market_types:t?.marketTypes,bookmaker_ids:t?.bookmakerIds,optional_data:t?.optionalData},headers:{"Accept-Language":t?.languageCode??a?.languageCode??"en"},next:t?.next,config:n});return k(s)}async function te(e,t,o){const n=o||u(),{sportal365Sports:a}=n;return(await l.get({path:`/v2/matches/${e}/events`,params:{language_code:t?.languageCode??a?.languageCode??"en"},headers:{"Accept-Language":t?.languageCode??a?.languageCode??"en"},next:t?.next,config:n})).events.map(y).filter(c=>c!==null)}async function oe(e,t,o){const n=o||u(),{sportal365Sports:a}=n,s=await l.get({path:`/v2/matches/${e}/lineups`,params:{language_code:t?.languageCode??a?.languageCode??"en"},headers:{"Accept-Language":t?.languageCode??a?.languageCode??"en"},next:t?.next,config:n});return V(s)}async function ne(e,t,o){const n=o||u(),{sportal365Sports:a}=n,s=await l.get({path:`/v2/matches/${e}`,params:{language_code:t?.languageCode??a?.languageCode??"en",odd_client:t?.oddClient??a?.oddClient,odd_type:t?.oddType,scope_type:t?.scopeType??"ALL",odd_format:t?.oddFormat??"DECIMAL",market_types:t?.marketTypes,bookmaker_ids:t?.bookmakerIds},headers:{"Accept-Language":t?.languageCode??a?.languageCode??"en"},next:t?.next,config:n});return Z(e,s.odds??[])}async function ae(e,t,o){const n=o||u(),{sportal365Sports:a}=n,s=await l.get({path:`/events/${e}/teamstats`,params:{language_code:t?.languageCode??a?.languageCode??"en"},headers:{"Accept-Language":t?.languageCode??a?.languageCode??"en"},next:t?.next,config:n});return B(s)}async function se(e,t,o){const n=o||u(),{sportal365Sports:a}=n;return(await l.get({path:`/matches/${e}/commentary`,params:{language_code:t?.languageCode??a?.languageCode??"en"},headers:{"Accept-Language":t?.languageCode??a?.languageCode??"en"},next:t?.next,config:n})).map(w)}async function ie(e,t){const o=t||u(),{sportal365Sports:n}=o;return(await l.get({path:"/v2/matches",params:{language_code:e.languageCode??n?.languageCode??"en",limit:e.limit.toString(),offset:e.offset.toString(),tournament_ids:e.tournamentIds,season_ids:e.seasonIds,stage_ids:e.stageIds,group_ids:e.groupIds,round_ids:e.roundIds,round_filter:e.roundFilter,from_kickoff_time:e.fromKickoffTime,to_kickoff_time:e.toKickoffTime,team_ids:e.teamIds,team_ids_operator:e.teamIdsOperator,referee_id:e.refereeId,venue_id:e.venueId,player_id:e.playerId,status_types:e.statusTypes,status_codes:e.statusCodes,odd_client:e.oddClient??n?.oddClient,odd_type:e.oddType,scope_type:e.scopeType,odd_format:e.oddFormat,market_types:e.marketTypes,bookmaker_ids:e.bookmakerIds,sort_direction:e.sortDirection,optional_data:e.optionalData},headers:{"Accept-Language":e.languageCode??n?.languageCode??"en"},next:e.next,config:o})).matches.map(k)}function re(e){return{id:e.id,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code,slug:e.slug,type:e.type==="placeholder"||e.type==="club"?"club":"national",gender:e.gender,country:e.country?{id:e.country.id,name:e.country.name,code:e.country.code??void 0,flag:e.country.assets?.flag?.url,providerRef:i(e.country.uuid)}:void 0,venue:e.venue?{id:e.venue.id,name:e.venue.name,slug:e.venue.slug,city:e.venue.city?{id:e.venue.city.id,name:e.venue.city.name,country:e.venue.city.country?{id:e.venue.city.country.id,name:e.venue.city.country.name,code:e.venue.city.country.code??void 0,flag:e.venue.city.country.assets?.flag?.url,providerRef:i(e.venue.city.country.uuid)}:void 0,providerRef:i(e.venue.city.uuid??void 0)}:void 0,country:e.venue.country?{id:e.venue.country.id,name:e.venue.country.name,code:e.venue.country.code??void 0,flag:e.venue.country.assets?.flag?.url,providerRef:i(e.venue.country.uuid)}:void 0,profile:e.venue.profile?{latitude:e.venue.profile.lat,longitude:e.venue.profile.lng,capacity:e.venue.profile.capacity}:void 0,assets:e.venue.assets?.image?.url?{image:e.venue.assets.image.url}:void 0,providerRef:i(e.venue.uuid)}:void 0,coach:e.coach?{id:e.coach.id,name:e.coach.name,slug:e.coach.slug,country:{id:e.coach.country.id,name:e.coach.country.name,code:e.coach.country.code??void 0,flag:e.coach.country.assets?.flag?.url,providerRef:i(e.coach.country.uuid)},birthdate:e.coach.birthdate,providerRef:i(e.coach.uuid)}:void 0,founded:e.founded,assets:e.assets?{logo:e.assets.logo?.url,homeKit:e.assets.home_kit?.url,awayKit:e.assets.away_kit?.url,squadImage:e.assets.squad_image?.url}:void 0,metadata:{shirtColors:e.shirt_colors?.map(t=>({type:t.type,colorCode:t.color_code})),socials:e.social?{website:e.social.web,x:e.social.twitter_id,facebook:e.social.facebook_id,instagram:e.social.instagram_id,wikipedia:e.social.wikipedia_id}:void 0},activeSeasons:e.active_seasons?.map(t=>({id:t.id,name:t.name,slug:t.slug,active:t.status==="ACTIVE",providerRef:i(t.uuid)})),currentSeason:e.current_season?{id:e.current_season.id,name:e.current_season.name,slug:e.current_season.slug,active:e.current_season.status==="ACTIVE",providerRef:i(e.current_season.uuid)}:void 0,form:e.form&&e.form.length>0?{competitorId:e.id,results:e.form.map(t=>{const n=t.participants[0].id===e.uuid?t.participants[1]:t.participants[0],a=t.result[0]?.results.find(d=>d.position==="1")?.value,s=t.result[0]?.results.find(d=>d.position==="2")?.value,c=t.outcome==="win"?"W":t.outcome==="draw"?"D":"L";return{matchId:t.id,result:c,score:a&&s?`${a}-${s}`:void 0,opponent:{id:n.id,name:n.name,logo:n.display_asset?.url},date:new Date(t.start_time),competition:t.competition?{id:t.competition.id,name:t.competition.name}:void 0}}),formString:e.form.map(t=>t.outcome==="win"?"W":t.outcome==="draw"?"D":"L").join("")}:void 0,providerRef:i(e.uuid)}}function de(e){const t=e.player;return{id:t.id,name:t.name,slug:t.slug,position:t.position,shirtNumber:e.shirt_number,country:t.country?{id:t.country.id,name:t.country.name,code:t.country.code??void 0,flag:t.country.assets?.flag?.url,providerRef:i(t.country.uuid)}:void 0,gender:t.gender,birthdate:t.birthdate,profile:{height:t.profile?.height??void 0,weight:t.profile?.weight??void 0},assets:t.assets?{photo:t.assets.thumb?.url,photoTransparent:t.assets.thumb_transparent_background?.url}:void 0,status:e.status,contractType:e.contract_type,contractUntil:e.contract_until??void 0,joinedDate:e.start_date??void 0,providerRef:i(t.id)}}function ce(e){return{id:e.id,name:e.name,slug:e.slug,country:e.country?{id:e.country.id,name:e.country.name,code:e.country.code??void 0,flag:e.country.assets?.flag?.url,providerRef:i(e.country.uuid)}:void 0,birthdate:e.birthdate,providerRef:i(e.uuid)}}function ue(e){return{teamId:e.team.id,teamName:e.team.name,coach:e.coach?ce(e.coach):void 0,players:e.players.map(de)}}function le(e){const t=parseInt(e,10);return isNaN(t)?void 0:t}function r(e,t){const o=e.find(n=>n.name===t);return o?le(o.value):void 0}function ge(e,t){const o=e.statistics;return{playerId:e.player.id,seasonId:e.season.id,teamId:t,appearances:r(o,"played"),started:r(o,"started"),substituteIn:r(o,"substitute_in"),substituteOut:r(o,"substitute_out"),minutes:r(o,"minutes"),minutesSubstitute:r(o,"minutes_substitute"),goals:r(o,"goals"),goalsSubstitute:r(o,"goals_substitute"),penaltyGoals:r(o,"penalty_goals"),ownGoals:r(o,"own_goals"),assists:r(o,"assists"),shots:r(o,"shots"),shotsOnTarget:r(o,"shots_on_target"),yellowCards:r(o,"yellow_cards"),redCards:r(o,"red_cards"),foulsCommitted:r(o,"fouls_committed"),penaltiesCommitted:r(o,"penalties_committed"),penaltiesMissed:r(o,"penalties_missed"),cleansheets:r(o,"cleansheets"),saves:r(o,"saves"),conceded:r(o,"conceded"),caughtBall:r(o,"caught_ball"),penaltiesReceived:r(o,"penalties_received"),offsides:r(o,"offsides"),rawStatistics:o.map(n=>({name:n.name,value:n.value}))}}async function L(e,t){const o=t||u(),{sportal365Sports:n}=o,{seasonIds:a,teamId:s,languageCode:c,next:d}=e,p=d??{revalidate:120},f={season_ids:a.join(","),team_id:s,language_code:c??n?.languageCode??"en"};console.log("[getFootballPlayerSeasonStatistics] Fetching player statistics:",{path:"/v2/statistics/players/season",params:f,teamId:s,seasonIds:a});const g=await l.get({path:"/v2/statistics/players/season",params:f,headers:{"Accept-Language":c??n?.languageCode??"en"},next:p,config:o});console.log("[getFootballPlayerSeasonStatistics] API response received:",{statisticsCount:g.statistics?.length??0,hasStatistics:!!g.statistics&&g.statistics.length>0});const _={};for(const h of g.statistics){const v=h.player.id;_[v]=ge(h,s),console.log("[getFootballPlayerSeasonStatistics] Transformed stats for player:",{playerId:v,playerName:h.player.name,hasStats:!!_[v]})}return console.log("[getFootballPlayerSeasonStatistics] Returning stats map with",Object.keys(_).length,"players"),_}async function me(e,t,o){const n=o||u(),{sportal365Sports:a}=n,s=await l.get({path:`/v2/teams/${e}`,params:{language_code:t?.languageCode??a?.languageCode??"en",optional_data:"form"},headers:{"Accept-Language":t?.languageCode??a?.languageCode??"en"},next:t?.next,config:n});return re(s)}async function pe(e,t,o){const n=o||u(),{sportal365Sports:a}=n;console.log("[getFootballTeamSquad] Fetching squad for team:",e,"with options:",t);const s=await l.get({path:`/v2/teams/${e}/squad`,params:{language_code:t?.languageCode??a?.languageCode??"en",memberStatus:t?.memberStatus??"ACTIVE"},headers:{"Accept-Language":t?.languageCode??a?.languageCode??"en"},next:t?.next,config:n});console.log("[getFootballTeamSquad] Squad API response:",{teamId:s.team?.id,teamName:s.team?.name,playerCount:s.players?.length,hasCoach:!!s.coach});const c=ue(s);if(t?.seasonIds&&t.seasonIds.length>0){console.log("[getFootballTeamSquad] Fetching player statistics for seasonIds:",t.seasonIds);try{const d=await L({seasonIds:t.seasonIds,teamId:e,languageCode:t.languageCode,next:t.next},n);console.log("[getFootballTeamSquad] Player statistics received:",{playerIdsWithStats:Object.keys(d),statsCount:Object.keys(d).length});let p=0;for(const f of c.players){const g=d[f.id];g?(f.seasonStatistics=g,p++,console.log("[getFootballTeamSquad] Attached stats to player:",f.id,f.name)):console.log("[getFootballTeamSquad] No stats found for player:",f.id,f.name)}console.log("[getFootballTeamSquad] Statistics attachment complete:",{totalPlayers:c.players.length,playersWithStats:p,playersWithoutStats:c.players.length-p})}catch(d){console.error("[getFootballTeamSquad] Failed to fetch player statistics:",{error:d instanceof Error?d.message:String(d),stack:d instanceof Error?d.stack:void 0,teamId:e,seasonIds:t.seasonIds})}}else console.log("[getFootballTeamSquad] No seasonIds provided, skipping player statistics fetch");return c}function fe(e){return{id:String(e.id),name:e.name,slug:e.slug,type:e.type,region:e.region,gender:e.gender,country:{id:String(e.country.id),name:e.country.name,flag:e.country.url_flag,providerRef:i(e.country.uuid)},seasons:e.seasons.map(t=>({id:String(t.id),name:t.name,slug:t.slug,active:t.active,providerRef:i(t.uuid)})),assets:e.url_logo?{logo:e.url_logo}:void 0,providerRef:i(e.uuid)}}function _e(e){const t=e.rounds.map(o=>({id:o.id,name:o.name,key:o.key,type:o.type,status:o.status,startDate:o.start_date,endDate:o.end_date,providerRef:i(o.uuid)}));return{id:e.stage.id,name:e.stage.name,slug:e.stage.slug,shortName:e.stage.short_name??void 0,type:e.stage.type,status:e.stage.status,coverage:e.stage.coverage,order:e.stage.order_in_season,startDate:e.stage.start_date,endDate:e.stage.end_date,rounds:t,providerRef:i(e.stage.uuid)}}function ye(e){const{season:t,stages:o}=e,{tournament:n}=t,a={id:n.id,name:n.name,slug:n.slug,type:n.type,region:n.region,gender:n.gender,country:{id:n.country.id,name:n.country.name,code:n.country.code??void 0,flag:n.country.assets?.flag?.url,providerRef:i(n.country.uuid)},assets:n.assets?.logo?.url?{logo:n.assets.logo.url}:void 0,providerRef:i(n.uuid)};return{id:t.id,name:t.name,slug:t.slug,active:t.status==="ACTIVE",status:t.status==="ACTIVE"?"ACTIVE":"INACTIVE",competition:a,stages:o.map(_e),providerRef:i(t.uuid)}}async function he(e,t,o){const n=o||u(),{sportal365Sports:a}=n,s=await l.get({path:`/tournaments/${e}`,params:{language_code:t?.languageCode??a?.languageCode??"en"},headers:{"Accept-Language":t?.languageCode??a?.languageCode??"en"},next:t?.next,config:n});return fe(s)}async function ve(e,t){const o=t||u(),{sportal365Sports:n}=o;if(!e?.seasonId&&!e?.competitionId)throw new Error("Either seasonId or competitionId must be provided");const a={language_code:e?.languageCode??n?.languageCode??"en"};e.seasonId?a.season_id=e.seasonId:e.competitionId&&(a.tournament_id=e.competitionId,e.status&&(a.status=e.status));const s=await l.get({path:"/v2/seasons/details",params:a,headers:{"Accept-Language":e?.languageCode??n?.languageCode??"en"},next:e?.next,config:o});return ye(s)}function C(e){return{championsleague:"championsLeague",europaleague:"europaLeague",conferenceleague:"conferenceLeague",relegation:"relegation",playoff:"playoff",promotion:"promotion"}[e.toLowerCase()]??e.toLowerCase().replace(/_/g,"")}function Se(e){const t=e.toLowerCase();return t==="relegation"?"BOTTOM":t==="playoff"?"MIDDLE":"TOP"}function Ce(e,t){if(!t||t.length===0)return;const o=t.map(a=>{const s=a.event,c=s.home_team.id===e,d=c?s.away_team:s.home_team,p=`${s.goal_home}-${s.goal_away}`;return{matchId:s.id.toString(),result:a.outcome,score:p,homeAway:c?"HOME":"AWAY",opponent:{id:d.id.toString(),name:d.name,logo:d.url_logo},date:new Date(s.start_time),competition:void 0}}),n=o.map(a=>a.result).join("");return{competitorId:e.toString(),results:o,formString:n}}function Te(e){return{key:C(e.code),name:e.name,position:Se(e.type)}}function be(e){const t={played:e.played,won:e.wins,drawn:e.draws,lost:e.defeits,goalsFor:e.goals_for,goalsAgainst:e.goals_against,goalDifference:e.goals_for-e.goals_against,points:e.points},o=e.rules?.length>0?e.rules.map(a=>C(a.code)):void 0,n=Ce(e.team.id,e.team.form??[]);return{rank:e.rank,competitor:{id:e.team.id.toString(),name:e.team.name,shortName:e.team.short_name??void 0,logo:e.team.url_logo},stats:t,form:n,rules:o}}function Ae(e){const t=e.map(be),o=new Map;for(const n of e)if(n.rules)for(const a of n.rules){const s=C(a.code);o.has(s)||o.set(s,Te(a))}return{entries:t,metadata:{legend:Array.from(o.values())}}}async function Ie(e,t){const o=t||u(),{sportal365Sports:n}=o,a=e.expand?.join(","),s=await l.get({path:`/tournaments/seasons/stages/${e.stageId}/standing`,params:{expand:a,language_code:e.languageCode??n?.languageCode??"en"},headers:{"Accept-Language":e.languageCode??n?.languageCode??"en"},next:e.next,config:o});return!s||s.length===0?{entries:[],metadata:{legend:[]}}:Ae(s)}exports.SPORTAL365_SPORTS_SEARCH_DOMAIN=P;exports.SPORTAL365_STATISTICS_DOMAIN=N;exports.addProviderRef=H;exports.createHttpClient=O;exports.footballHttp=l;exports.getConfig=u;exports.getFootballCompetition=he;exports.getFootballMatch=ee;exports.getFootballMatchCommentary=se;exports.getFootballMatchEvents=te;exports.getFootballMatchLineups=oe;exports.getFootballMatchOdds=ne;exports.getFootballMatchStatistics=ae;exports.getFootballMatches=ie;exports.getFootballPlayerSeasonStatistics=L;exports.getFootballSeasonDetails=ve;exports.getFootballStandings=Ie;exports.getFootballTeam=me;exports.getFootballTeamSquad=pe;exports.getProviderRefId=M;exports.isConfigured=D;exports.setConfig=R;exports.toProviderRefArray=i;
|