fansunited-data-layer 0.5.3 → 0.5.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/api/sportal365-sports/football/statistics/index.d.ts.map +1 -1
- package/api/sportal365-sports/football/teams/index.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-DMVprv64.js → index-35LeZQYN.js} +118 -88
- package/{index-DuWouLes.cjs → index-Hi8oKjxO.cjs} +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/api/sportal365-sports/football/statistics/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,6BAA6B,CAAC;AAClF,OAAO,EAAa,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErE,OAAO,KAAK,EAER,wCAAwC,EAC3C,MAAM,uBAAuB,CAAC;AAI/B,YAAY,EAAE,wCAAwC,EAAE,MAAM,uBAAuB,CAAC;AAEtF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAsB,iCAAiC,CACnD,OAAO,EAAE,wCAAwC,EACjD,MAAM,CAAC,EAAE,eAAe,GACzB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,8BAA8B,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/api/sportal365-sports/football/statistics/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,6BAA6B,CAAC;AAClF,OAAO,EAAa,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErE,OAAO,KAAK,EAER,wCAAwC,EAC3C,MAAM,uBAAuB,CAAC;AAI/B,YAAY,EAAE,wCAAwC,EAAE,MAAM,uBAAuB,CAAC;AAEtF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAsB,iCAAiC,CACnD,OAAO,EAAE,wCAAwC,EACjD,MAAM,CAAC,EAAE,eAAe,GACzB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,8BAA8B,CAAC,CAAC,CA4DzD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/api/sportal365-sports/football/teams/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACrF,OAAO,EAAa,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErE,OAAO,KAAK,EAAkB,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,KAAK,EAAoB,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAKnF,YAAY,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAC3D,YAAY,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAEjE;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,eAAe,CACjC,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,sBAAsB,EAChC,MAAM,CAAC,EAAE,eAAe,GACzB,OAAO,CAAC,kBAAkB,CAAC,CAkB7B;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,oBAAoB,CACtC,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,2BAA2B,EACrC,MAAM,CAAC,EAAE,eAAe,GACzB,OAAO,CAAC,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/api/sportal365-sports/football/teams/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACrF,OAAO,EAAa,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErE,OAAO,KAAK,EAAkB,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,KAAK,EAAoB,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAKnF,YAAY,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAC3D,YAAY,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAEjE;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,eAAe,CACjC,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,sBAAsB,EAChC,MAAM,CAAC,EAAE,eAAe,GACzB,OAAO,CAAC,kBAAkB,CAAC,CAkB7B;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,oBAAoB,CACtC,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,2BAA2B,EACrC,MAAM,CAAC,EAAE,eAAe,GACzB,OAAO,CAAC,aAAa,CAAC,CA0ExB"}
|
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-Hi8oKjxO.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-35LeZQYN.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-DuWouLes.cjs"),D=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:n}=o,s=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:s.join(","),language_code:e.languageCode??n?.languageCode??"en"},headers:{"Accept-Language":e.languageCode??n?.languageCode??"en"},next:e.next,config:o});return!i||i.length===0?{results:[],query:e.query}:{results:i.map(Te),query:e.query}}const Se=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 E(e){if(e)return{id:e.id,legacyId:e.legacy_id??void 0,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,translations:e.translations.map(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:E(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:E(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:E(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:E(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:E(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:E(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:E(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:E(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 Ee(e={},t){const o=t??m.getConfig(),n={};e.name&&(n.name=e.name),e.entityTypes&&e.entityTypes.length>0&&(n.entity_type=e.entityTypes.join(",")),e.sports&&e.sports.length>0&&(n.sport=e.sports.join(",")),e.eventStartTime&&(n.event_start_time=e.eventStartTime),e.ids&&e.ids.length>0&&(n.ids=e.ids.join(",")),e.competitionIds&&e.competitionIds.length>0&&(n.competition_ids=e.competitionIds.join(",")),e.domain&&(n.domain=e.domain),e.inputLanguage&&(n.input_language=e.inputLanguage),e.translationLanguage&&(n.translation_language=e.translationLanguage),e.limit!==void 0&&(n.limit=e.limit.toString()),e.offset!==void 0&&(n.offset=e.offset.toString());const s=await Se.get({path:"/suggest",params:n,next:e.next,config:o});return!s.results||s.results.length===0?{results:[],query:e.name}:{results:s.results.map(Ge),query:e.name}}const be=m.createHttpClient(m.SPORTAL365_STATISTICS_DOMAIN);function De(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 Ne(e,t){const o=t||m.getConfig(),n=e.next??{revalidate:600},s=await be.get({path:"/statistics/aggregate",params:{participant_ids:e.teamId,season_ids:e.seasonId,participant_type:"TEAM"},next:n,config:o});if(!s.data||s.data.length===0)throw new Error(`No statistics found for team ${e.teamId} in season ${e.seasonId}`);return De(s.data[0],e.seasonId)}function Ie(e){const t=e.replace(/\/$/,"");function o(n){return`${t}${n}`}return{async get(n){const s=n.config||m.getConfig(),{fansUnited:i}=s;if(!i)throw new Error("Fans United configuration is missing. Add 'fansUnited' with 'apiKey' and 'clientId' to your config.");if(!i.apiKey||!i.clientId)throw new Error("Fans United configuration requires both 'apiKey' and 'clientId'");const r=new URL(o(n.path));if(r.searchParams.set("key",i.apiKey),r.searchParams.set("client_id",i.clientId),n.params)for(const[d,u]of Object.entries(n.params))u!==void 0&&(Array.isArray(u)?u.length>0&&r.searchParams.set(d,u.join(",")):r.searchParams.set(d,u));const l=await fetch(r.toString(),{method:"GET",headers:{Accept:"application/json","Content-Type":"application/json",...n.headers},signal:AbortSignal.timeout(3e4),...n.next&&{next:n.next}});if(!l.ok){let d=`Fans United API error: ${l.status} ${l.statusText}`;try{const u=await l.text();u&&(d+=` - ${u}`)}catch(u){console.error("[Fans United HTTP] Failed to read error response body:",{error:u instanceof Error?u.message:String(u),status:l.status,statusText:l.statusText})}throw new Error(d)}return l.json()}}}const Le="https://football.fansunitedapi.com",b=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 n=await b.get({path:"/v1/competitions",params:o,config:t,next:e?.next});return Ue(n.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 n=o||m.getConfig(),s={};t?.lang&&(s.lang=t.lang);const i=await b.get({path:`/v1/competitions/${e}`,params:s,next:t?.next,config:n});return 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 n=o||m.getConfig(),s={};t?.lang&&(s.lang=t.lang);const i=await b.get({path:`/v1/teams/${e}`,params:s,next:t?.next,config:n});return 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 n=o||m.getConfig(),s={};t?.lang&&(s.lang=t.lang);const i=await b.get({path:`/v1/players/${e}`,params:s,next:t?.next,config:n});return Qe(i)}async function we(e,t){const o=t||m.getConfig(),n={};e?.lang&&(n.lang=e.lang),e?.playerIds&&(n.player_ids=e.playerIds),e?.countryId&&(n.country_id=e.countryId),e?.name&&(n.name=e.name),e?.scope&&(n.scope=e.scope),e?.limit!==void 0&&(n.limit=String(e.limit)),e?.page!==void 0&&(n.page=String(e.page)),e?.sortField&&(n.sort_field=e.sortField),e?.sortOrder&&(n.sort_order=e.sortOrder);const s=await b.get({path:"/v1/players",params:n,next:e?.next,config:o});return Xe(s)}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",n="Not Started";return e.finished_at?(t="finished",o="FINISHED",n="Finished"):e.started_at&&(t="live",o="LIVE",n="Live"),{code:t,name:n,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 nt(e){if(!e)return;const t=n=>n?{competitorOne:n.home_goals!==null?String(n.home_goals):"0",competitorTwo:n.away_goals!==null?String(n.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:nt(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 st(e){return ee(e.data)}function it(e){return e.data.map(ee)}async function rt(e,t,o){const n=o||m.getConfig(),s={};t?.lang&&(s.lang=t.lang);const i=await b.get({path:`/v1/matches/${e}`,params:s,next:t?.next,config:n});return st(i)}async function at(e,t){const o=t||m.getConfig(),n={};e?.lang&&(n.lang=e.lang),e?.competitions&&(n.competitions=e.competitions),e?.countries&&(n.countries=e.countries),e?.fromDate&&(n.from_date=e.fromDate),e?.toDate&&(n.to_date=e.toDate),e?.matches&&(n.matches=e.matches),e?.teams&&(n.teams=e.teams),e?.status&&(n.status=e.status),e?.limit!==void 0&&(n.limit=String(e.limit)),e?.page!==void 0&&(n.page=String(e.page)),e?.sortField&&(n.sort_field=e.sortField),e?.sortOrder&&(n.sort_order=e.sortOrder),e?.showDeleted!==void 0&&(n.show_deleted=e.showDeleted?"true":"false");const s=await b.get({path:"/v1/matches",params:n,next:e?.next,config:o});return it(s)}function K(e){return{id:e.id,name:e.name,code:e.country_code,flag:e.assets?.flag||void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function 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(),n={q:e.query.trim()},i=(e.entityTypes&&e.entityTypes.length>0?e.entityTypes:["competition","team","player"]).map(l=>{switch(l){case"team":return"teams";case"player":return"players";case"competition":return"competitions";default:return l}});n.entities=i.join(","),e.lang&&(n.lang=e.lang),e.limit&&(n.limit=String(e.limit));const r=await b.get({path:"/v1/search",params:n,next:e.next,config:o}),a=[];return r.data&&(r.data.competitions&&r.data.competitions.forEach(l=>{const d=V({...l,entity_type:"competition"});d&&a.push(d)}),r.data.teams&&r.data.teams.forEach(l=>{const d=V({...l,entity_type:"team"});d&&a.push(d)}),r.data.players&&r.data.players.forEach(l=>{const d=V({...l,entity_type:"player"});d&&a.push(d)})),a}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,n=t.filter(s=>{const i=s.competitorOne.id===e||s.competitorTwo.id===e,r=s.status.type==="NOT_STARTED",a=new Date(s.timing.kickoffTime)>=o;return i&&r&&a});return n.sort((s,i)=>new Date(s.timing.kickoffTime).getTime()-new Date(i.timing.kickoffTime).getTime()),n[0]}function gt(e,t){const o=new Date,n=t.filter(s=>{const i=s.competitorOne.id===e||s.competitorTwo.id===e,r=s.status.type==="FINISHED",a=new Date(s.timing.kickoffTime)<=o;return i&&r&&a});return n.sort((s,i)=>new Date(i.timing.kickoffTime).getTime()-new Date(s.timing.kickoffTime).getTime()),n[0]}function pt(e,t){const o=new Date;return t.filter(s=>{const i=s.competitorOne.id===e||s.competitorTwo.id===e,r=s.status.type==="NOT_STARTED"||s.status.type==="LIVE",a=new Date(s.timing.kickoffTime)>=o||s.status.type==="LIVE";return i&&r&&a}).sort((s,i)=>new Date(s.timing.kickoffTime).getTime()-new Date(i.timing.kickoffTime).getTime())}function yt(e,t){const o=new Date;return t.filter(s=>{const i=s.competitorOne.id===e||s.competitorTwo.id===e,r=s.status.type==="FINISHED",a=new Date(s.timing.kickoffTime)<=o;return i&&r&&a}).sort((s,i)=>new Date(i.timing.kickoffTime).getTime()-new Date(s.timing.kickoffTime).getTime())}function ht(e,t,o){const n=o.filter(r=>r.status.type==="FINISHED"),s=o.filter(r=>r.status.type==="NOT_STARTED"||r.status.type==="POSTPONED"),i=t.entries.map(r=>{const a=r.competitor.id,l=n.filter(f=>f.competitorOne.id===e&&f.competitorTwo.id===a||f.competitorOne.id===a&&f.competitorTwo.id===e),d=s.filter(f=>f.competitorOne.id===e&&f.competitorTwo.id===a||f.competitorOne.id===a&&f.competitorTwo.id===e);let u,c;return l.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}),d.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:r.rank,teamId:r.competitor.id,teamName:r.competitor.name,teamShortName:r.competitor.shortName,teamLogo:r.competitor.logo,gamesPlayed:r.stats.played??0,points:r.stats.points??0,homeResult: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,n)=>{const s=o.seasonStatistics?.goals??0,i=n.seasonStatistics?.goals??0;if(i!==s)return i-s;const r=o.seasonStatistics?.assists??0;return(n.seasonStatistics?.assists??0)-r}).slice(0,t)}function vt(e,t=10){return e.players.filter(o=>(o.seasonStatistics?.assists??0)>0).sort((o,n)=>{const s=o.seasonStatistics?.assists??0,i=n.seasonStatistics?.assists??0;if(i!==s)return i-s;const r=o.seasonStatistics?.goals??0;return(n.seasonStatistics?.goals??0)-r}).slice(0,t)}function St(e,t=10){return e.players.filter(o=>(o.seasonStatistics?.appearances??0)>0).sort((o,n)=>{const s=o.seasonStatistics?.appearances??0,i=n.seasonStatistics?.appearances??0;if(i!==s)return i-s;const r=o.seasonStatistics?.minutes??0;return(n.seasonStatistics?.minutes??0)-r}).slice(0,t)}function _t(e,t=10){return e.players.filter(o=>(o.seasonStatistics?.minutes??0)>0).sort((o,n)=>{const s=o.seasonStatistics?.minutes??0,i=n.seasonStatistics?.minutes??0;if(i!==s)return i-s;const r=o.seasonStatistics?.appearances??0;return(n.seasonStatistics?.appearances??0)-r}).slice(0,t)}function Ct(e,t=10){return e.players.filter(o=>(o.seasonStatistics?.cleansheets??0)>0).sort((o,n)=>{const s=o.seasonStatistics?.cleansheets??0,i=n.seasonStatistics?.cleansheets??0;if(i!==s)return i-s;const r=o.seasonStatistics?.appearances??0;return(n.seasonStatistics?.appearances??0)-r}).slice(0,t)}function At(e,t=10){return e.players.filter(o=>{const n=o.seasonStatistics?.yellowCards??0,s=o.seasonStatistics?.redCards??0;return n+s>0}).sort((o,n)=>{const s=o.seasonStatistics?.yellowCards??0,i=o.seasonStatistics?.redCards??0,r=n.seasonStatistics?.yellowCards??0,a=n.seasonStatistics?.redCards??0,l=s+i*3,d=r+a*3;return d!==l?d-l:a!==i?a-i:r-s}).slice(0,t)}function N(e){const t=new Map,o=new Map;return e.forEach(n=>{!n.mainEvents||n.mainEvents.length===0||n.mainEvents.forEach(s=>{if(s.primaryPlayer){const i=s.primaryPlayer.id;t.has(i)||t.set(i,{playerId:s.primaryPlayer.id,seasonId:"",teamId:"",goals:0,assists:0,yellowCards:0,redCards:0,appearances:0});const r=t.get(i);o.has(i)||o.set(i,new Set),o.get(i).add(n.id),(s.type==="GOAL"||s.type==="PENALTY_GOAL")&&(r.goals=(r.goals??0)+1),s.type==="YELLOW_CARD"&&(r.yellowCards=(r.yellowCards??0)+1),(s.type==="RED_CARD"||s.type==="YELLOW_RED_CARD")&&(r.redCards=(r.redCards??0)+1)}if(s.secondaryPlayer&&(s.type==="GOAL"||s.type==="PENALTY_GOAL")){const i=s.secondaryPlayer.id;t.has(i)||t.set(i,{playerId:s.secondaryPlayer.id,seasonId:"",teamId:"",goals:0,assists:0,yellowCards:0,redCards:0,appearances:0});const r=t.get(i);r.assists=(r.assists??0)+1,o.has(i)||o.set(i,new Set),o.get(i).add(n.id)}})}),o.forEach((n,s)=>{const i=t.get(s);i&&i.appearances!==void 0&&(i.appearances=n.size)}),t}function U(e){return Array.from(e.values()).map(t=>({...t,totalCards:(t.yellowCards??0)+(t.redCards??0)}))}function te(e,t=10){const o=N(e);return U(o).filter(s=>(s.goals??0)>0).sort((s,i)=>{const r=s.goals??0,a=i.goals??0;if(a!==r)return a-r;const l=s.assists??0;return(i.assists??0)-l}).slice(0,t)}function oe(e,t=10){const o=N(e);return U(o).filter(s=>(s.assists??0)>0).sort((s,i)=>{const r=s.assists??0,a=i.assists??0;if(a!==r)return a-r;const l=s.goals??0;return(i.goals??0)-l}).slice(0,t)}function ne(e,t=10){const o=N(e);return U(o).filter(s=>(s.totalCards??0)>0).sort((s,i)=>{const r=(s.yellowCards??0)+(s.redCards??0)*3,a=(i.yellowCards??0)+(i.redCards??0)*3;if(a!==r)return a-r;const l=s.redCards??0,d=i.redCards??0;if(d!==l)return d-l;const u=s.yellowCards??0;return(i.yellowCards??0)-u}).slice(0,t)}function se(e,t=10){const o=N(e);return U(o).filter(s=>(s.goals??0)+(s.assists??0)>0).sort((s,i)=>{const r=(s.goals??0)+(s.assists??0),a=(i.goals??0)+(i.assists??0);if(a!==r)return a-r;const l=s.goals??0,d=i.goals??0;if(d!==l)return d-l;const u=s.assists??0;return(i.assists??0)-u}).slice(0,t)}function ie(e){const t=N(e);return U(t).sort((n,s)=>{const i=n.appearances??0,r=s.appearances??0;if(r!==i)return r-i;const a=(n.goals??0)+(n.assists??0);return(s.goals??0)+(s.assists??0)-a})}function Ft(e,t=10){return D.useMemo(()=>te(e,t),[e,t])}function Mt(e,t=10){return D.useMemo(()=>oe(e,t),[e,t])}function Ot(e,t=10){return D.useMemo(()=>ne(e,t),[e,t])}function Rt(e,t=10){return D.useMemo(()=>se(e,t),[e,t])}function Pt(e){return D.useMemo(()=>ie(e),[e])}function re(e){return D.useMemo(()=>N(e),[e])}function Gt(e,t){const o=re(e);return D.useMemo(()=>o.get(t),[o,t])}const ae=["GOAL","PENALTY_GOAL","OWN_GOAL"];function A(e,t){return t>0?e/t*100:0}function H(e,t){return t>0?e/t:0}function Et(e,t=!1,o=2){return t?`${Math.round(e)}%`:Number.isInteger(e)?e.toString():e.toFixed(o)}function bt(e,t){const o=typeof e=="string"?parseFloat(e):e;if(isNaN(o)||t===0)return"0";const n=(o/t).toFixed(1);return`${o} (${n} avg)`}function Dt(e,t){const o=typeof e=="string"?parseFloat(e):e;return isNaN(o)||t===0?"0.0":(o/t).toFixed(1)}function Nt(e){const t=parseFloat(e);return isNaN(t)?"0%":`${Math.round(t)}%`}function ce(e,t,o){if(e.status?.type!=="FINISHED"||!e.score)return null;const n=parseInt(e.score.competitorOne||"0"),s=parseInt(e.score.competitorTwo||"0"),i=o?n:s,r=o?s:n;let a=null,l=null;const d=e.score.breakdown?.halfTime;if(d){const p=parseInt(d.competitorOne||"0"),y=parseInt(d.competitorTwo||"0");a=o?p:y,l=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:r,halfTimeGoalsFor:a,halfTimeGoalsAgainst:l,cornersFor:c,cornersAgainst:f,isWin:i>r,isDraw:i===r,isLoss:i<r}}function q(e,t){return e.competitorOne.id===t}function le(e,t){return e.competitorTwo.id===t}function 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 n=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 s=0,i=0,r=0,a=0,l=0;n.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;a+=y,l+=T,y>T?s++:T>y?i++:r++});const d=n.length;return{totalMatches:d,homeTeamWins:s,awayTeamWins:i,draws:r,homeTeamGoals:a,awayTeamGoals:l,homeTeamWinPercentage:d>0?s/d*100:0,awayTeamWinPercentage:d>0?i/d*100:0,drawPercentage:d>0?r/d*100:0,homeTeamAvgGoals:d>0?a/d:0,awayTeamAvgGoals:d>0?l/d:0}}function Bt(e,t,o,n=5){return e.filter(i=>{if(i.status?.type!=="FINISHED"||!i.score)return!1;const r=i.competitorOne.id===t||i.competitorTwo.id===t,a=i.competitorOne.id===o||i.competitorTwo.id===o;return r&&a}).sort((i,r)=>new Date(r.timing.kickoffTime).getTime()-new Date(i.timing.kickoffTime).getTime()).slice(0,n).map(i=>{const r=parseInt(i.score?.competitorOne||"0"),a=parseInt(i.score?.competitorTwo||"0"),l=i.competitorOne.id===t,d=l?r:a,u=l?a:r;let c;return d>u?c="home":u>d?c="away":c="draw",{id:i.id,date:new Date(i.timing.kickoffTime).toLocaleDateString("en-GB",{day:"numeric",month:"short",year:"numeric"}),homeTeamName:i.competitorOne.name,awayTeamName:i.competitorTwo.name,homeTeamLogo:i.competitorOne.assets?.logo,awayTeamLogo:i.competitorTwo.assets?.logo,homeScore:r,awayScore:a,venue:i.venue?.name,winner:c}})}function $t(e,t,o){return e.filter(n=>{const s=n.competitorOne.id===t,i=n.competitorTwo.id===t;return!s&&!i?!1:o==="home"?s:i}).map(n=>{const s=n.competitorOne.id===t;return ce(n,t,s)}).filter(n=>n!==null)}function J(e,t,o,n){let s=0;for(const i of e){const r=i.competitorOne.id===t,a=i.competitorTwo.id===t;if(!r&&!a||o==="home"&&!r||o==="away"&&!a||i.status?.type!=="FINISHED")continue;const l=i.mainEvents;if(!l||!Array.isArray(l))continue;const d=l.filter(y=>y.type&&ae.includes(y.type)).sort((y,T)=>{const R=y.minute??0,C=T.minute??0;return R!==C?R-C:(y.injuryMinute??0)-(T.injuryMinute??0)});if(d.length===0)continue;const u=d[0],c=r?"ONE":"TWO",f=u.type==="OWN_GOAL";let p;f?p=u.competitorPosition!==c:p=u.competitorPosition===c,(n==="scored"&&p||n==="conceded"&&!p)&&s++}return s}function xt(e,t,o){let n=0;for(const s of e){const i=s.competitorOne.id===t,r=s.competitorTwo.id===t;if(!i&&!r||o==="home"&&!i||o==="away"&&!r||s.status?.type!=="FINISHED")continue;const a=s.mainEvents;a&&Array.isArray(a)&&n++}return n}function Wt(e,t,o){const n=$t(e,t,o),s=n.length;if(s===0)return{played:0,goalsForPerMatch:0,cleanSheets:0,wonToNil:0,scoringRate:0,scoredInBothHalves:0,scoredFirst:0,leadingAtHalfTime:0,goalsAgainstPerMatch:0,failedToScore:0,lostToNil:0,concedingRate:0,concededInBothHalves:0,concededFirst:0,losingAtHalfTime:0,avgCornersFor:0,avgCornersAgainst:0};const i=n.reduce((g,S)=>g+S.goalsFor,0),r=n.reduce((g,S)=>g+S.goalsAgainst,0),a=n.filter(g=>g.goalsAgainst===0).length,l=n.filter(g=>g.isWin&&g.goalsAgainst===0).length,d=n.filter(g=>g.goalsFor>0).length,u=n.filter(g=>g.goalsFor===0).length,c=n.filter(g=>g.isLoss&&g.goalsFor===0).length,f=n.filter(g=>g.goalsAgainst>0).length,p=n.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=n.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:s,goalsForPerMatch:H(i,s),cleanSheets:A(a,s),wonToNil:A(l,s),scoringRate:A(d,s),scoredInBothHalves:A(T,y),scoredFirst:A(R,C),leadingAtHalfTime:A(F,y),goalsAgainstPerMatch:H(r,s),failedToScore:A(u,s),lostToNil:A(c,s),concedingRate:A(f,s),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 n=o.competitorOne.id===t,s=parseInt(o.score?.competitorOne||"0"),i=parseInt(o.score?.competitorTwo||"0"),r=s+i,a=o.periods;let l=null;if(a&&Array.isArray(a)){const d=a.find(u=>u.type==="FIRST_HALF"||u.type==="1ST_HALF");if(d?.score){const u=parseInt(d.score.competitorOne||"0"),c=parseInt(d.score.competitorTwo||"0");l=u+c}}return{totalGoals:r,halfTimeGoals:l,isHome:n}})}function h(e,t){return e.length===0?0:e.filter(n=>n>t).length/e.length*100}function Vt(e,t){const o=qt(e,t),n=o.filter(c=>c.isHome),s=o.filter(c=>!c.isHome),i=o.map(c=>c.totalGoals),r=n.map(c=>c.totalGoals),a=s.map(c=>c.totalGoals),l=o.filter(c=>c.halfTimeGoals!==null).map(c=>c.halfTimeGoals),d=n.filter(c=>c.halfTimeGoals!==null).map(c=>c.halfTimeGoals),u=s.filter(c=>c.halfTimeGoals!==null).map(c=>c.halfTimeGoals);return{over05:{home:h(r,.5),total:h(i,.5),away:h(a,.5)},over15:{home:h(r,1.5),total:h(i,1.5),away:h(a,1.5)},over25:{home:h(r,2.5),total:h(i,2.5),away:h(a,2.5)},over35:{home:h(r,3.5),total:h(i,3.5),away:h(a,3.5)},over45:{home:h(r,4.5),total:h(i,4.5),away:h(a,4.5)},over55:{home:h(r,5.5),total:h(i,5.5),away:h(a,5.5)},over05HT:{home:h(d,.5),total:h(l,.5),away:h(u,.5)},over15HT:{home:h(d,1.5),total:h(l,1.5),away:h(u,1.5)},over25HT:{home:h(d,2.5),total:h(l,2.5),away:h(u,2.5)}}}function de(e,t){const o=e.competitorOne.id===t,n=e.competitorTwo.id===t;if(!o&&!n||!e.score)return null;const s=parseInt(o?e.score.competitorOne||"0":e.score.competitorTwo||"0"),i=parseInt(o?e.score.competitorTwo||"0":e.score.competitorOne||"0");let r;return s>i?r="W":s<i?r="L":r="D",{result:{score:`${s}:${i}`,result:r,isHome:o},isHome:o}}function jt(e,t,o,n,s,i){const r=t?.entries.find(G=>G.competitor.id===e),a=o?.entries.find(G=>G.competitor.id===e),l=n?.entries.find(G=>G.competitor.id===e),d=s?.entries.find(G=>G.competitor.id===e),u=i?.entries.find(G=>G.competitor.id===e);if(!r)return null;const c=a?.stats?.goalsFor??0,f=l?.stats?.goalsFor??0,p=r?.stats?.goalsFor??0,y=d?.stats?.goalsAgainst??0,T=u?.stats?.goalsAgainst??0,R=r?.stats?.goalsAgainst??0,C=a?.stats?.played??0,F=l?.stats?.played??0,P=r?.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,n){const s=e.filter(r=>{const a=r.competitorOne.id===t,l=r.competitorTwo.id===t;return!(!a&&!l||r.status?.type!=="FINISHED"||n==="home"&&!a||n==="away"&&!l)}).sort((r,a)=>new Date(a.timing.kickoffTime).getTime()-new Date(r.timing.kickoffTime).getTime());if(s.length===0)return null;let i=0;for(const r of s){const a=r.competitorOne.id===t;if(o(r,t,a))i++;else break}return i>0?i:null}const v={win:(e,t,o)=>{const n=parseInt(o?e.score?.competitorOne||"0":e.score?.competitorTwo||"0"),s=parseInt(o?e.score?.competitorTwo||"0":e.score?.competitorOne||"0");return n>s},draw:e=>e.score?.competitorOne===e.score?.competitorTwo,loss:(e,t,o)=>{const n=parseInt(o?e.score?.competitorOne||"0":e.score?.competitorTwo||"0"),s=parseInt(o?e.score?.competitorTwo||"0":e.score?.competitorOne||"0");return n<s},noWin:(e,t,o)=>!v.win(e,t,o),noDraw:e=>!v.draw(e),noDefeat:(e,t,o)=>!v.loss(e,t,o),scored:(e,t,o)=>parseInt(o?e.score?.competitorOne||"0":e.score?.competitorTwo||"0")>=1,conceded:(e,t,o)=>parseInt(o?e.score?.competitorTwo||"0":e.score?.competitorOne||"0")>=1,noGoalScored:(e,t,o)=>!v.scored(e,t,o),noGoalConceded:(e,t,o)=>!v.conceded(e,t,o),over25:e=>parseInt(e.score?.competitorOne||"0")+parseInt(e.score?.competitorTwo||"0")>2,under25:e=>parseInt(e.score?.competitorOne||"0")+parseInt(e.score?.competitorTwo||"0")<3,scoredTwice:(e,t,o)=>parseInt(o?e.score?.competitorOne||"0":e.score?.competitorTwo||"0")>=2,concededTwice:(e,t,o)=>parseInt(o?e.score?.competitorTwo||"0":e.score?.competitorOne||"0")>=2};function 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 n=k(e,t,"home"),s=k(e,t),i=k(e,o,"away"),r=k(e,o);return[{label:"Consecutive wins",homeTeam:{home:n.win,total:s.win},awayTeam:{total:r.win,home:i.win},colorType:"neutral"},{label:"Consecutive draws",homeTeam:{home:n.draw,total:s.draw},awayTeam:{total:r.draw,home:i.draw},colorType:"neutral"},{label:"Consecutive defeats",homeTeam:{home:n.loss,total:s.loss},awayTeam:{total:r.loss,home:i.loss},colorType:"neutral"},{label:"No win",homeTeam:{home:n.noWin,total:s.noWin},awayTeam:{total:r.noWin,home:i.noWin},colorType:"negative"},{label:"No draw",homeTeam:{home:n.noDraw,total:s.noDraw},awayTeam:{total:r.noDraw,home:i.noDraw},colorType:"neutral"},{label:"No defeat",homeTeam:{home:n.noDefeat,total:s.noDefeat},awayTeam:{total:r.noDefeat,home:i.noDefeat},colorType:"positive"},{label:"Scored at least once",homeTeam:{home:n.scored,total:s.scored},awayTeam:{total:r.scored,home:i.scored},colorType:"positive"},{label:"Conceded at least once",homeTeam:{home:n.conceded,total:s.conceded},awayTeam:{total:r.conceded,home:i.conceded},colorType:"negative"},{label:"No goal scored",homeTeam:{home:n.noGoalScored,total:s.noGoalScored},awayTeam:{total:r.noGoalScored,home:i.noGoalScored},colorType:"neutral"},{label:"No goal conceded",homeTeam:{home:n.noGoalConceded,total:s.noGoalConceded},awayTeam:{total:r.noGoalConceded,home:i.noGoalConceded},colorType:"neutral"},{label:"GS + GC over 2.5",homeTeam:{home:n.over25,total:s.over25},awayTeam:{total:r.over25,home:i.over25},colorType:"neutral"},{label:"GS + GC under 2.5",homeTeam:{home:n.under25,total:s.under25},awayTeam:{total:r.under25,home:i.under25},colorType:"neutral"},{label:"Scored at least twice",homeTeam:{home:n.scoredTwice,total:s.scoredTwice},awayTeam:{total:r.scoredTwice,home:i.scoredTwice},colorType:"positive"},{label:"Conceded at least twice",homeTeam:{home:n.concededTwice,total:s.concededTwice},awayTeam:{total:r.concededTwice,home:i.concededTwice},colorType:"negative"}]}function Q(e,t){const o=new Map;return e.forEach(n=>{if(n.status?.type!=="FINISHED")return;const s=de(n,t);if(!s)return;const i=s.isHome?n.competitorTwo.id:n.competitorOne.id,r=s.isHome?n.competitorTwo:n.competitorOne,a=o.get(i)||{opponentId:i,opponentName:r.name,opponentLogo:r.assets?.logo};s.isHome?a.homeResult=s.result:a.awayResult=s.result,o.set(i,a)}),o}function Kt(e,t,o,n,s,i,r){const a=Q(e,t),l=Q(e,o),d=new Set([...a.keys(),...l.keys(),t,o]),u=[];return d.forEach(c=>{const f=a.get(c),p=l.get(c);if(!f&&!p&&c!==t&&c!==o)return;let y,T;c===t?(y=n,T=i):c===o?(y=s,T=r):(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=ae;exports.aggregatePlayerStatisticsFromMatches=N;exports.analyzeMatch=ce;exports.calcAverage=H;exports.calcPercentage=A;exports.calculateH2HStats=Ut;exports.calculateStreak=_;exports.formatAsAverage=Dt;exports.formatPossessionPercentage=Nt;exports.formatStatValue=Et;exports.formatWithAverage=bt;exports.getActiveSeason=mt;exports.getAllPlayerStatisticsFromMatches=ie;exports.getFansUnitedFootballCompetition=qe;exports.getFansUnitedFootballCompetitions=Be;exports.getFansUnitedFootballMatch=rt;exports.getFansUnitedFootballMatches=at;exports.getFansUnitedFootballPlayer=Ze;exports.getFansUnitedFootballPlayers=we;exports.getFansUnitedFootballSearch=ut;exports.getFansUnitedFootballTeam=Ke;exports.getMatchResult=de;exports.getMostCardedPlayersFromMatches=ne;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=Ne;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=se;exports.getTopScorersFromMatches=te;exports.isMatchFinished=Lt;exports.isTeamAway=le;exports.isTeamHome=q;exports.isTeamInMatch=It;exports.search=Ee;exports.searchFootball=ve;exports.streakFilters=v;exports.useAllPlayerStatisticsFromMatches=Pt;exports.useMostCardedPlayersFromMatches=Ot;exports.usePlayerStatistics=Gt;exports.usePlayerStatisticsMap=re;exports.useTopAssistersFromMatches=Mt;exports.useTopGoalContributorsFromMatches=Rt;exports.useTopScorersFromMatches=Ft;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=require("./index-Hi8oKjxO.cjs"),D=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:n}=o,s=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:s.join(","),language_code:e.languageCode??n?.languageCode??"en"},headers:{"Accept-Language":e.languageCode??n?.languageCode??"en"},next:e.next,config:o});return!i||i.length===0?{results:[],query:e.query}:{results:i.map(Te),query:e.query}}const Se=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 E(e){if(e)return{id:e.id,legacyId:e.legacy_id??void 0,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,translations:e.translations.map(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:E(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:E(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:E(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:E(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:E(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:E(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:E(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:E(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 Ee(e={},t){const o=t??m.getConfig(),n={};e.name&&(n.name=e.name),e.entityTypes&&e.entityTypes.length>0&&(n.entity_type=e.entityTypes.join(",")),e.sports&&e.sports.length>0&&(n.sport=e.sports.join(",")),e.eventStartTime&&(n.event_start_time=e.eventStartTime),e.ids&&e.ids.length>0&&(n.ids=e.ids.join(",")),e.competitionIds&&e.competitionIds.length>0&&(n.competition_ids=e.competitionIds.join(",")),e.domain&&(n.domain=e.domain),e.inputLanguage&&(n.input_language=e.inputLanguage),e.translationLanguage&&(n.translation_language=e.translationLanguage),e.limit!==void 0&&(n.limit=e.limit.toString()),e.offset!==void 0&&(n.offset=e.offset.toString());const s=await Se.get({path:"/suggest",params:n,next:e.next,config:o});return!s.results||s.results.length===0?{results:[],query:e.name}:{results:s.results.map(Ge),query:e.name}}const be=m.createHttpClient(m.SPORTAL365_STATISTICS_DOMAIN);function De(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 Ne(e,t){const o=t||m.getConfig(),n=e.next??{revalidate:600},s=await be.get({path:"/statistics/aggregate",params:{participant_ids:e.teamId,season_ids:e.seasonId,participant_type:"TEAM"},next:n,config:o});if(!s.data||s.data.length===0)throw new Error(`No statistics found for team ${e.teamId} in season ${e.seasonId}`);return De(s.data[0],e.seasonId)}function Ie(e){const t=e.replace(/\/$/,"");function o(n){return`${t}${n}`}return{async get(n){const s=n.config||m.getConfig(),{fansUnited:i}=s;if(!i)throw new Error("Fans United configuration is missing. Add 'fansUnited' with 'apiKey' and 'clientId' to your config.");if(!i.apiKey||!i.clientId)throw new Error("Fans United configuration requires both 'apiKey' and 'clientId'");const r=new URL(o(n.path));if(r.searchParams.set("key",i.apiKey),r.searchParams.set("client_id",i.clientId),n.params)for(const[d,u]of Object.entries(n.params))u!==void 0&&(Array.isArray(u)?u.length>0&&r.searchParams.set(d,u.join(",")):r.searchParams.set(d,u));const l=await fetch(r.toString(),{method:"GET",headers:{Accept:"application/json","Content-Type":"application/json",...n.headers},signal:AbortSignal.timeout(3e4),...n.next&&{next:n.next}});if(!l.ok){let d=`Fans United API error: ${l.status} ${l.statusText}`;try{const u=await l.text();u&&(d+=` - ${u}`)}catch(u){console.error("[Fans United HTTP] Failed to read error response body:",{error:u instanceof Error?u.message:String(u),status:l.status,statusText:l.statusText})}throw new Error(d)}return l.json()}}}const Le="https://football.fansunitedapi.com",b=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 n=await b.get({path:"/v1/competitions",params:o,config:t,next:e?.next});return Ue(n.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 n=o||m.getConfig(),s={};t?.lang&&(s.lang=t.lang);const i=await b.get({path:`/v1/competitions/${e}`,params:s,next:t?.next,config:n});return 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 n=o||m.getConfig(),s={};t?.lang&&(s.lang=t.lang);const i=await b.get({path:`/v1/teams/${e}`,params:s,next:t?.next,config:n});return 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 n=o||m.getConfig(),s={};t?.lang&&(s.lang=t.lang);const i=await b.get({path:`/v1/players/${e}`,params:s,next:t?.next,config:n});return Qe(i)}async function we(e,t){const o=t||m.getConfig(),n={};e?.lang&&(n.lang=e.lang),e?.playerIds&&(n.player_ids=e.playerIds),e?.countryId&&(n.country_id=e.countryId),e?.name&&(n.name=e.name),e?.scope&&(n.scope=e.scope),e?.limit!==void 0&&(n.limit=String(e.limit)),e?.page!==void 0&&(n.page=String(e.page)),e?.sortField&&(n.sort_field=e.sortField),e?.sortOrder&&(n.sort_order=e.sortOrder);const s=await b.get({path:"/v1/players",params:n,next:e?.next,config:o});return Xe(s)}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",n="Not Started";return e.finished_at?(t="finished",o="FINISHED",n="Finished"):e.started_at&&(t="live",o="LIVE",n="Live"),{code:t,name:n,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 nt(e){if(!e)return;const t=n=>n?{competitorOne:n.home_goals!==null?String(n.home_goals):"0",competitorTwo:n.away_goals!==null?String(n.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:nt(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 st(e){return ee(e.data)}function it(e){return e.data.map(ee)}async function rt(e,t,o){const n=o||m.getConfig(),s={};t?.lang&&(s.lang=t.lang);const i=await b.get({path:`/v1/matches/${e}`,params:s,next:t?.next,config:n});return st(i)}async function at(e,t){const o=t||m.getConfig(),n={};e?.lang&&(n.lang=e.lang),e?.competitions&&(n.competitions=e.competitions),e?.countries&&(n.countries=e.countries),e?.fromDate&&(n.from_date=e.fromDate),e?.toDate&&(n.to_date=e.toDate),e?.matches&&(n.matches=e.matches),e?.teams&&(n.teams=e.teams),e?.status&&(n.status=e.status),e?.limit!==void 0&&(n.limit=String(e.limit)),e?.page!==void 0&&(n.page=String(e.page)),e?.sortField&&(n.sort_field=e.sortField),e?.sortOrder&&(n.sort_order=e.sortOrder),e?.showDeleted!==void 0&&(n.show_deleted=e.showDeleted?"true":"false");const s=await b.get({path:"/v1/matches",params:n,next:e?.next,config:o});return it(s)}function K(e){return{id:e.id,name:e.name,code:e.country_code,flag:e.assets?.flag||void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function 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(),n={q:e.query.trim()},i=(e.entityTypes&&e.entityTypes.length>0?e.entityTypes:["competition","team","player"]).map(l=>{switch(l){case"team":return"teams";case"player":return"players";case"competition":return"competitions";default:return l}});n.entities=i.join(","),e.lang&&(n.lang=e.lang),e.limit&&(n.limit=String(e.limit));const r=await b.get({path:"/v1/search",params:n,next:e.next,config:o}),a=[];return r.data&&(r.data.competitions&&r.data.competitions.forEach(l=>{const d=V({...l,entity_type:"competition"});d&&a.push(d)}),r.data.teams&&r.data.teams.forEach(l=>{const d=V({...l,entity_type:"team"});d&&a.push(d)}),r.data.players&&r.data.players.forEach(l=>{const d=V({...l,entity_type:"player"});d&&a.push(d)})),a}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,n=t.filter(s=>{const i=s.competitorOne.id===e||s.competitorTwo.id===e,r=s.status.type==="NOT_STARTED",a=new Date(s.timing.kickoffTime)>=o;return i&&r&&a});return n.sort((s,i)=>new Date(s.timing.kickoffTime).getTime()-new Date(i.timing.kickoffTime).getTime()),n[0]}function gt(e,t){const o=new Date,n=t.filter(s=>{const i=s.competitorOne.id===e||s.competitorTwo.id===e,r=s.status.type==="FINISHED",a=new Date(s.timing.kickoffTime)<=o;return i&&r&&a});return n.sort((s,i)=>new Date(i.timing.kickoffTime).getTime()-new Date(s.timing.kickoffTime).getTime()),n[0]}function pt(e,t){const o=new Date;return t.filter(s=>{const i=s.competitorOne.id===e||s.competitorTwo.id===e,r=s.status.type==="NOT_STARTED"||s.status.type==="LIVE",a=new Date(s.timing.kickoffTime)>=o||s.status.type==="LIVE";return i&&r&&a}).sort((s,i)=>new Date(s.timing.kickoffTime).getTime()-new Date(i.timing.kickoffTime).getTime())}function yt(e,t){const o=new Date;return t.filter(s=>{const i=s.competitorOne.id===e||s.competitorTwo.id===e,r=s.status.type==="FINISHED",a=new Date(s.timing.kickoffTime)<=o;return i&&r&&a}).sort((s,i)=>new Date(i.timing.kickoffTime).getTime()-new Date(s.timing.kickoffTime).getTime())}function ht(e,t,o){const n=o.filter(r=>r.status.type==="FINISHED"),s=o.filter(r=>r.status.type==="NOT_STARTED"||r.status.type==="POSTPONED"),i=t.entries.map(r=>{const a=r.competitor.id,l=n.filter(f=>f.competitorOne.id===e&&f.competitorTwo.id===a||f.competitorOne.id===a&&f.competitorTwo.id===e),d=s.filter(f=>f.competitorOne.id===e&&f.competitorTwo.id===a||f.competitorOne.id===a&&f.competitorTwo.id===e);let u,c;return l.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}),d.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:r.rank,teamId:r.competitor.id,teamName:r.competitor.name,teamShortName:r.competitor.shortName,teamLogo:r.competitor.logo,gamesPlayed:r.stats.played??0,points:r.stats.points??0,homeResult: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,n)=>{const s=o.seasonStatistics?.goals??0,i=n.seasonStatistics?.goals??0;if(i!==s)return i-s;const r=o.seasonStatistics?.assists??0;return(n.seasonStatistics?.assists??0)-r}).slice(0,t)}function vt(e,t=10){return e.players.filter(o=>(o.seasonStatistics?.assists??0)>0).sort((o,n)=>{const s=o.seasonStatistics?.assists??0,i=n.seasonStatistics?.assists??0;if(i!==s)return i-s;const r=o.seasonStatistics?.goals??0;return(n.seasonStatistics?.goals??0)-r}).slice(0,t)}function St(e,t=10){return e.players.filter(o=>(o.seasonStatistics?.appearances??0)>0).sort((o,n)=>{const s=o.seasonStatistics?.appearances??0,i=n.seasonStatistics?.appearances??0;if(i!==s)return i-s;const r=o.seasonStatistics?.minutes??0;return(n.seasonStatistics?.minutes??0)-r}).slice(0,t)}function _t(e,t=10){return e.players.filter(o=>(o.seasonStatistics?.minutes??0)>0).sort((o,n)=>{const s=o.seasonStatistics?.minutes??0,i=n.seasonStatistics?.minutes??0;if(i!==s)return i-s;const r=o.seasonStatistics?.appearances??0;return(n.seasonStatistics?.appearances??0)-r}).slice(0,t)}function Ct(e,t=10){return e.players.filter(o=>(o.seasonStatistics?.cleansheets??0)>0).sort((o,n)=>{const s=o.seasonStatistics?.cleansheets??0,i=n.seasonStatistics?.cleansheets??0;if(i!==s)return i-s;const r=o.seasonStatistics?.appearances??0;return(n.seasonStatistics?.appearances??0)-r}).slice(0,t)}function At(e,t=10){return e.players.filter(o=>{const n=o.seasonStatistics?.yellowCards??0,s=o.seasonStatistics?.redCards??0;return n+s>0}).sort((o,n)=>{const s=o.seasonStatistics?.yellowCards??0,i=o.seasonStatistics?.redCards??0,r=n.seasonStatistics?.yellowCards??0,a=n.seasonStatistics?.redCards??0,l=s+i*3,d=r+a*3;return d!==l?d-l:a!==i?a-i:r-s}).slice(0,t)}function N(e){const t=new Map,o=new Map;return e.forEach(n=>{!n.mainEvents||n.mainEvents.length===0||n.mainEvents.forEach(s=>{if(s.primaryPlayer){const i=s.primaryPlayer.id;t.has(i)||t.set(i,{playerId:s.primaryPlayer.id,seasonId:"",teamId:"",goals:0,assists:0,yellowCards:0,redCards:0,appearances:0});const r=t.get(i);o.has(i)||o.set(i,new Set),o.get(i).add(n.id),(s.type==="GOAL"||s.type==="PENALTY_GOAL")&&(r.goals=(r.goals??0)+1),s.type==="YELLOW_CARD"&&(r.yellowCards=(r.yellowCards??0)+1),(s.type==="RED_CARD"||s.type==="YELLOW_RED_CARD")&&(r.redCards=(r.redCards??0)+1)}if(s.secondaryPlayer&&(s.type==="GOAL"||s.type==="PENALTY_GOAL")){const i=s.secondaryPlayer.id;t.has(i)||t.set(i,{playerId:s.secondaryPlayer.id,seasonId:"",teamId:"",goals:0,assists:0,yellowCards:0,redCards:0,appearances:0});const r=t.get(i);r.assists=(r.assists??0)+1,o.has(i)||o.set(i,new Set),o.get(i).add(n.id)}})}),o.forEach((n,s)=>{const i=t.get(s);i&&i.appearances!==void 0&&(i.appearances=n.size)}),t}function U(e){return Array.from(e.values()).map(t=>({...t,totalCards:(t.yellowCards??0)+(t.redCards??0)}))}function te(e,t=10){const o=N(e);return U(o).filter(s=>(s.goals??0)>0).sort((s,i)=>{const r=s.goals??0,a=i.goals??0;if(a!==r)return a-r;const l=s.assists??0;return(i.assists??0)-l}).slice(0,t)}function oe(e,t=10){const o=N(e);return U(o).filter(s=>(s.assists??0)>0).sort((s,i)=>{const r=s.assists??0,a=i.assists??0;if(a!==r)return a-r;const l=s.goals??0;return(i.goals??0)-l}).slice(0,t)}function ne(e,t=10){const o=N(e);return U(o).filter(s=>(s.totalCards??0)>0).sort((s,i)=>{const r=(s.yellowCards??0)+(s.redCards??0)*3,a=(i.yellowCards??0)+(i.redCards??0)*3;if(a!==r)return a-r;const l=s.redCards??0,d=i.redCards??0;if(d!==l)return d-l;const u=s.yellowCards??0;return(i.yellowCards??0)-u}).slice(0,t)}function se(e,t=10){const o=N(e);return U(o).filter(s=>(s.goals??0)+(s.assists??0)>0).sort((s,i)=>{const r=(s.goals??0)+(s.assists??0),a=(i.goals??0)+(i.assists??0);if(a!==r)return a-r;const l=s.goals??0,d=i.goals??0;if(d!==l)return d-l;const u=s.assists??0;return(i.assists??0)-u}).slice(0,t)}function ie(e){const t=N(e);return U(t).sort((n,s)=>{const i=n.appearances??0,r=s.appearances??0;if(r!==i)return r-i;const a=(n.goals??0)+(n.assists??0);return(s.goals??0)+(s.assists??0)-a})}function Ft(e,t=10){return D.useMemo(()=>te(e,t),[e,t])}function Mt(e,t=10){return D.useMemo(()=>oe(e,t),[e,t])}function Ot(e,t=10){return D.useMemo(()=>ne(e,t),[e,t])}function Rt(e,t=10){return D.useMemo(()=>se(e,t),[e,t])}function Pt(e){return D.useMemo(()=>ie(e),[e])}function re(e){return D.useMemo(()=>N(e),[e])}function Gt(e,t){const o=re(e);return D.useMemo(()=>o.get(t),[o,t])}const ae=["GOAL","PENALTY_GOAL","OWN_GOAL"];function A(e,t){return t>0?e/t*100:0}function H(e,t){return t>0?e/t:0}function Et(e,t=!1,o=2){return t?`${Math.round(e)}%`:Number.isInteger(e)?e.toString():e.toFixed(o)}function bt(e,t){const o=typeof e=="string"?parseFloat(e):e;if(isNaN(o)||t===0)return"0";const n=(o/t).toFixed(1);return`${o} (${n} avg)`}function Dt(e,t){const o=typeof e=="string"?parseFloat(e):e;return isNaN(o)||t===0?"0.0":(o/t).toFixed(1)}function Nt(e){const t=parseFloat(e);return isNaN(t)?"0%":`${Math.round(t)}%`}function ce(e,t,o){if(e.status?.type!=="FINISHED"||!e.score)return null;const n=parseInt(e.score.competitorOne||"0"),s=parseInt(e.score.competitorTwo||"0"),i=o?n:s,r=o?s:n;let a=null,l=null;const d=e.score.breakdown?.halfTime;if(d){const p=parseInt(d.competitorOne||"0"),y=parseInt(d.competitorTwo||"0");a=o?p:y,l=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:r,halfTimeGoalsFor:a,halfTimeGoalsAgainst:l,cornersFor:c,cornersAgainst:f,isWin:i>r,isDraw:i===r,isLoss:i<r}}function q(e,t){return e.competitorOne.id===t}function le(e,t){return e.competitorTwo.id===t}function 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 n=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 s=0,i=0,r=0,a=0,l=0;n.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;a+=y,l+=T,y>T?s++:T>y?i++:r++});const d=n.length;return{totalMatches:d,homeTeamWins:s,awayTeamWins:i,draws:r,homeTeamGoals:a,awayTeamGoals:l,homeTeamWinPercentage:d>0?s/d*100:0,awayTeamWinPercentage:d>0?i/d*100:0,drawPercentage:d>0?r/d*100:0,homeTeamAvgGoals:d>0?a/d:0,awayTeamAvgGoals:d>0?l/d:0}}function Bt(e,t,o,n=5){return e.filter(i=>{if(i.status?.type!=="FINISHED"||!i.score)return!1;const r=i.competitorOne.id===t||i.competitorTwo.id===t,a=i.competitorOne.id===o||i.competitorTwo.id===o;return r&&a}).sort((i,r)=>new Date(r.timing.kickoffTime).getTime()-new Date(i.timing.kickoffTime).getTime()).slice(0,n).map(i=>{const r=parseInt(i.score?.competitorOne||"0"),a=parseInt(i.score?.competitorTwo||"0"),l=i.competitorOne.id===t,d=l?r:a,u=l?a:r;let c;return d>u?c="home":u>d?c="away":c="draw",{id:i.id,date:new Date(i.timing.kickoffTime).toLocaleDateString("en-GB",{day:"numeric",month:"short",year:"numeric"}),homeTeamName:i.competitorOne.name,awayTeamName:i.competitorTwo.name,homeTeamLogo:i.competitorOne.assets?.logo,awayTeamLogo:i.competitorTwo.assets?.logo,homeScore:r,awayScore:a,venue:i.venue?.name,winner:c}})}function $t(e,t,o){return e.filter(n=>{const s=n.competitorOne.id===t,i=n.competitorTwo.id===t;return!s&&!i?!1:o==="home"?s:i}).map(n=>{const s=n.competitorOne.id===t;return ce(n,t,s)}).filter(n=>n!==null)}function J(e,t,o,n){let s=0;for(const i of e){const r=i.competitorOne.id===t,a=i.competitorTwo.id===t;if(!r&&!a||o==="home"&&!r||o==="away"&&!a||i.status?.type!=="FINISHED")continue;const l=i.mainEvents;if(!l||!Array.isArray(l))continue;const d=l.filter(y=>y.type&&ae.includes(y.type)).sort((y,T)=>{const R=y.minute??0,C=T.minute??0;return R!==C?R-C:(y.injuryMinute??0)-(T.injuryMinute??0)});if(d.length===0)continue;const u=d[0],c=r?"ONE":"TWO",f=u.type==="OWN_GOAL";let p;f?p=u.competitorPosition!==c:p=u.competitorPosition===c,(n==="scored"&&p||n==="conceded"&&!p)&&s++}return s}function xt(e,t,o){let n=0;for(const s of e){const i=s.competitorOne.id===t,r=s.competitorTwo.id===t;if(!i&&!r||o==="home"&&!i||o==="away"&&!r||s.status?.type!=="FINISHED")continue;const a=s.mainEvents;a&&Array.isArray(a)&&n++}return n}function Wt(e,t,o){const n=$t(e,t,o),s=n.length;if(s===0)return{played:0,goalsForPerMatch:0,cleanSheets:0,wonToNil:0,scoringRate:0,scoredInBothHalves:0,scoredFirst:0,leadingAtHalfTime:0,goalsAgainstPerMatch:0,failedToScore:0,lostToNil:0,concedingRate:0,concededInBothHalves:0,concededFirst:0,losingAtHalfTime:0,avgCornersFor:0,avgCornersAgainst:0};const i=n.reduce((g,S)=>g+S.goalsFor,0),r=n.reduce((g,S)=>g+S.goalsAgainst,0),a=n.filter(g=>g.goalsAgainst===0).length,l=n.filter(g=>g.isWin&&g.goalsAgainst===0).length,d=n.filter(g=>g.goalsFor>0).length,u=n.filter(g=>g.goalsFor===0).length,c=n.filter(g=>g.isLoss&&g.goalsFor===0).length,f=n.filter(g=>g.goalsAgainst>0).length,p=n.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=n.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:s,goalsForPerMatch:H(i,s),cleanSheets:A(a,s),wonToNil:A(l,s),scoringRate:A(d,s),scoredInBothHalves:A(T,y),scoredFirst:A(R,C),leadingAtHalfTime:A(F,y),goalsAgainstPerMatch:H(r,s),failedToScore:A(u,s),lostToNil:A(c,s),concedingRate:A(f,s),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 n=o.competitorOne.id===t,s=parseInt(o.score?.competitorOne||"0"),i=parseInt(o.score?.competitorTwo||"0"),r=s+i,a=o.periods;let l=null;if(a&&Array.isArray(a)){const d=a.find(u=>u.type==="FIRST_HALF"||u.type==="1ST_HALF");if(d?.score){const u=parseInt(d.score.competitorOne||"0"),c=parseInt(d.score.competitorTwo||"0");l=u+c}}return{totalGoals:r,halfTimeGoals:l,isHome:n}})}function h(e,t){return e.length===0?0:e.filter(n=>n>t).length/e.length*100}function Vt(e,t){const o=qt(e,t),n=o.filter(c=>c.isHome),s=o.filter(c=>!c.isHome),i=o.map(c=>c.totalGoals),r=n.map(c=>c.totalGoals),a=s.map(c=>c.totalGoals),l=o.filter(c=>c.halfTimeGoals!==null).map(c=>c.halfTimeGoals),d=n.filter(c=>c.halfTimeGoals!==null).map(c=>c.halfTimeGoals),u=s.filter(c=>c.halfTimeGoals!==null).map(c=>c.halfTimeGoals);return{over05:{home:h(r,.5),total:h(i,.5),away:h(a,.5)},over15:{home:h(r,1.5),total:h(i,1.5),away:h(a,1.5)},over25:{home:h(r,2.5),total:h(i,2.5),away:h(a,2.5)},over35:{home:h(r,3.5),total:h(i,3.5),away:h(a,3.5)},over45:{home:h(r,4.5),total:h(i,4.5),away:h(a,4.5)},over55:{home:h(r,5.5),total:h(i,5.5),away:h(a,5.5)},over05HT:{home:h(d,.5),total:h(l,.5),away:h(u,.5)},over15HT:{home:h(d,1.5),total:h(l,1.5),away:h(u,1.5)},over25HT:{home:h(d,2.5),total:h(l,2.5),away:h(u,2.5)}}}function de(e,t){const o=e.competitorOne.id===t,n=e.competitorTwo.id===t;if(!o&&!n||!e.score)return null;const s=parseInt(o?e.score.competitorOne||"0":e.score.competitorTwo||"0"),i=parseInt(o?e.score.competitorTwo||"0":e.score.competitorOne||"0");let r;return s>i?r="W":s<i?r="L":r="D",{result:{score:`${s}:${i}`,result:r,isHome:o},isHome:o}}function jt(e,t,o,n,s,i){const r=t?.entries.find(G=>G.competitor.id===e),a=o?.entries.find(G=>G.competitor.id===e),l=n?.entries.find(G=>G.competitor.id===e),d=s?.entries.find(G=>G.competitor.id===e),u=i?.entries.find(G=>G.competitor.id===e);if(!r)return null;const c=a?.stats?.goalsFor??0,f=l?.stats?.goalsFor??0,p=r?.stats?.goalsFor??0,y=d?.stats?.goalsAgainst??0,T=u?.stats?.goalsAgainst??0,R=r?.stats?.goalsAgainst??0,C=a?.stats?.played??0,F=l?.stats?.played??0,P=r?.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,n){const s=e.filter(r=>{const a=r.competitorOne.id===t,l=r.competitorTwo.id===t;return!(!a&&!l||r.status?.type!=="FINISHED"||n==="home"&&!a||n==="away"&&!l)}).sort((r,a)=>new Date(a.timing.kickoffTime).getTime()-new Date(r.timing.kickoffTime).getTime());if(s.length===0)return null;let i=0;for(const r of s){const a=r.competitorOne.id===t;if(o(r,t,a))i++;else break}return i>0?i:null}const v={win:(e,t,o)=>{const n=parseInt(o?e.score?.competitorOne||"0":e.score?.competitorTwo||"0"),s=parseInt(o?e.score?.competitorTwo||"0":e.score?.competitorOne||"0");return n>s},draw:e=>e.score?.competitorOne===e.score?.competitorTwo,loss:(e,t,o)=>{const n=parseInt(o?e.score?.competitorOne||"0":e.score?.competitorTwo||"0"),s=parseInt(o?e.score?.competitorTwo||"0":e.score?.competitorOne||"0");return n<s},noWin:(e,t,o)=>!v.win(e,t,o),noDraw:e=>!v.draw(e),noDefeat:(e,t,o)=>!v.loss(e,t,o),scored:(e,t,o)=>parseInt(o?e.score?.competitorOne||"0":e.score?.competitorTwo||"0")>=1,conceded:(e,t,o)=>parseInt(o?e.score?.competitorTwo||"0":e.score?.competitorOne||"0")>=1,noGoalScored:(e,t,o)=>!v.scored(e,t,o),noGoalConceded:(e,t,o)=>!v.conceded(e,t,o),over25:e=>parseInt(e.score?.competitorOne||"0")+parseInt(e.score?.competitorTwo||"0")>2,under25:e=>parseInt(e.score?.competitorOne||"0")+parseInt(e.score?.competitorTwo||"0")<3,scoredTwice:(e,t,o)=>parseInt(o?e.score?.competitorOne||"0":e.score?.competitorTwo||"0")>=2,concededTwice:(e,t,o)=>parseInt(o?e.score?.competitorTwo||"0":e.score?.competitorOne||"0")>=2};function 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 n=k(e,t,"home"),s=k(e,t),i=k(e,o,"away"),r=k(e,o);return[{label:"Consecutive wins",homeTeam:{home:n.win,total:s.win},awayTeam:{total:r.win,home:i.win},colorType:"neutral"},{label:"Consecutive draws",homeTeam:{home:n.draw,total:s.draw},awayTeam:{total:r.draw,home:i.draw},colorType:"neutral"},{label:"Consecutive defeats",homeTeam:{home:n.loss,total:s.loss},awayTeam:{total:r.loss,home:i.loss},colorType:"neutral"},{label:"No win",homeTeam:{home:n.noWin,total:s.noWin},awayTeam:{total:r.noWin,home:i.noWin},colorType:"negative"},{label:"No draw",homeTeam:{home:n.noDraw,total:s.noDraw},awayTeam:{total:r.noDraw,home:i.noDraw},colorType:"neutral"},{label:"No defeat",homeTeam:{home:n.noDefeat,total:s.noDefeat},awayTeam:{total:r.noDefeat,home:i.noDefeat},colorType:"positive"},{label:"Scored at least once",homeTeam:{home:n.scored,total:s.scored},awayTeam:{total:r.scored,home:i.scored},colorType:"positive"},{label:"Conceded at least once",homeTeam:{home:n.conceded,total:s.conceded},awayTeam:{total:r.conceded,home:i.conceded},colorType:"negative"},{label:"No goal scored",homeTeam:{home:n.noGoalScored,total:s.noGoalScored},awayTeam:{total:r.noGoalScored,home:i.noGoalScored},colorType:"neutral"},{label:"No goal conceded",homeTeam:{home:n.noGoalConceded,total:s.noGoalConceded},awayTeam:{total:r.noGoalConceded,home:i.noGoalConceded},colorType:"neutral"},{label:"GS + GC over 2.5",homeTeam:{home:n.over25,total:s.over25},awayTeam:{total:r.over25,home:i.over25},colorType:"neutral"},{label:"GS + GC under 2.5",homeTeam:{home:n.under25,total:s.under25},awayTeam:{total:r.under25,home:i.under25},colorType:"neutral"},{label:"Scored at least twice",homeTeam:{home:n.scoredTwice,total:s.scoredTwice},awayTeam:{total:r.scoredTwice,home:i.scoredTwice},colorType:"positive"},{label:"Conceded at least twice",homeTeam:{home:n.concededTwice,total:s.concededTwice},awayTeam:{total:r.concededTwice,home:i.concededTwice},colorType:"negative"}]}function Q(e,t){const o=new Map;return e.forEach(n=>{if(n.status?.type!=="FINISHED")return;const s=de(n,t);if(!s)return;const i=s.isHome?n.competitorTwo.id:n.competitorOne.id,r=s.isHome?n.competitorTwo:n.competitorOne,a=o.get(i)||{opponentId:i,opponentName:r.name,opponentLogo:r.assets?.logo};s.isHome?a.homeResult=s.result:a.awayResult=s.result,o.set(i,a)}),o}function Kt(e,t,o,n,s,i,r){const a=Q(e,t),l=Q(e,o),d=new Set([...a.keys(),...l.keys(),t,o]),u=[];return d.forEach(c=>{const f=a.get(c),p=l.get(c);if(!f&&!p&&c!==t&&c!==o)return;let y,T;c===t?(y=n,T=i):c===o?(y=s,T=r):(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=ae;exports.aggregatePlayerStatisticsFromMatches=N;exports.analyzeMatch=ce;exports.calcAverage=H;exports.calcPercentage=A;exports.calculateH2HStats=Ut;exports.calculateStreak=_;exports.formatAsAverage=Dt;exports.formatPossessionPercentage=Nt;exports.formatStatValue=Et;exports.formatWithAverage=bt;exports.getActiveSeason=mt;exports.getAllPlayerStatisticsFromMatches=ie;exports.getFansUnitedFootballCompetition=qe;exports.getFansUnitedFootballCompetitions=Be;exports.getFansUnitedFootballMatch=rt;exports.getFansUnitedFootballMatches=at;exports.getFansUnitedFootballPlayer=Ze;exports.getFansUnitedFootballPlayers=we;exports.getFansUnitedFootballSearch=ut;exports.getFansUnitedFootballTeam=Ke;exports.getMatchResult=de;exports.getMostCardedPlayersFromMatches=ne;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=Ne;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=se;exports.getTopScorersFromMatches=te;exports.isMatchFinished=Lt;exports.isTeamAway=le;exports.isTeamHome=q;exports.isTeamInMatch=It;exports.search=Ee;exports.searchFootball=ve;exports.streakFilters=v;exports.useAllPlayerStatisticsFromMatches=Pt;exports.useMostCardedPlayersFromMatches=Ot;exports.usePlayerStatistics=Gt;exports.usePlayerStatisticsMap=re;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 re } from "./index-
|
|
2
|
-
import { b as no, d as so, e as io, h as ro, i as ao, 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 re } from "./index-35LeZQYN.js";
|
|
2
|
+
import { b as no, d as so, e as io, h as ro, i as ao, 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-35LeZQYN.js";
|
|
3
3
|
import { useMemo as L } from "react";
|
|
4
4
|
function ae(e) {
|
|
5
5
|
return {
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
const
|
|
1
|
+
const h = "__FANSUNITED_DATA_LAYER_CONFIG__";
|
|
2
2
|
function de(e) {
|
|
3
|
-
globalThis[
|
|
3
|
+
globalThis[h] = e;
|
|
4
4
|
}
|
|
5
5
|
function c() {
|
|
6
|
-
const e = globalThis[
|
|
6
|
+
const e = globalThis[h];
|
|
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
11
|
function ue() {
|
|
12
|
-
return globalThis[
|
|
12
|
+
return globalThis[h] !== void 0;
|
|
13
13
|
}
|
|
14
14
|
function O(e) {
|
|
15
15
|
const t = e.replace(/\/$/, "");
|
|
@@ -30,9 +30,9 @@ function O(e) {
|
|
|
30
30
|
throw new Error("Sportal365 Sports API configuration is missing");
|
|
31
31
|
const d = new URL(n(s.path));
|
|
32
32
|
if (s.params)
|
|
33
|
-
for (const [
|
|
34
|
-
|
|
35
|
-
const
|
|
33
|
+
for (const [l, g] of Object.entries(s.params))
|
|
34
|
+
g !== void 0 && (Array.isArray(g) ? g.length > 0 && d.searchParams.set(l, g.join(",")) : d.searchParams.set(l, g));
|
|
35
|
+
const f = await fetch(d.toString(), {
|
|
36
36
|
method: "GET",
|
|
37
37
|
headers: {
|
|
38
38
|
Authorization: o(a),
|
|
@@ -45,14 +45,14 @@ function O(e) {
|
|
|
45
45
|
// Next.js cache options for ISR/on-demand revalidation
|
|
46
46
|
...s.next && { next: s.next }
|
|
47
47
|
});
|
|
48
|
-
if (!
|
|
49
|
-
throw new Error(`Sportal365 API error: ${
|
|
50
|
-
return
|
|
48
|
+
if (!f.ok)
|
|
49
|
+
throw new Error(`Sportal365 API error: ${f.status} ${f.statusText}`);
|
|
50
|
+
return f.json();
|
|
51
51
|
}
|
|
52
52
|
};
|
|
53
53
|
}
|
|
54
|
-
const L = "https://football.api.sportal365.com", ce = "https://sports-statistics.api.sportal365.com", le = "https://sports-search.api.sportal365.com",
|
|
55
|
-
function
|
|
54
|
+
const L = "https://football.api.sportal365.com", ce = "https://sports-statistics.api.sportal365.com", le = "https://sports-search.api.sportal365.com", p = O(L);
|
|
55
|
+
function C(e) {
|
|
56
56
|
if (e)
|
|
57
57
|
return {
|
|
58
58
|
id: e.id,
|
|
@@ -99,8 +99,8 @@ function _(e) {
|
|
|
99
99
|
competitorPosition: e.team_position === "HOME" ? "ONE" : "TWO",
|
|
100
100
|
minute: e.minute,
|
|
101
101
|
injuryMinute: e.injury_minute,
|
|
102
|
-
primaryPlayer:
|
|
103
|
-
secondaryPlayer:
|
|
102
|
+
primaryPlayer: C(e.primary_player),
|
|
103
|
+
secondaryPlayer: C(e.secondary_player),
|
|
104
104
|
score: e.score ? { competitorOne: String(e.score.home), competitorTwo: String(e.score.away) } : void 0
|
|
105
105
|
} : (console.warn(`Unknown event type: ${e.type_code}`), null);
|
|
106
106
|
}
|
|
@@ -193,7 +193,7 @@ function N(e) {
|
|
|
193
193
|
extraTimeSecondHalfStartedAt: e.extra_time_second_half_started_at ? new Date(e.extra_time_second_half_started_at) : void 0
|
|
194
194
|
};
|
|
195
195
|
}
|
|
196
|
-
function
|
|
196
|
+
function F(e) {
|
|
197
197
|
if (!e) return;
|
|
198
198
|
const t = (n) => n ? { competitorOne: String(n.home), competitorTwo: String(n.away) } : void 0, o = e.after_extra_time ?? e.regular_time;
|
|
199
199
|
return {
|
|
@@ -209,7 +209,7 @@ function x(e) {
|
|
|
209
209
|
}
|
|
210
210
|
};
|
|
211
211
|
}
|
|
212
|
-
function
|
|
212
|
+
function x(e) {
|
|
213
213
|
if (e)
|
|
214
214
|
return {
|
|
215
215
|
id: e.id,
|
|
@@ -293,10 +293,10 @@ function E(e) {
|
|
|
293
293
|
name: e.group.name,
|
|
294
294
|
providerRef: i(e.group.uuid)
|
|
295
295
|
} : void 0,
|
|
296
|
-
venue:
|
|
296
|
+
venue: x(e.venue),
|
|
297
297
|
officials: P(e.referees),
|
|
298
298
|
spectators: e.spectators ?? void 0,
|
|
299
|
-
score:
|
|
299
|
+
score: F(e.score),
|
|
300
300
|
mainEvents: e.main_events?.map(_).filter((t) => t !== null),
|
|
301
301
|
penaltyShootoutEvents: e.penalty_shootout_events?.map(_).filter((t) => t !== null),
|
|
302
302
|
winner: $(e),
|
|
@@ -368,24 +368,24 @@ function Y(e) {
|
|
|
368
368
|
competitorTwo: b(e.away_team)
|
|
369
369
|
};
|
|
370
370
|
}
|
|
371
|
-
function
|
|
371
|
+
function m(e, t, o, n) {
|
|
372
372
|
return t == null ? null : { key: e, value: String(t), label: o, unit: n };
|
|
373
373
|
}
|
|
374
|
-
function
|
|
374
|
+
function I(e, t) {
|
|
375
375
|
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
|
-
|
|
376
|
+
m("possession", t.possession, "Possession", "%"),
|
|
377
|
+
m("shots_total", o, "Shots"),
|
|
378
|
+
m("shots_on_target", t.shots_on, "Shots on Target"),
|
|
379
|
+
m("shots_off_target", t.shots_off, "Shots off Target"),
|
|
380
|
+
m("shots_blocked", t.shots_blocked, "Shots Blocked"),
|
|
381
|
+
m("corners", t.corners, "Corner Kicks"),
|
|
382
|
+
m("goal_kicks", t.goal_kicks, "Goal Kicks"),
|
|
383
|
+
m("throw_ins", t.throw_in, "Throw Ins"),
|
|
384
|
+
m("offsides", t.offside, "Offsides"),
|
|
385
|
+
m("fouls", t.fouls_committed, "Fouls"),
|
|
386
|
+
m("yellow_cards", t.yellow_cards, "Yellow Cards"),
|
|
387
|
+
m("passes", t.pass, "Passes"),
|
|
388
|
+
m("crosses", t.crosses, "Crosses")
|
|
389
389
|
];
|
|
390
390
|
return {
|
|
391
391
|
competitorId: e,
|
|
@@ -397,11 +397,11 @@ function U(e) {
|
|
|
397
397
|
if (!t || !o)
|
|
398
398
|
throw new Error("Missing competitor statistics");
|
|
399
399
|
return {
|
|
400
|
-
competitorOne:
|
|
401
|
-
competitorTwo:
|
|
400
|
+
competitorOne: I(String(t.team.id), t.statistics),
|
|
401
|
+
competitorTwo: I(String(o.team.id), o.statistics)
|
|
402
402
|
};
|
|
403
403
|
}
|
|
404
|
-
function
|
|
404
|
+
function q(e) {
|
|
405
405
|
const t = e.urls?.find((o) => o.app_type === "desktop")?.url;
|
|
406
406
|
return {
|
|
407
407
|
id: e.id,
|
|
@@ -426,16 +426,16 @@ function W(e) {
|
|
|
426
426
|
type: e.scope.type,
|
|
427
427
|
name: e.scope.name
|
|
428
428
|
},
|
|
429
|
-
selections: e.selections.map(
|
|
429
|
+
selections: e.selections.map(q)
|
|
430
430
|
};
|
|
431
431
|
}
|
|
432
|
-
function
|
|
432
|
+
function j(e) {
|
|
433
433
|
if (!e) return !0;
|
|
434
434
|
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
435
|
return (0.2126 * o + 0.7152 * n + 0.0722 * s) / 255 < 0.5;
|
|
436
436
|
}
|
|
437
|
-
function
|
|
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 || (
|
|
437
|
+
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 || (j(n) ? "#FFFFFF" : "#000000");
|
|
439
439
|
return {
|
|
440
440
|
operator: {
|
|
441
441
|
id: e.bookmaker.id,
|
|
@@ -451,23 +451,23 @@ function V(e) {
|
|
|
451
451
|
markets: e.markets.map(W)
|
|
452
452
|
};
|
|
453
453
|
}
|
|
454
|
-
function
|
|
454
|
+
function K(e, t) {
|
|
455
455
|
return {
|
|
456
456
|
matchId: e,
|
|
457
|
-
operators: t.map(
|
|
457
|
+
operators: t.map(G)
|
|
458
458
|
};
|
|
459
459
|
}
|
|
460
|
-
function
|
|
460
|
+
function A(e) {
|
|
461
461
|
if (e == null || e === "")
|
|
462
462
|
return;
|
|
463
463
|
const t = typeof e == "number" ? e : parseInt(e, 10);
|
|
464
464
|
return isNaN(t) ? void 0 : t;
|
|
465
465
|
}
|
|
466
|
-
function
|
|
466
|
+
function V(e) {
|
|
467
467
|
return {
|
|
468
468
|
externalId: e.external_id,
|
|
469
|
-
minute:
|
|
470
|
-
addedTime:
|
|
469
|
+
minute: A(e.elapsed),
|
|
470
|
+
addedTime: A(e.elapsed_plus),
|
|
471
471
|
text: e.auto_text,
|
|
472
472
|
details: e.details,
|
|
473
473
|
meta: {
|
|
@@ -480,7 +480,7 @@ function q(e) {
|
|
|
480
480
|
};
|
|
481
481
|
}
|
|
482
482
|
async function pe(e, t, o) {
|
|
483
|
-
const n = o || c(), { sportal365Sports: s } = n, a = await
|
|
483
|
+
const n = o || c(), { sportal365Sports: s } = n, a = await p.get({
|
|
484
484
|
path: `/v2/matches/${e}`,
|
|
485
485
|
params: {
|
|
486
486
|
language_code: t?.languageCode ?? s?.languageCode ?? "en",
|
|
@@ -502,7 +502,7 @@ async function pe(e, t, o) {
|
|
|
502
502
|
}
|
|
503
503
|
async function fe(e, t, o) {
|
|
504
504
|
const n = o || c(), { sportal365Sports: s } = n;
|
|
505
|
-
return (await
|
|
505
|
+
return (await p.get({
|
|
506
506
|
path: `/v2/matches/${e}/events`,
|
|
507
507
|
params: {
|
|
508
508
|
language_code: t?.languageCode ?? s?.languageCode ?? "en"
|
|
@@ -515,7 +515,7 @@ async function fe(e, t, o) {
|
|
|
515
515
|
})).events.map(_).filter((u) => u !== null);
|
|
516
516
|
}
|
|
517
517
|
async function _e(e, t, o) {
|
|
518
|
-
const n = o || c(), { sportal365Sports: s } = n, a = await
|
|
518
|
+
const n = o || c(), { sportal365Sports: s } = n, a = await p.get({
|
|
519
519
|
path: `/v2/matches/${e}/lineups`,
|
|
520
520
|
params: {
|
|
521
521
|
language_code: t?.languageCode ?? s?.languageCode ?? "en"
|
|
@@ -529,7 +529,7 @@ async function _e(e, t, o) {
|
|
|
529
529
|
return Y(a);
|
|
530
530
|
}
|
|
531
531
|
async function ye(e, t, o) {
|
|
532
|
-
const n = o || c(), { sportal365Sports: s } = n, a = await
|
|
532
|
+
const n = o || c(), { sportal365Sports: s } = n, a = await p.get({
|
|
533
533
|
path: `/v2/matches/${e}`,
|
|
534
534
|
params: {
|
|
535
535
|
language_code: t?.languageCode ?? s?.languageCode ?? "en",
|
|
@@ -546,10 +546,10 @@ async function ye(e, t, o) {
|
|
|
546
546
|
next: t?.next,
|
|
547
547
|
config: n
|
|
548
548
|
});
|
|
549
|
-
return
|
|
549
|
+
return K(e, a.odds ?? []);
|
|
550
550
|
}
|
|
551
551
|
async function he(e, t, o) {
|
|
552
|
-
const n = o || c(), { sportal365Sports: s } = n, a = await
|
|
552
|
+
const n = o || c(), { sportal365Sports: s } = n, a = await p.get({
|
|
553
553
|
path: `/events/${e}/teamstats`,
|
|
554
554
|
params: {
|
|
555
555
|
language_code: t?.languageCode ?? s?.languageCode ?? "en"
|
|
@@ -564,7 +564,7 @@ async function he(e, t, o) {
|
|
|
564
564
|
}
|
|
565
565
|
async function ve(e, t, o) {
|
|
566
566
|
const n = o || c(), { sportal365Sports: s } = n;
|
|
567
|
-
return (await
|
|
567
|
+
return (await p.get({
|
|
568
568
|
path: `/matches/${e}/commentary`,
|
|
569
569
|
params: {
|
|
570
570
|
language_code: t?.languageCode ?? s?.languageCode ?? "en"
|
|
@@ -574,11 +574,11 @@ async function ve(e, t, o) {
|
|
|
574
574
|
},
|
|
575
575
|
next: t?.next,
|
|
576
576
|
config: n
|
|
577
|
-
})).map(
|
|
577
|
+
})).map(V);
|
|
578
578
|
}
|
|
579
|
-
async function
|
|
579
|
+
async function Se(e, t) {
|
|
580
580
|
const o = t || c(), { sportal365Sports: n } = o;
|
|
581
|
-
return (await
|
|
581
|
+
return (await p.get({
|
|
582
582
|
path: "/v2/matches",
|
|
583
583
|
params: {
|
|
584
584
|
language_code: e.languageCode ?? n?.languageCode ?? "en",
|
|
@@ -859,27 +859,44 @@ function Z(e, t) {
|
|
|
859
859
|
};
|
|
860
860
|
}
|
|
861
861
|
async function w(e, t) {
|
|
862
|
-
const o = t || c(), { sportal365Sports: n } = o, { seasonIds: s, teamId: a, languageCode: u, next: d } = e,
|
|
862
|
+
const o = t || c(), { sportal365Sports: n } = o, { seasonIds: s, teamId: a, languageCode: u, next: d } = e, f = d ?? { revalidate: 120 }, l = {
|
|
863
863
|
season_ids: s.join(","),
|
|
864
864
|
team_id: a,
|
|
865
865
|
language_code: u ?? n?.languageCode ?? "en"
|
|
866
|
-
},
|
|
866
|
+
}, g = await p.get({
|
|
867
867
|
path: "/v2/statistics/players/season",
|
|
868
|
-
params:
|
|
868
|
+
params: l,
|
|
869
869
|
headers: {
|
|
870
870
|
"Accept-Language": u ?? n?.languageCode ?? "en"
|
|
871
871
|
},
|
|
872
|
-
next:
|
|
872
|
+
next: f,
|
|
873
873
|
config: o
|
|
874
|
-
})
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
874
|
+
});
|
|
875
|
+
if (!g.statistics)
|
|
876
|
+
return console.error("[getFootballPlayerSeasonStatistics] Invalid API response - missing statistics array:", {
|
|
877
|
+
teamId: a,
|
|
878
|
+
seasonIds: s,
|
|
879
|
+
response: g
|
|
880
|
+
}), {};
|
|
881
|
+
if (g.statistics.length === 0)
|
|
882
|
+
return console.warn("[getFootballPlayerSeasonStatistics] API returned empty statistics array:", {
|
|
883
|
+
teamId: a,
|
|
884
|
+
seasonIds: s,
|
|
885
|
+
hint: "This could be due to: wrong credentials, wrong project header, no data for this team/season, or API issue"
|
|
886
|
+
}), {};
|
|
887
|
+
const y = {};
|
|
888
|
+
for (const S of g.statistics) {
|
|
889
|
+
const k = S.player.id;
|
|
890
|
+
y[k] = Z(S, a);
|
|
878
891
|
}
|
|
879
|
-
return
|
|
892
|
+
return console.log(
|
|
893
|
+
"[getFootballPlayerSeasonStatistics] Successfully fetched statistics for",
|
|
894
|
+
Object.keys(y).length,
|
|
895
|
+
"players"
|
|
896
|
+
), y;
|
|
880
897
|
}
|
|
881
|
-
async function
|
|
882
|
-
const n = o || c(), { sportal365Sports: s } = n, a = await
|
|
898
|
+
async function Ce(e, t, o) {
|
|
899
|
+
const n = o || c(), { sportal365Sports: s } = n, a = await p.get({
|
|
883
900
|
path: `/v2/teams/${e}`,
|
|
884
901
|
params: {
|
|
885
902
|
language_code: t?.languageCode ?? s?.languageCode ?? "en",
|
|
@@ -894,7 +911,7 @@ async function Se(e, t, o) {
|
|
|
894
911
|
return B(a);
|
|
895
912
|
}
|
|
896
913
|
async function Te(e, t, o) {
|
|
897
|
-
const n = o || c(), { sportal365Sports: s } = n, a = await
|
|
914
|
+
const n = o || c(), { sportal365Sports: s } = n, a = await p.get({
|
|
898
915
|
path: `/v2/teams/${e}/squad`,
|
|
899
916
|
params: {
|
|
900
917
|
language_code: t?.languageCode ?? s?.languageCode ?? "en",
|
|
@@ -906,7 +923,8 @@ async function Te(e, t, o) {
|
|
|
906
923
|
next: t?.next,
|
|
907
924
|
config: n
|
|
908
925
|
}), u = J(a);
|
|
909
|
-
if (t?.seasonIds && t.seasonIds.length > 0)
|
|
926
|
+
if (t?.seasonIds && t.seasonIds.length > 0) {
|
|
927
|
+
console.log("[getFootballTeamSquad] Fetching player statistics for seasonIds:", t.seasonIds);
|
|
910
928
|
try {
|
|
911
929
|
const d = await w(
|
|
912
930
|
{
|
|
@@ -917,10 +935,20 @@ async function Te(e, t, o) {
|
|
|
917
935
|
},
|
|
918
936
|
n
|
|
919
937
|
);
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
938
|
+
console.log("[getFootballTeamSquad] Received stats map with", Object.keys(d).length, "players"), console.log("[getFootballTeamSquad] Player IDs in stats:", Object.keys(d)), console.log(
|
|
939
|
+
"[getFootballTeamSquad] Player IDs in squad:",
|
|
940
|
+
u.players.map((l) => l.id)
|
|
941
|
+
);
|
|
942
|
+
let f = 0;
|
|
943
|
+
for (const l of u.players) {
|
|
944
|
+
const g = d[l.id];
|
|
945
|
+
g ? (l.seasonStatistics = g, f++, console.log("[getFootballTeamSquad] ✓ Attached stats to player:", l.id, l.name)) : console.log("[getFootballTeamSquad] ✗ No stats found for player:", l.id, l.name);
|
|
923
946
|
}
|
|
947
|
+
console.log("[getFootballTeamSquad] Stats attachment complete:", {
|
|
948
|
+
totalPlayers: u.players.length,
|
|
949
|
+
playersWithStats: f,
|
|
950
|
+
playersWithoutStats: u.players.length - f
|
|
951
|
+
});
|
|
924
952
|
} catch (d) {
|
|
925
953
|
console.error("[getFootballTeamSquad] Failed to fetch player statistics:", {
|
|
926
954
|
error: d instanceof Error ? d.message : String(d),
|
|
@@ -929,6 +957,8 @@ async function Te(e, t, o) {
|
|
|
929
957
|
seasonIds: t.seasonIds
|
|
930
958
|
});
|
|
931
959
|
}
|
|
960
|
+
} else
|
|
961
|
+
console.log("[getFootballTeamSquad] No seasonIds provided, skipping stats fetch");
|
|
932
962
|
return u;
|
|
933
963
|
}
|
|
934
964
|
function ee(e) {
|
|
@@ -1016,7 +1046,7 @@ function oe(e) {
|
|
|
1016
1046
|
};
|
|
1017
1047
|
}
|
|
1018
1048
|
async function be(e, t, o) {
|
|
1019
|
-
const n = o || c(), { sportal365Sports: s } = n, a = await
|
|
1049
|
+
const n = o || c(), { sportal365Sports: s } = n, a = await p.get({
|
|
1020
1050
|
path: `/tournaments/${e}`,
|
|
1021
1051
|
params: {
|
|
1022
1052
|
language_code: t?.languageCode ?? s?.languageCode ?? "en"
|
|
@@ -1029,7 +1059,7 @@ async function be(e, t, o) {
|
|
|
1029
1059
|
});
|
|
1030
1060
|
return ee(a);
|
|
1031
1061
|
}
|
|
1032
|
-
async function
|
|
1062
|
+
async function Ie(e, t) {
|
|
1033
1063
|
const o = t || c(), { sportal365Sports: n } = o;
|
|
1034
1064
|
if (!e?.seasonId && !e?.competitionId)
|
|
1035
1065
|
throw new Error("Either seasonId or competitionId must be provided");
|
|
@@ -1037,7 +1067,7 @@ async function Ae(e, t) {
|
|
|
1037
1067
|
language_code: e?.languageCode ?? n?.languageCode ?? "en"
|
|
1038
1068
|
};
|
|
1039
1069
|
e.seasonId ? s.season_id = e.seasonId : e.competitionId && (s.tournament_id = e.competitionId, e.status && (s.status = e.status));
|
|
1040
|
-
const a = await
|
|
1070
|
+
const a = await p.get({
|
|
1041
1071
|
path: "/v2/seasons/details",
|
|
1042
1072
|
params: s,
|
|
1043
1073
|
headers: {
|
|
@@ -1048,7 +1078,7 @@ async function Ae(e, t) {
|
|
|
1048
1078
|
});
|
|
1049
1079
|
return oe(a);
|
|
1050
1080
|
}
|
|
1051
|
-
function
|
|
1081
|
+
function v(e) {
|
|
1052
1082
|
return {
|
|
1053
1083
|
championsleague: "championsLeague",
|
|
1054
1084
|
europaleague: "europaLeague",
|
|
@@ -1066,11 +1096,11 @@ function se(e, t) {
|
|
|
1066
1096
|
if (!t || t.length === 0)
|
|
1067
1097
|
return;
|
|
1068
1098
|
const o = t.map((s) => {
|
|
1069
|
-
const a = s.event, u = a.home_team.id === e, d = u ? a.away_team : a.home_team,
|
|
1099
|
+
const a = s.event, u = a.home_team.id === e, d = u ? a.away_team : a.home_team, f = `${a.goal_home}-${a.goal_away}`;
|
|
1070
1100
|
return {
|
|
1071
1101
|
matchId: a.id.toString(),
|
|
1072
1102
|
result: s.outcome,
|
|
1073
|
-
score:
|
|
1103
|
+
score: f,
|
|
1074
1104
|
homeAway: u ? "HOME" : "AWAY",
|
|
1075
1105
|
opponent: {
|
|
1076
1106
|
id: d.id.toString(),
|
|
@@ -1090,7 +1120,7 @@ function se(e, t) {
|
|
|
1090
1120
|
}
|
|
1091
1121
|
function ae(e) {
|
|
1092
1122
|
return {
|
|
1093
|
-
key:
|
|
1123
|
+
key: v(e.code),
|
|
1094
1124
|
name: e.name,
|
|
1095
1125
|
position: ne(e.type)
|
|
1096
1126
|
};
|
|
@@ -1105,7 +1135,7 @@ function ie(e) {
|
|
|
1105
1135
|
goalsAgainst: e.goals_against,
|
|
1106
1136
|
goalDifference: e.goals_for - e.goals_against,
|
|
1107
1137
|
points: e.points
|
|
1108
|
-
}, o = e.rules?.length > 0 ? e.rules.map((s) =>
|
|
1138
|
+
}, o = e.rules?.length > 0 ? e.rules.map((s) => v(s.code)) : void 0, n = se(e.team.id, e.team.form ?? []);
|
|
1109
1139
|
return {
|
|
1110
1140
|
rank: e.rank,
|
|
1111
1141
|
competitor: {
|
|
@@ -1124,7 +1154,7 @@ function re(e) {
|
|
|
1124
1154
|
for (const n of e)
|
|
1125
1155
|
if (n.rules)
|
|
1126
1156
|
for (const s of n.rules) {
|
|
1127
|
-
const a =
|
|
1157
|
+
const a = v(s.code);
|
|
1128
1158
|
o.has(a) || o.set(a, ae(s));
|
|
1129
1159
|
}
|
|
1130
1160
|
return {
|
|
@@ -1134,8 +1164,8 @@ function re(e) {
|
|
|
1134
1164
|
}
|
|
1135
1165
|
};
|
|
1136
1166
|
}
|
|
1137
|
-
async function
|
|
1138
|
-
const o = t || c(), { sportal365Sports: n } = o, s = e.expand?.join(","), a = await
|
|
1167
|
+
async function Ae(e, t) {
|
|
1168
|
+
const o = t || c(), { sportal365Sports: n } = o, s = e.expand?.join(","), a = await p.get({
|
|
1139
1169
|
path: `/tournaments/seasons/stages/${e.stageId}/standing`,
|
|
1140
1170
|
params: {
|
|
1141
1171
|
expand: s,
|
|
@@ -1156,18 +1186,18 @@ export {
|
|
|
1156
1186
|
O as c,
|
|
1157
1187
|
be as d,
|
|
1158
1188
|
pe as e,
|
|
1159
|
-
|
|
1189
|
+
p as f,
|
|
1160
1190
|
c as g,
|
|
1161
1191
|
ve as h,
|
|
1162
1192
|
fe as i,
|
|
1163
1193
|
_e as j,
|
|
1164
1194
|
ye as k,
|
|
1165
1195
|
he as l,
|
|
1166
|
-
|
|
1196
|
+
Se as m,
|
|
1167
1197
|
w as n,
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1198
|
+
Ie as o,
|
|
1199
|
+
Ae as p,
|
|
1200
|
+
Ce as q,
|
|
1171
1201
|
Te as r,
|
|
1172
1202
|
ge as s,
|
|
1173
1203
|
i as t,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";const y="__FANSUNITED_DATA_LAYER_CONFIG__";function R(e){globalThis[y]=e}function c(){const e=globalThis[y];if(!e)throw new Error("Data layer config not initialized. Call setConfig() in your root layout.");return e}function D(){return globalThis[y]!==void 0}function E(e){const t=e.replace(/\/$/,"");function o(a){const{sportal365Sports:s}=a;if(!s)throw new Error("Sportal365 Sports API configuration is missing");const u=`${s.username}:${s.password}`;return`Basic ${btoa(u)}`}function n(a){return`${t}${a}`}return{async get(a){const s=a.config||c(),{sportal365Sports:u}=s;if(!u)throw new Error("Sportal365 Sports API configuration is missing");const d=new URL(n(a.path));if(a.params)for(const[p,f]of Object.entries(a.params))f!==void 0&&(Array.isArray(f)?f.length>0&&d.searchParams.set(p,f.join(",")):d.searchParams.set(p,f));const m=await fetch(d.toString(),{method:"GET",headers:{Authorization:o(s),"Content-Type":"application/json","X-Project":u.projectId,...a.headers},signal:u.timeout?AbortSignal.timeout(u.timeout):void 0,...a.next&&{next:a.next}});if(!m.ok)throw new Error(`Sportal365 API error: ${m.status} ${m.statusText}`);return m.json()}}}const N="https://football.api.sportal365.com",F="https://sports-statistics.api.sportal365.com",x="https://sports-search.api.sportal365.com",l=E(N);function S(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 P={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 _(e){const t=P[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:S(e.primary_player),secondaryPlayer:S(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 T(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 U(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 G(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 K(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 V(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 O(e){return{id:e.id,slug:e.slug,status:$(e.status),timing:Y(e),competitorOne:T(e.home_team),competitorTwo:T(e.away_team),competition:K(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:G(e.venue),officials:W(e.referees),spectators:e.spectators??void 0,score:U(e.score),mainEvents:e.main_events?.map(_).filter(t=>t!==null),penaltyShootoutEvents:e.penalty_shootout_events?.map(_).filter(t=>t!==null),winner:V(e),coverage:e.coverage==="NOT_LIVE"?"UNKNOWN":e.coverage,lineupStatus:e.lineup_status==="UNCONFIRMED"?"EXPECTED":e.lineup_status,providerRef:i(e.uuid)}}function j(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(_).filter(o=>o!==null),providerRef:i(t.uuid)}}function b(e){const t=[],o=[];for(const n of e.players){const a=j(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 q(e){return{matchId:e.match_id,confirmed:e.status==="CONFIRMED",competitorOne:b(e.home_team),competitorTwo:b(e.away_team)}}function g(e,t,o,n){return t==null?null:{key:e,value:String(t),label:o,unit:n}}function A(e,t){const o=(t.shots_on??0)+(t.shots_off??0)+(t.shots_blocked??0),n=[g("possession",t.possession,"Possession","%"),g("shots_total",o,"Shots"),g("shots_on_target",t.shots_on,"Shots on Target"),g("shots_off_target",t.shots_off,"Shots off Target"),g("shots_blocked",t.shots_blocked,"Shots Blocked"),g("corners",t.corners,"Corner Kicks"),g("goal_kicks",t.goal_kicks,"Goal Kicks"),g("throw_ins",t.throw_in,"Throw Ins"),g("offsides",t.offside,"Offsides"),g("fouls",t.fouls_committed,"Fouls"),g("yellow_cards",t.yellow_cards,"Yellow Cards"),g("passes",t.pass,"Passes"),g("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:A(String(t.team.id),t.statistics),competitorTwo:A(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 I(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:I(e.elapsed),addedTime:I(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||c(),{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 O(s)}async function te(e,t,o){const n=o||c(),{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(_).filter(u=>u!==null)}async function oe(e,t,o){const n=o||c(),{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 q(s)}async function ne(e,t,o){const n=o||c(),{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||c(),{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||c(),{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||c(),{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(O)}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,u=t.outcome==="win"?"W":t.outcome==="draw"?"D":"L";return{matchId:t.id,result:u,score:a&&s?`${a}-${s}`:void 0,opponent:{id: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 ue(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 ce(e){return{teamId:e.team.id,teamName:e.team.name,coach:e.coach?ue(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||c(),{sportal365Sports:n}=o,{seasonIds:a,teamId:s,languageCode:u,next:d}=e,m=d??{revalidate:120},p={season_ids:a.join(","),team_id:s,language_code:u??n?.languageCode??"en"},f=await l.get({path:"/v2/statistics/players/season",params:p,headers:{"Accept-Language":u??n?.languageCode??"en"},next:m,config:o}),v={};for(const C of f.statistics){const k=C.player.id;v[k]=ge(C,s)}return v}async function me(e,t,o){const n=o||c(),{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||c(),{sportal365Sports:a}=n,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}),u=ce(s);if(t?.seasonIds&&t.seasonIds.length>0)try{const d=await L({seasonIds:t.seasonIds,teamId:e,languageCode:t.languageCode,next:t.next},n);for(const m of u.players){const p=d[m.id];p&&(m.seasonStatistics=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})}return u}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||c(),{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||c(),{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 h(e){return{championsleague:"championsLeague",europaleague:"europaLeague",conferenceleague:"conferenceLeague",relegation:"relegation",playoff:"playoff",promotion:"promotion"}[e.toLowerCase()]??e.toLowerCase().replace(/_/g,"")}function Ce(e){const t=e.toLowerCase();return t==="relegation"?"BOTTOM":t==="playoff"?"MIDDLE":"TOP"}function Se(e,t){if(!t||t.length===0)return;const o=t.map(a=>{const s=a.event,u=s.home_team.id===e,d=u?s.away_team:s.home_team,m=`${s.goal_home}-${s.goal_away}`;return{matchId:s.id.toString(),result:a.outcome,score:m,homeAway:u?"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:h(e.code),name:e.name,position:Ce(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=>h(a.code)):void 0,n=Se(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=h(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||c(),{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=x;exports.SPORTAL365_STATISTICS_DOMAIN=F;exports.addProviderRef=H;exports.createHttpClient=E;exports.footballHttp=l;exports.getConfig=c;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;
|
|
1
|
+
"use strict";const h="__FANSUNITED_DATA_LAYER_CONFIG__";function R(e){globalThis[h]=e}function c(){const e=globalThis[h];if(!e)throw new Error("Data layer config not initialized. Call setConfig() in your root layout.");return e}function D(){return globalThis[h]!==void 0}function E(e){const t=e.replace(/\/$/,"");function o(a){const{sportal365Sports:s}=a;if(!s)throw new Error("Sportal365 Sports API configuration is missing");const u=`${s.username}:${s.password}`;return`Basic ${btoa(u)}`}function n(a){return`${t}${a}`}return{async get(a){const s=a.config||c(),{sportal365Sports:u}=s;if(!u)throw new Error("Sportal365 Sports API configuration is missing");const d=new URL(n(a.path));if(a.params)for(const[g,m]of Object.entries(a.params))m!==void 0&&(Array.isArray(m)?m.length>0&&d.searchParams.set(g,m.join(",")):d.searchParams.set(g,m));const f=await fetch(d.toString(),{method:"GET",headers:{Authorization:o(s),"Content-Type":"application/json","X-Project":u.projectId,...a.headers},signal:u.timeout?AbortSignal.timeout(u.timeout):void 0,...a.next&&{next:a.next}});if(!f.ok)throw new Error(`Sportal365 API error: ${f.status} ${f.statusText}`);return f.json()}}}const F="https://football.api.sportal365.com",N="https://sports-statistics.api.sportal365.com",P="https://sports-search.api.sportal365.com",l=E(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 _(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 T(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 U(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 q(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 O(e){return{id:e.id,slug:e.slug,status:$(e.status),timing:Y(e),competitorOne:T(e.home_team),competitorTwo:T(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:q(e.venue),officials:W(e.referees),spectators:e.spectators??void 0,score:U(e.score),mainEvents:e.main_events?.map(_).filter(t=>t!==null),penaltyShootoutEvents:e.penalty_shootout_events?.map(_).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(_).filter(o=>o!==null),providerRef:i(t.uuid)}}function b(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:b(e.home_team),competitorTwo:b(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 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 A(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:A(e.elapsed),addedTime:A(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||c(),{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 O(s)}async function te(e,t,o){const n=o||c(),{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(_).filter(u=>u!==null)}async function oe(e,t,o){const n=o||c(),{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||c(),{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||c(),{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||c(),{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||c(),{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(O)}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,u=t.outcome==="win"?"W":t.outcome==="draw"?"D":"L";return{matchId:t.id,result:u,score:a&&s?`${a}-${s}`:void 0,opponent:{id: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 ue(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 ce(e){return{teamId:e.team.id,teamName:e.team.name,coach:e.coach?ue(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 k(e,t){const o=t||c(),{sportal365Sports:n}=o,{seasonIds:a,teamId:s,languageCode:u,next:d}=e,f=d??{revalidate:120},g={season_ids:a.join(","),team_id:s,language_code:u??n?.languageCode??"en"},m=await l.get({path:"/v2/statistics/players/season",params:g,headers:{"Accept-Language":u??n?.languageCode??"en"},next:f,config:o});if(!m.statistics)return console.error("[getFootballPlayerSeasonStatistics] Invalid API response - missing statistics array:",{teamId:s,seasonIds:a,response:m}),{};if(m.statistics.length===0)return console.warn("[getFootballPlayerSeasonStatistics] API returned empty statistics array:",{teamId:s,seasonIds:a,hint:"This could be due to: wrong credentials, wrong project header, no data for this team/season, or API issue"}),{};const y={};for(const S of m.statistics){const L=S.player.id;y[L]=ge(S,s)}return console.log("[getFootballPlayerSeasonStatistics] Successfully fetched statistics for",Object.keys(y).length,"players"),y}async function me(e,t,o){const n=o||c(),{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||c(),{sportal365Sports:a}=n,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}),u=ce(s);if(t?.seasonIds&&t.seasonIds.length>0){console.log("[getFootballTeamSquad] Fetching player statistics for seasonIds:",t.seasonIds);try{const d=await k({seasonIds:t.seasonIds,teamId:e,languageCode:t.languageCode,next:t.next},n);console.log("[getFootballTeamSquad] Received stats map with",Object.keys(d).length,"players"),console.log("[getFootballTeamSquad] Player IDs in stats:",Object.keys(d)),console.log("[getFootballTeamSquad] Player IDs in squad:",u.players.map(g=>g.id));let f=0;for(const g of u.players){const m=d[g.id];m?(g.seasonStatistics=m,f++,console.log("[getFootballTeamSquad] ✓ Attached stats to player:",g.id,g.name)):console.log("[getFootballTeamSquad] ✗ No stats found for player:",g.id,g.name)}console.log("[getFootballTeamSquad] Stats attachment complete:",{totalPlayers:u.players.length,playersWithStats:f,playersWithoutStats:u.players.length-f})}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 stats fetch");return u}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||c(),{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||c(),{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 v(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,u=s.home_team.id===e,d=u?s.away_team:s.home_team,f=`${s.goal_home}-${s.goal_away}`;return{matchId:s.id.toString(),result:a.outcome,score:f,homeAway:u?"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:v(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=>v(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 Ie(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=v(a.code);o.has(s)||o.set(s,Te(a))}return{entries:t,metadata:{legend:Array.from(o.values())}}}async function Ae(e,t){const o=t||c(),{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:[]}}:Ie(s)}exports.SPORTAL365_SPORTS_SEARCH_DOMAIN=P;exports.SPORTAL365_STATISTICS_DOMAIN=N;exports.addProviderRef=H;exports.createHttpClient=E;exports.footballHttp=l;exports.getConfig=c;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=k;exports.getFootballSeasonDetails=ve;exports.getFootballStandings=Ae;exports.getFootballTeam=me;exports.getFootballTeamSquad=pe;exports.getProviderRefId=M;exports.isConfigured=D;exports.setConfig=R;exports.toProviderRefArray=i;
|
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.4",
|
|
8
8
|
"type": "module",
|
|
9
9
|
"main": "./fansunited-data-layer.cjs",
|
|
10
10
|
"module": "./fansunited-data-layer.js",
|