fansunited-data-layer 0.12.0 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/api/fansunited-sdk/odds/matches.d.ts.map +1 -1
  2. package/api/sportal365-sports/football/index.d.ts +2 -2
  3. package/api/sportal365-sports/football/index.d.ts.map +1 -1
  4. package/api/sportal365-sports/football/statistics/index.d.ts +46 -1
  5. package/api/sportal365-sports/football/statistics/index.d.ts.map +1 -1
  6. package/api/sportal365-sports/football/statistics/player-career.transformer.d.ts +11 -0
  7. package/api/sportal365-sports/football/statistics/player-career.transformer.d.ts.map +1 -0
  8. package/api/sportal365-sports/football/statistics/player-career.types.d.ts +115 -0
  9. package/api/sportal365-sports/football/statistics/player-career.types.d.ts.map +1 -0
  10. package/api/sportal365-sports/football/statistics/player-recent.transformer.d.ts +11 -0
  11. package/api/sportal365-sports/football/statistics/player-recent.transformer.d.ts.map +1 -0
  12. package/api/sportal365-sports/football/statistics/player-recent.types.d.ts +31 -0
  13. package/api/sportal365-sports/football/statistics/player-recent.types.d.ts.map +1 -0
  14. package/api/sportal365-sports/index.d.ts +2 -2
  15. package/api/sportal365-sports/index.d.ts.map +1 -1
  16. package/api/sportal365-sports/shared/odds.transformer.d.ts.map +1 -1
  17. package/client.cjs +1 -1
  18. package/client.js +2 -2
  19. package/fansunited-data-layer.cjs +1 -1
  20. package/fansunited-data-layer.js +15 -13
  21. package/index.d.ts +3 -3
  22. package/index.d.ts.map +1 -1
  23. package/{matches-CmJlbloT.js → matches-BvHU-bP0.js} +723 -559
  24. package/matches-Ci0Ci_Mw.cjs +1 -0
  25. package/package.json +1 -1
  26. package/types/canonical/index.d.ts +1 -1
  27. package/types/canonical/index.d.ts.map +1 -1
  28. package/types/canonical/odds.types.d.ts +1 -0
  29. package/types/canonical/odds.types.d.ts.map +1 -1
  30. package/types/canonical/statistics.types.d.ts +102 -0
  31. package/types/canonical/statistics.types.d.ts.map +1 -1
  32. package/matches-B4GkQKDb.cjs +0 -1
@@ -0,0 +1 @@
1
+ "use strict";const O="__FANSUNITED_DATA_LAYER_CONFIG__";function Y(e){globalThis[O]=e}function g(){const e=globalThis[O];if(!e)throw new Error("Data layer config not initialized. Call setConfig() in your root layout.");return e}function V(){return globalThis[O]!==void 0}function M(e){const t=e.replace(/\/$/,"");function n(s){const{sportal365Sports:a}=s;if(!a)throw new Error("Sportal365 Sports API configuration is missing");const c=`${a.username}:${a.password}`;return`Basic ${btoa(c)}`}function o(s){return`${t}${s}`}return{async get(s){const a=s.config||g(),{sportal365Sports:c}=a;if(!c)throw new Error("Sportal365 Sports API configuration is missing");const r=new URL(o(s.path));if(s.params)for(const[f,m]of Object.entries(s.params))m!==void 0&&(Array.isArray(m)?m.length>0&&r.searchParams.set(f,m.join(",")):r.searchParams.set(f,m));const d=await fetch(r.toString(),{method:"GET",headers:{Authorization:n(a),"Content-Type":"application/json","X-Project":c.projectId,...s.headers},signal:c.timeout?AbortSignal.timeout(c.timeout):void 0,...s.next&&{next:s.next}});if(!d.ok)throw new Error(`Sportal365 API error: ${d.status} ${d.statusText}`);return d.json()}}}const W="https://football.api.sportal365.com",K="https://basketball.api.sportal365.com",j="https://tennis.api.sportal365.com",q="https://sports-statistics.api.sportal365.com",X="https://sports-search.api.sportal365.com",z="https://standing.api.sportal365.com",p=M(W);function L(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 J={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 I(e){const t=J[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:L(e.primary_player),secondaryPlayer:L(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 u(e,t="sportal365"){if(e)return[{provider:t,id:e}]}function Q(e,t){return e?e.find(o=>o.provider===t)?.id:void 0}function Z(e,t,n){const o=e??[],s=o.findIndex(a=>a.provider===t);if(s>=0){const a=[...o];return a[s]={provider:t,id:n},a}else return[...o,{provider:t,id:n}]}function w(e){const t=e.urls?.find(n=>n.app_type==="desktop")?.url;return{id:e.id,name:e.name,code:e.code,value:e.value??void 0,odds:e.odds,oddsOld:e.odds_old,movement:e.movement==="STABLE"?"NONE":e.movement,url:t,providerSelectionId:e.provider_info?.selection_id}}function ee(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(w)}}function te(e){if(!e)return!0;const t=e.replace("#",""),n=parseInt(t.substring(0,2),16),o=parseInt(t.substring(2,4),16),s=parseInt(t.substring(4,6),16);return(.2126*n+.7152*o+.0722*s)/255<.5}function oe(e){const t=e.bookmaker.assets?.[0],n=e.bookmaker.branding||t,o=e.bookmaker.branding?.background_color||t?.background_color,s=e.bookmaker.branding?.text_color||(te(o)?"#FFFFFF":"#000000");return{operator:{id:e.bookmaker.id,name:e.bookmaker.name,url:e.bookmaker.url,branding:n?{backgroundColor:o,textColor:s,logo:t?.logo}:void 0},type:e.type,markets:e.markets.map(ee)}}function x(e){return e.map(oe)}function ne(e){const t={finished_ap:"finished_after_penalties",finished_aet:"finished_after_extra_time",finished:"finished",not_started:"not_started",live:"live",interrupted:"interrupted",cancelled:"cancelled",postponed:"postponed",abandoned:"abandoned"};let n;return e.code&&t[e.code]?n=t[e.code]:n={FINISHED:"finished",NOT_STARTED:"not_started",LIVE:"live",INTERRUPTED:"interrupted",CANCELLED:"cancelled",POSTPONED:"postponed",UNKNOWN:"not_started",ABANDONED:"abandoned"}[e.type]??"not_started",{code:n,name:e.name,shortName:e.short_name,type:e.type}}function D(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:u(e.uuid)}}function se(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 ae(e){if(!e)return;const t=o=>o?{competitorOne:String(o.home),competitorTwo:String(o.away)}:void 0,n=e.after_extra_time??e.regular_time;return{competitorOne:n?.home!=null?String(n.home):null,competitorTwo:n?.away!=null?String(n.away):null,breakdown:{total:t(e.total),halfTime:t(e.half_time),regularTime:t(e.regular_time),extraTime:t(e.extra_time),penaltyShootout:t(e.penalty_shootout),aggregate:t(e.aggregate)}}}function ie(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:u(e.uuid)}}function re(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 de(e){if(!e.season?.tournament)return;const{tournament:t,...n}=e.season;return{id:t.id,name:t.name,slug:t.slug,type:t.type,region:t.region,country:t.country?{id:t.country.id,name:t.country.name,code:t.country.code??void 0,flag:t.country.assets?.flag?.url,providerRef:u(t.country.uuid)}:void 0,season:{id:n.id,name:n.name,status:n.status},stage:e.stage?{id:e.stage.id,name:e.stage.name,type:e.stage.type}:void 0,assets:t.assets?.logo?.url?{logo:t.assets.logo.url}:void 0,providerRef:u(t.uuid)}}function ue(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 b(e){return{id:e.id,slug:e.slug,sport:"football",status:ne(e.status),timing:se(e),competitorOne:D(e.home_team),competitorTwo:D(e.away_team),competition:de(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:u(e.round.uuid)}:void 0,group:e.group?{id:e.group.id,name:e.group.name,providerRef:u(e.group.uuid)}:void 0,venue:ie(e.venue),officials:re(e.referees),spectators:e.spectators??void 0,score:ae(e.score),mainEvents:e.main_events?.map(I).filter(t=>t!==null),penaltyShootoutEvents:e.penalty_shootout_events?.map(I).filter(t=>t!==null),winner:ue(e),coverage:e.coverage==="NOT_LIVE"?"UNKNOWN":e.coverage,lineupStatus:e.lineup_status==="UNCONFIRMED"?"EXPECTED":e.lineup_status,providerRef:u(e.uuid)}}function ce(e){const t=e.player;return{id:t.id,name:t.name,slug:t.slug,position:t.position,shirtNumber:e.shirt_number,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:u(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(I).filter(n=>n!==null),providerRef:u(t.uuid)}}function N(e){const t=[],n=[];for(const o of e.players){const s=ce(o);o.type.category==="start"?t.push(s):o.type.category==="sub"&&n.push(s)}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:u(e.coach.country.uuid)}:void 0,birthdate:e.coach.birthdate,providerRef:u(e.coach.uuid)}:void 0,starters:t,substitutes:n}}function le(e){return{matchId:e.match_id,confirmed:e.status==="CONFIRMED",competitorOne:N(e.home_team),competitorTwo:N(e.away_team)}}function h(e,t,n,o){return t==null?null:{key:e,value:String(t),label:n,unit:o}}function k(e,t){const n=(t.shots_on??0)+(t.shots_off??0)+(t.shots_blocked??0),o=[h("possession",t.possession,"Possession","%"),h("shots_total",n,"Shots"),h("shots_on_target",t.shots_on,"Shots on Target"),h("shots_off_target",t.shots_off,"Shots off Target"),h("shots_blocked",t.shots_blocked,"Shots Blocked"),h("corners",t.corners,"Corner Kicks"),h("goal_kicks",t.goal_kicks,"Goal Kicks"),h("throw_ins",t.throw_in,"Throw Ins"),h("offsides",t.offside,"Offsides"),h("fouls",t.fouls_committed,"Fouls"),h("yellow_cards",t.yellow_cards,"Yellow Cards"),h("passes",t.pass,"Passes"),h("crosses",t.crosses,"Crosses")];return{competitorId:e,statistics:o.filter(s=>s!==null)}}function me(e){const t=e.find(o=>o.home_team),n=e.find(o=>!o.home_team);if(!t||!n)throw new Error("Missing competitor statistics");return{competitorOne:k(String(t.team.id),t.statistics),competitorTwo:k(String(n.team.id),n.statistics)}}function ge(e,t){return{matchId:e,operators:x(t)}}function F(e){if(e==null||e==="")return;const t=typeof e=="number"?e:parseInt(e,10);return isNaN(t)?void 0:t}function pe(e){return{externalId:e.external_id,minute:F(e.elapsed),addedTime:F(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 fe(e,t,n){const o=n||g(),{sportal365Sports:s}=o,a=await p.get({path:`/v2/matches/${e}`,params:{language_code:t?.languageCode??s?.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??s?.languageCode??"en"},next:t?.next,config:o});return b(a)}async function _e(e,t,n){const o=n||g(),{sportal365Sports:s}=o;return(await p.get({path:`/v2/matches/${e}/events`,params:{language_code:t?.languageCode??s?.languageCode??"en"},headers:{"Accept-Language":t?.languageCode??s?.languageCode??"en"},next:t?.next,config:o})).events.map(I).filter(c=>c!==null)}async function ye(e,t,n){const o=n||g(),{sportal365Sports:s}=o,a=await p.get({path:`/v2/matches/${e}/lineups`,params:{language_code:t?.languageCode??s?.languageCode??"en"},headers:{"Accept-Language":t?.languageCode??s?.languageCode??"en"},next:t?.next,config:o});return le(a)}async function he(e,t,n){const o=n||g(),{sportal365Sports:s}=o,a=await p.get({path:`/v2/matches/${e}`,params:{language_code:t?.languageCode??s?.languageCode??"en",odd_client:t?.oddClient??s?.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??s?.languageCode??"en"},next:t?.next,config:o});return ge(e,a.odds??[])}async function ve(e,t,n){const o=n||g(),{sportal365Sports:s}=o,a=await p.get({path:`/events/${e}/teamstats`,params:{language_code:t?.languageCode??s?.languageCode??"en"},headers:{"Accept-Language":t?.languageCode??s?.languageCode??"en"},next:t?.next,config:o});return me(a)}async function Se(e,t,n){const o=n||g(),{sportal365Sports:s}=o;return(await p.get({path:`/matches/${e}/commentary`,params:{language_code:t?.languageCode??s?.languageCode??"en"},headers:{"Accept-Language":t?.languageCode??s?.languageCode??"en"},next:t?.next,config:o})).map(pe)}async function Ce(e,t){const n=t||g(),{sportal365Sports:o}=n;return(await p.get({path:"/v2/matches",params:{language_code:e.languageCode??o?.languageCode??"en",limit:e.limit.toString(),offset:e.offset.toString(),tournament_ids:e.tournamentIds,season_ids:e.seasonIds,stage_ids:e.stageIds,group_ids:e.groupIds,round_ids:e.roundIds,round_filter:e.roundFilter,from_kickoff_time:e.fromKickoffTime,to_kickoff_time:e.toKickoffTime,team_ids:e.teamIds,team_ids_operator:e.teamIdsOperator,referee_id:e.refereeId,venue_id:e.venueId,player_id:e.playerId,status_types:e.statusTypes,status_codes:e.statusCodes,odd_client:e.oddClient??o?.oddClient,odd_type:e.oddType,scope_type:e.scopeType,odd_format:e.oddFormat,market_types:e.marketTypes,bookmaker_ids:e.bookmakerIds,sort_direction:e.sortDirection,optional_data:e.optionalData},headers:{"Accept-Language":e.languageCode??o?.languageCode??"en"},next:e.next,config:n})).matches.map(b)}async function Te(e,t){const n=t||g(),{sportal365Sports:o}=n;return(await p.get({path:"/v2/matches/livescore",params:{match_ids:e?.matchIds,date:e?.date,utc_offset:e?.utcOffset?.toString(),tournament_group:e?.tournamentGroup,status_types:e?.statusTypes,selection_filter:e?.selectionFilter,language_code:e?.languageCode??o?.languageCode??"en",odd_client:e?.oddClient??o?.oddClient,odd_type:e?.oddType,scope_type:e?.scopeType,odd_format:e?.oddFormat,market_types:e?.marketTypes,optional_data:e?.optionalData},headers:{"Accept-Language":e?.languageCode??o?.languageCode??"en"},next:e?.next,config:n})).matches.map(b)}function Ie(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:u(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:u(e.venue.city.country.uuid)}:void 0,providerRef:u(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:u(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:u(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:u(e.coach.country.uuid)},birthdate:e.coach.birthdate,providerRef:u(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:u(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:u(e.current_season.uuid)}:void 0,form:e.form&&e.form.length>0?{competitorId:e.id,results:e.form.map(t=>{const o=t.participants[0].id===e.uuid?t.participants[1]:t.participants[0],s=t.result[0]?.results.find(r=>r.position==="1")?.value,a=t.result[0]?.results.find(r=>r.position==="2")?.value,c=t.outcome==="win"?"W":t.outcome==="draw"?"D":"L";return{matchId:t.id,result:c,score:s&&a?`${s}-${a}`:void 0,opponent:{id:o.id,name:o.name,logo:o.display_asset?.url},date:new Date(t.start_time),competition:t.competition?{id:t.competition.id,name:t.competition.name}:void 0}}),formString:e.form.map(t=>t.outcome==="win"?"W":t.outcome==="draw"?"D":"L").join("")}:void 0,providerRef:u(e.uuid)}}function be(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:u(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:u(t.id)}}function Ae(e){return{id:e.id,name:e.name,slug:e.slug,country:e.country?{id:e.country.id,name:e.country.name,code:e.country.code??void 0,flag:e.country.assets?.flag?.url,providerRef:u(e.country.uuid)}:void 0,birthdate:e.birthdate,providerRef:u(e.uuid)}}function Oe(e){return{teamId:e.team.id,teamName:e.team.name,coach:e.coach?Ae(e.coach):void 0,players:e.players.map(be)}}function Ee(e){const t=parseInt(e,10);return isNaN(t)?void 0:t}function i(e,t){const n=e.find(o=>o.name===t);return n?Ee(n.value):void 0}function Re(e,t){const n=e.statistics;return{playerId:e.player.id,seasonId:e.season.id,teamId:t,appearances:i(n,"played"),started:i(n,"started"),substituteIn:i(n,"substitute_in"),substituteOut:i(n,"substitute_out"),minutes:i(n,"minutes"),minutesSubstitute:i(n,"minutes_substitute"),goals:i(n,"goals"),goalsSubstitute:i(n,"goals_substitute"),penaltyGoals:i(n,"penalty_goals"),ownGoals:i(n,"own_goals"),assists:i(n,"assists"),shots:i(n,"shots"),shotsOnTarget:i(n,"shots_on_target"),yellowCards:i(n,"yellow_cards"),redCards:i(n,"red_cards"),foulsCommitted:i(n,"fouls_committed"),penaltiesCommitted:i(n,"penalties_committed"),penaltiesMissed:i(n,"penalties_missed"),cleansheets:i(n,"cleansheets"),saves:i(n,"saves"),conceded:i(n,"conceded"),caughtBall:i(n,"caught_ball"),penaltiesReceived:i(n,"penalties_received"),offsides:i(n,"offsides"),rawStatistics:n.map(o=>({name:o.name,value:o.value}))}}function Le(e){const t=e.statistics;return{playerId:e.player.id,seasonId:e.season.id,appearances:i(t,"played"),started:i(t,"started"),substituteIn:i(t,"substitute_in"),substituteOut:i(t,"substitute_out"),minutes:i(t,"minutes"),minutesSubstitute:i(t,"minutes_substitute"),goals:i(t,"goals"),goalsSubstitute:i(t,"goals_substitute"),penaltyGoals:i(t,"penalty_goals"),ownGoals:i(t,"own_goals"),assists:i(t,"assists"),shots:i(t,"shots"),shotsOnTarget:i(t,"shots_on_target"),yellowCards:i(t,"yellow_cards"),redCards:i(t,"red_cards"),foulsCommitted:i(t,"fouls_committed"),penaltiesCommitted:i(t,"penalties_committed"),penaltiesMissed:i(t,"penalties_missed"),cleansheets:i(t,"cleansheets"),saves:i(t,"saves"),conceded:i(t,"conceded"),caughtBall:i(t,"caught_ball"),penaltiesReceived:i(t,"penalties_received"),offsides:i(t,"offsides"),rawStatistics:t.map(n=>({name:n.name,value:n.value}))}}function l(e,t){if(!(e===void 0&&t===void 0))return(e??0)+(t??0)}function De(e,t){return{playerId:e.playerId,seasonId:e.seasonId,appearances:l(e.appearances,t.appearances),started:l(e.started,t.started),substituteIn:l(e.substituteIn,t.substituteIn),substituteOut:l(e.substituteOut,t.substituteOut),minutes:l(e.minutes,t.minutes),minutesSubstitute:l(e.minutesSubstitute,t.minutesSubstitute),goals:l(e.goals,t.goals),goalsSubstitute:l(e.goalsSubstitute,t.goalsSubstitute),penaltyGoals:l(e.penaltyGoals,t.penaltyGoals),ownGoals:l(e.ownGoals,t.ownGoals),assists:l(e.assists,t.assists),shots:l(e.shots,t.shots),shotsOnTarget:l(e.shotsOnTarget,t.shotsOnTarget),yellowCards:l(e.yellowCards,t.yellowCards),redCards:l(e.redCards,t.redCards),foulsCommitted:l(e.foulsCommitted,t.foulsCommitted),penaltiesCommitted:l(e.penaltiesCommitted,t.penaltiesCommitted),penaltiesMissed:l(e.penaltiesMissed,t.penaltiesMissed),cleansheets:l(e.cleansheets,t.cleansheets),saves:l(e.saves,t.saves),conceded:l(e.conceded,t.conceded),caughtBall:l(e.caughtBall,t.caughtBall),penaltiesReceived:l(e.penaltiesReceived,t.penaltiesReceived),offsides:l(e.offsides,t.offsides),rawStatistics:[...e.rawStatistics??[],...t.rawStatistics??[]]}}function Ne(e){return{tournamentSeason:{id:String(e.tournament_season.id),name:e.tournament_season.name,uuid:e.tournament_season.uuid,active:e.tournament_season.active,tournament:{id:String(e.tournament_season.tournament.id),name:e.tournament_season.tournament.name,uuid:e.tournament_season.tournament.uuid,type:e.tournament_season.tournament.type,region:e.tournament_season.tournament.region,logo:e.tournament_season.tournament.url_logo,country:e.tournament_season.tournament.country?{id:String(e.tournament_season.tournament.country.id),name:e.tournament_season.tournament.country.name,uuid:e.tournament_season.tournament.country.uuid}:void 0}},team:{id:String(e.team.id),name:e.team.name,uuid:e.team.uuid,threeLetterCode:e.team.three_letter_code,type:e.team.type,logo:e.team.url_logo},appearances:e.played,started:e.started,substituteIn:e.substitute_in,substituteOut:e.substitute_out,minutes:e.minutes,minutesSubstitute:e.minutes_substitute,goals:e.goals,goalsSubstitute:e.goals_substitute,penaltyGoals:e.penalty_goals,ownGoals:e.own_goals,assists:e.assists,shots:e.shots,shotsOnTarget:e.shots_on_target,yellowCards:e.yellow_cards,redCards:e.red_cards,foulsCommitted:e.fouls_committed,penaltiesCommitted:e.penalties_committed,penaltiesMissed:e.penalties_missed,penaltiesReceived:e.penalties_received,penaltiesSaved:e.penalties_saved,cleansheets:e.cleansheets,offsides:e.offsides,position:e.position,age:e.age,shirtNumber:e.shirt_number}}function ke(e){const t=e[0];return{playerId:String(t.player.id),playerName:t.player.name,playerUuid:t.player.uuid,entries:e.map(Ne)}}function Fe(e){const t=parseInt(e,10);return isNaN(t)?void 0:t}function v(e,t){const n=e.find(o=>o.name===t);return n?Fe(n.value):void 0}function Pe(e){return{id:e.id,name:e.name,uuid:e.uuid,threeLetterCode:e.three_letter_code,type:e.type,logo:e.assets?.logo?.url}}function Me(e){const t=e.aggregated_statistics;return{playerId:e.player.id,playerName:e.player.name,playerUuid:e.player.uuid,position:e.player.position,teams:e.teams.map(Pe),matches:e.matches.map(b),appearances:v(t,"played"),started:v(t,"started"),substituteIn:v(t,"substitute_in"),substituteOut:v(t,"substitute_out"),minutes:v(t,"minutes"),minutesSubstitute:v(t,"minutes_substitute"),goals:v(t,"goals"),goalsSubstitute:v(t,"goals_substitute"),penaltyGoals:v(t,"penalty_goals"),assists:v(t,"assists"),yellowCards:v(t,"yellow_cards"),redCards:v(t,"red_cards"),rawStatistics:t.map(n=>({name:n.name,value:n.value}))}}async function U(e,t){const n=t||g(),{sportal365Sports:o}=n,{seasonIds:s,teamId:a,languageCode:c,next:r}=e,d=r??{revalidate:0},f={season_ids:s.join(","),team_id:a,language_code:c??o?.languageCode??"en"},m=await p.get({path:"/v2/statistics/players/season",params:f,headers:{"Accept-Language":c??o?.languageCode??"en"},next:d,config:n});if(!m.statistics)return console.error("[getFootballPlayerSeasonStatistics] Invalid API response - missing statistics array:",{teamId:a,seasonIds:s,response:m}),{};if(m.statistics.length===0)throw console.warn("[getFootballPlayerSeasonStatistics] API returned empty statistics array:",{teamId:a,seasonIds:s,hint:"This could be due to: wrong credentials, wrong project header, no data for this team/season, or API issue"}),new Error(`No player statistics found for team ${a} in seasons ${s.join(", ")}. This could be due to: wrong credentials, wrong X-Project header, or no data available for this team/season.`);const _={};for(const S of m.statistics){const T=S.player.id;_[T]=Re(S,a)}return _}async function xe(e,t){const n=t||g(),{sportal365Sports:o}=n,{playerIds:s,seasonIds:a,languageCode:c,next:r}=e,d=r??{revalidate:0},f={player_ids:s.join(","),season_ids:a.join(","),language_code:c??o?.languageCode??"en"},m=await p.get({path:"/v2/statistics/players/season",params:f,headers:{"Accept-Language":c??o?.languageCode??"en"},next:d,config:n});if(!m.statistics)return console.error("[getFootballPlayerSeasonStatisticsByPlayerIds] Invalid API response - missing statistics array:",{playerIds:s,seasonIds:a,response:m}),{};if(m.statistics.length===0)return{};const _={};for(const S of m.statistics){const T=S.player.id,y=Le(S);_[T]?_[T]=De(_[T],y):_[T]=y}return _}async function Ue(e,t){const n=t||g(),{sportal365Sports:o}=n,{playerId:s,languageCode:a,next:c}=e,r=c??{revalidate:0},d=await p.get({path:`/players/${s}/statistics`,params:{language_code:a??o?.languageCode??"en"},headers:{"Accept-Language":a??o?.languageCode??"en"},next:r,config:n});if(!Array.isArray(d)||d.length===0)throw new Error(`No career statistics found for player ${s}. This could be due to: invalid player ID/slug, wrong credentials, or no data available.`);return ke(d)}async function $e(e,t){const n=t||g(),{sportal365Sports:o}=n,{playerId:s,matches:a,tournamentIds:c,teamId:r,languageCode:d,next:f}=e,m=f??{revalidate:0},_={language_code:d??o?.languageCode??"en"};a!=null&&(_.matches=String(a)),c?.length&&(_.tournament_ids=c.join(",")),r&&(_.team_id=r);const S=await p.get({path:`/v2/statistics/players/${s}/recent-statistics`,params:_,headers:{"Accept-Language":d??o?.languageCode??"en"},next:m,config:n});if(!S.player||!S.matches)throw new Error(`No recent statistics found for player ${s}. This could be due to: invalid player ID, wrong credentials, or no data available.`);return Me(S)}async function Ge(e,t,n){const o=n||g(),{sportal365Sports:s}=o,a=await p.get({path:`/v2/teams/${e}`,params:{language_code:t?.languageCode??s?.languageCode??"en",optional_data:"form"},headers:{"Accept-Language":t?.languageCode??s?.languageCode??"en"},next:t?.next,config:o});return Ie(a)}async function He(e,t,n){const o=n||g(),{sportal365Sports:s}=o,a=t?.seasonIds&&t.seasonIds.length>0?{revalidate:0}:t?.next,c=await p.get({path:`/v2/teams/${e}/squad`,params:{language_code:t?.languageCode??s?.languageCode??"en",memberStatus:t?.memberStatus??"ACTIVE"},headers:{"Accept-Language":t?.languageCode??s?.languageCode??"en"},next:a,config:o}),r=Oe(c);if(t?.seasonIds&&t.seasonIds.length>0)try{const d=await U({seasonIds:t.seasonIds,teamId:e,languageCode:t.languageCode,next:t.next},o);for(const f of r.players){const m=d[f.id];m&&(f.seasonStatistics=m)}}catch(d){console.error("[getFootballTeamSquad] Failed to fetch player statistics:",{error:d instanceof Error?d.message:String(d),stack:d instanceof Error?d.stack:void 0,teamId:e,seasonIds:t.seasonIds})}else console.warn("[getFootballTeamSquad] No seasonIds provided, skipping stats fetch");return r}function Be(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:u(e.country.uuid)},seasons:e.seasons.map(t=>({id:String(t.id),name:t.name,slug:t.slug,active:t.active,providerRef:u(t.uuid)})),assets:e.url_logo?{logo:e.url_logo}:void 0,providerRef:u(e.uuid)}}function Ye(e){const t=e.rounds.map(n=>({id:n.id,name:n.name,key:n.key,type:n.type,status:n.status,startDate:n.start_date,endDate:n.end_date,providerRef:u(n.uuid)}));return{id:e.stage.id,name:e.stage.name,slug:e.stage.slug,shortName:e.stage.short_name??void 0,type:e.stage.type,status:e.stage.status,coverage:e.stage.coverage,order:e.stage.order_in_season,startDate:e.stage.start_date,endDate:e.stage.end_date,rounds:t,providerRef:u(e.stage.uuid)}}function Ve(e){const{season:t,stages:n}=e,{tournament:o}=t,s={id:o.id,name:o.name,slug:o.slug,type:o.type,region:o.region,gender:o.gender,country:{id:o.country.id,name:o.country.name,code:o.country.code??void 0,flag:o.country.assets?.flag?.url,providerRef:u(o.country.uuid)},assets:o.assets?.logo?.url?{logo:o.assets.logo.url}:void 0,providerRef:u(o.uuid)};return{id:t.id,name:t.name,slug:t.slug,active:t.status==="ACTIVE",status:t.status==="ACTIVE"?"ACTIVE":"INACTIVE",competition:s,stages:n.map(Ye),providerRef:u(t.uuid)}}async function We(e,t,n){const o=n||g(),{sportal365Sports:s}=o,a=await p.get({path:`/tournaments/${e}`,params:{language_code:t?.languageCode??s?.languageCode??"en"},headers:{"Accept-Language":t?.languageCode??s?.languageCode??"en"},next:t?.next,config:o});return Be(a)}async function Ke(e,t){const n=t||g(),{sportal365Sports:o}=n;if(!e?.seasonId&&!e?.competitionId)throw new Error("Either seasonId or competitionId must be provided");const s={language_code:e?.languageCode??o?.languageCode??"en"};e.seasonId?s.season_id=e.seasonId:e.competitionId&&(s.tournament_id=e.competitionId,e.status&&(s.status=e.status));const a=await p.get({path:"/v2/seasons/details",params:s,headers:{"Accept-Language":e?.languageCode??o?.languageCode??"en"},next:e?.next,config:n});return Ve(a)}function E(e){return{championsleague:"championsLeague",europaleague:"europaLeague",conferenceleague:"conferenceLeague",relegation:"relegation",playoff:"playoff",promotion:"promotion"}[e.toLowerCase()]??e.toLowerCase().replace(/_/g,"")}function je(e){const t=e.toLowerCase();return t==="relegation"?"BOTTOM":t==="playoff"?"MIDDLE":"TOP"}function qe(e,t){if(!t||t.length===0)return;const n=t.map(s=>{const a=s.event,c=a.home_team.id===e,r=c?a.away_team:a.home_team,d=`${a.goal_home}-${a.goal_away}`;return{matchId:a.id.toString(),result:s.outcome,score:d,homeAway:c?"HOME":"AWAY",opponent:{id:r.id.toString(),name:r.name,logo:r.url_logo},date:new Date(a.start_time),competition:void 0}}),o=n.map(s=>s.result).join("");return{competitorId:e.toString(),results:n,formString:o}}function Xe(e){return{key:E(e.code),name:e.name,position:je(e.type)}}function ze(e){const t={played:e.played,won:e.wins,drawn:e.draws,lost:e.defeits,goalsFor:e.goals_for,goalsAgainst:e.goals_against,goalDifference:e.goals_for-e.goals_against,points:e.points},n=e.rules?.length>0?e.rules.map(s=>E(s.code)):void 0,o=qe(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,uuid:e.team.uuid},stats:t,form:o,rules:n}}function Je(e){const t=e.map(ze),n=new Map;for(const o of e)if(o.rules)for(const s of o.rules){const a=E(s.code);n.has(a)||n.set(a,Xe(s))}return{entries:t,metadata:{legend:Array.from(n.values())}}}async function Qe(e,t){const n=t||g(),{sportal365Sports:o}=n,s=e.expand?.join(","),a=await p.get({path:`/tournaments/seasons/stages/${e.stageId}/standing`,params:{expand:s,language_code:e.languageCode??o?.languageCode??"en"},headers:{"Accept-Language":e.languageCode??o?.languageCode??"en"},next:e.next,config:n});return!a||a.length===0?{entries:[],metadata:{legend:[]}}:Je(a)}function $(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 Ze(e){return{id:e.id,name:e.name,type:e.type?.toUpperCase()||"LEAGUE",gender:e.gender?.toUpperCase(),country:e.country?$(e.country):void 0,assets:e.assets?.logo?{logo:e.assets.logo}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function we(e){if(e.status){const a={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(a)return a}let t="not_started",n="NOT_STARTED",o="Not Started";return e.finished_at?(t="finished",n="FINISHED",o="Finished"):e.started_at&&(t="live",n="LIVE",o="Live"),{code:t,name:o,type:n}}function et(e){return{kickoffTime:new Date(e.kickoff_at),currentMinute:e.minute??void 0,currentPeriod:void 0}}function P(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?$(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)return;const t=o=>o?{competitorOne:o.home_goals!==null?String(o.home_goals):"0",competitorTwo:o.away_goals!==null?String(o.away_goals):"0"}:void 0,n=t(e.ft_score);if(n)return{competitorOne:n.competitorOne,competitorTwo:n.competitorTwo,breakdown:{total:n,halfTime:t(e.ht_score),regularTime:t(e.ft_score),extraTime:t(e.aet_score),penaltyShootout:t(e.pen_score)}}}function R(e){return{id:e.id,sport:e.sport??"football",status:we(e),timing:et(e),competitorOne:P(e.home_team),competitorTwo:P(e.away_team),score:tt(e.scores),competition:e.context?.competition?Ze(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 ot(e){return R(e.data)}function nt(e){return e.data.map(R)}function st(e){return e.map(R)}async function G(e,t,n){const o=await e.loyalty.getTemplateMatches(t,n?.groupId,n?.disableCache);return st(o)}async function at(e,t,n,o){return(await G(e,t,o)).filter(a=>a.competitorOne.id===n||a.competitorTwo.id===n)}async function it(e,t,n){const o=await e.loyalty.getTemplateById(t,n?.disableCache);return{id:o.id,name:o.name,description:o.description,type:o.type,fromDate:o.fromDate,toDate:o.toDate,markets:o.markets||[],teamIds:o.teamIds||[],matchIds:o.matchIds||[],groups:(o.groups||[]).map(a=>({groupId:a.groupId,label:a.label,flags:a.flags||[],filters:{fromDate:a.filters?.fromDate||"",toDate:a.filters?.toDate||"",matchIds:a.filters?.matchIds||[]}})),gameIds:o.gameIds||[],gameTypes:o.gameTypes||[],competitionIds:o.competitionIds||[],excludedProfileIds:o.excludedProfileIds||[],rules:o.rules||"",labels:o.labels||{},customFields:o.customFields||{},branding:o.branding?JSON.parse(JSON.stringify(o.branding)):{},brandingId:null,flags:o.flags||[],images:{main:o.images?.main||null,cover:o.images?.cover||null,mobile:o.images?.mobile||null},status:o.status,automaticallyChangeStatus:o.automaticallyChangeStatus||!1,createdAt:o.createdAt,updatedAt:o.updatedAt,related:o.related||[],adContent:o.adContent||""}}function rt(e){return{"1x2":"1X2",12:"12",OVER_UNDER:"OVER_UNDER",DOUBLE_CHANCE:"DOUBLE_CHANCE",BOTH_TO_SCORE:"BOTH_TO_SCORE",DRAW_NO_BET:"DRAW_NO_BET",FIRST_TEAM_TO_SCORE:"FIRST_TEAM_TO_SCORE",CORRECT_SCORE:"CORRECT_SCORE",FIRST_HALF_GOALS:"FIRST_HALF_GOALS",FIRST_PLAYER_TO_SCORE:"FIRST_PLAYER_TO_SCORE",PLAYER_TO_SCORE_DURING_GAME:"PLAYER_TO_SCORE_DURING_GAME",PLAYER_TO_RECEIVE_CARD:"PLAYER_TO_RECEIVE_CARD",FIRST_HALF_AND_FINAL_RESULT:"FIRST_HALF_AND_FINAL_RESULT"}[e]||e.toUpperCase()}function dt(e,t){const n=new Map;return e.forEach((o,s)=>{if(!o||o.length===0)return;const c=(t?o.filter(r=>r.bookmaker&&t.includes(r.bookmaker.id)):o).filter(r=>r.bookmaker&&r.markets&&r.markets.length>0).map(r=>{const d=r.bookmaker,f=d.assets?.[0],m=d.branding?.backgroundColor||f?.backgroundColor,_=d.branding?.textColor||(ut(m)?"#FFFFFF":"#000000"),S=f?.transparentBackgroundUrl||f?.logo,T=d.eventUrls?.find(y=>y.appType==="desktop")?.url||d.links?.find(y=>y.appType==="desktop")?.homepageUrl||d.url||"";return{operator:{id:d.id,name:d.name,url:T,branding:{backgroundColor:m,textColor:_,logo:S}},type:r.type,markets:r.markets.map(y=>({type:{id:y.type.id,code:y.type.code,name:y.type.name},period:{id:y.scope.id,type:y.scope.type,name:y.scope.name},selections:y.selections.map(C=>{const H=C.urls?.find(B=>B.appType==="desktop")?.url;let A="NONE";return C.movement==="UP"?A="UP":C.movement==="DOWN"&&(A="DOWN"),{id:C.id,name:C.name,code:C.code,value:C.value,odds:C.odds,oddsOld:C.oddsOld,movement:A,url:H,providerSelectionId:C.providerInfo?.selectionId}})}))}});n.set(s,c)}),n}function ut(e){if(!e)return!0;const t=e.replace("#",""),n=parseInt(t.substring(0,2),16),o=parseInt(t.substring(2,4),16),s=parseInt(t.substring(4,6),16);return(.2126*n+.7152*o+.0722*s)/255<.5}async function ct(e,t,n){if(!t||t.length===0)return new Map;const o={oddType:n?.oddType||"ALL",scopeType:n?.scopeType||"ORDINARY_TIME",oddFormat:n?.oddFormat||"DECIMAL"};n?.marketTypes&&n.marketTypes.length>0&&(o.marketTypes=n.marketTypes.map(a=>rt(a)));const s=await e.odds.getByMatchIds(t,o);return dt(s,n?.bookmakerIds)}exports.SPORTAL365_BASKETBALL_DOMAIN=K;exports.SPORTAL365_SPORTS_SEARCH_DOMAIN=X;exports.SPORTAL365_STANDINGS_DOMAIN=z;exports.SPORTAL365_STATISTICS_DOMAIN=q;exports.SPORTAL365_TENNIS_DOMAIN=j;exports.addProviderRef=Z;exports.createHttpClient=M;exports.footballHttp=p;exports.getBatchMatchOdds=ct;exports.getConfig=g;exports.getFootballCompetition=We;exports.getFootballLivescore=Te;exports.getFootballMatch=fe;exports.getFootballMatchCommentary=Se;exports.getFootballMatchEvents=_e;exports.getFootballMatchLineups=ye;exports.getFootballMatchOdds=he;exports.getFootballMatchStatistics=ve;exports.getFootballMatches=Ce;exports.getFootballPlayerCareerStatistics=Ue;exports.getFootballPlayerRecentStatistics=$e;exports.getFootballPlayerSeasonStatistics=U;exports.getFootballPlayerSeasonStatisticsByPlayerIds=xe;exports.getFootballSeasonDetails=Ke;exports.getFootballStandings=Qe;exports.getFootballTeam=Ge;exports.getFootballTeamSquad=He;exports.getLeaderboardMatches=G;exports.getLeaderboardTeamMatches=at;exports.getLeaderboardTemplate=it;exports.getProviderRefId=Q;exports.isConfigured=V;exports.setConfig=Y;exports.toProviderRefArray=u;exports.transformMatch=ot;exports.transformMatches=nt;exports.transformOdds=x;
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.12.0",
7
+ "version": "0.13.0",
8
8
  "type": "module",
9
9
  "main": "./fansunited-data-layer.cjs",
10
10
  "module": "./fansunited-data-layer.js",
@@ -7,7 +7,7 @@ export type { FUSportsCountry, FUSportsCity, FUSportsCompetitor, FUSportsCompeti
7
7
  export type { FUSportsMatchScore, FUSportsMatchStatus, FUSportsMatchTiming, FUSportsMatchWinner, FUSportsMatch, FUSportsMatchSimple, } from "./match.types";
8
8
  export type { FUSportsFootballEventType, FUSportsOtherEventType, FUSportsMatchEvent } from "./event.types";
9
9
  export type { FUSportsLineupMember, FUSportsCompetitorLineup, FUSportsMatchLineups } from "./lineup.types";
10
- export type { FUSportsMatchPeriod, FUSportsStatisticEntry, FUSportsCompetitorStatistics, FUSportsMatchStatistics, FUSportsPlayerStatistic, FUSportsPlayerSeasonStatistics, FUSportsTeamSeasonStatistics, } from "./statistics.types";
10
+ export type { FUSportsMatchPeriod, FUSportsStatisticEntry, FUSportsCompetitorStatistics, FUSportsMatchStatistics, FUSportsPlayerStatistic, FUSportsPlayerSeasonStatistics, FUSportsCareerTournamentSeason, FUSportsCareerTeam, FUSportsPlayerCareerStatisticsEntry, FUSportsPlayerCareerStatistics, FUSportsPlayerRecentStatistics, FUSportsTeamSeasonStatistics, } from "./statistics.types";
11
11
  export type { FUSportsBettingOperatorBranding, FUSportsBettingOperator, FUSportsOddSelection, FUSportsMarketPeriod, FUSportsMarketType, FUSportsOddMarket, FUSportsBettingOperatorOdds, FUSportsMatchOdds, FUSportsBatchMatchOdds, } from "./odds.types";
12
12
  export type { FUSportsCommentaryDetail, FUSportsCommentaryMeta, FUSportsCommentaryItem } from "./commentary.types";
13
13
  export type { FUSportsStandingEntry, FUSportsCompetitorForm, FUSportsStandingLegendItem, FUSportsStandingsMetadata, FUSportsStandings, FUSportsStandingsTable, } from "./standing.types";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/types/canonical/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,YAAY,EACR,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,EACtB,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,wBAAwB,EACxB,aAAa,EACb,eAAe,EACf,eAAe,EACf,UAAU,EAEV,0BAA0B,EAC1B,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,GACvB,MAAM,cAAc,CAAC;AAGtB,YAAY,EACR,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,mBAAmB,GACtB,MAAM,eAAe,CAAC;AAGvB,YAAY,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAG3G,YAAY,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAG3G,YAAY,EACR,mBAAmB,EACnB,sBAAsB,EACtB,4BAA4B,EAC5B,uBAAuB,EACvB,uBAAuB,EACvB,8BAA8B,EAC9B,4BAA4B,GAC/B,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EACR,+BAA+B,EAC/B,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,2BAA2B,EAC3B,iBAAiB,EACjB,sBAAsB,GACzB,MAAM,cAAc,CAAC;AAGtB,YAAY,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAGnH,YAAY,EACR,qBAAqB,EACrB,sBAAsB,EACtB,0BAA0B,EAC1B,yBAAyB,EACzB,iBAAiB,EACjB,sBAAsB,GACzB,MAAM,kBAAkB,CAAC;AAG1B,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGxE,YAAY,EACR,wBAAwB,EACxB,8BAA8B,EAC9B,0BAA0B,EAC1B,wBAAwB,EACxB,6BAA6B,EAC7B,yBAAyB,EACzB,yBAAyB,EACzB,oBAAoB,EACpB,qBAAqB,GACxB,MAAM,gBAAgB,CAAC;AAGxB,YAAY,EACR,mBAAmB,EACnB,oBAAoB,EACpB,8BAA8B,EAC9B,2BAA2B,EAC3B,8BAA8B,EAC9B,8BAA8B,EAC9B,+BAA+B,EAC/B,gCAAgC,EAChC,+BAA+B,EAC/B,iCAAiC,EACjC,+BAA+B,EAC/B,oCAAoC,EACpC,+BAA+B,EAC/B,iCAAiC,EACjC,0BAA0B,EAC1B,2BAA2B,GAC9B,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/types/canonical/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,YAAY,EACR,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,EACtB,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,wBAAwB,EACxB,aAAa,EACb,eAAe,EACf,eAAe,EACf,UAAU,EAEV,0BAA0B,EAC1B,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,GACvB,MAAM,cAAc,CAAC;AAGtB,YAAY,EACR,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,mBAAmB,GACtB,MAAM,eAAe,CAAC;AAGvB,YAAY,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAG3G,YAAY,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAG3G,YAAY,EACR,mBAAmB,EACnB,sBAAsB,EACtB,4BAA4B,EAC5B,uBAAuB,EACvB,uBAAuB,EACvB,8BAA8B,EAC9B,8BAA8B,EAC9B,kBAAkB,EAClB,mCAAmC,EACnC,8BAA8B,EAC9B,8BAA8B,EAC9B,4BAA4B,GAC/B,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EACR,+BAA+B,EAC/B,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,2BAA2B,EAC3B,iBAAiB,EACjB,sBAAsB,GACzB,MAAM,cAAc,CAAC;AAGtB,YAAY,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAGnH,YAAY,EACR,qBAAqB,EACrB,sBAAsB,EACtB,0BAA0B,EAC1B,yBAAyB,EACzB,iBAAiB,EACjB,sBAAsB,GACzB,MAAM,kBAAkB,CAAC;AAG1B,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGxE,YAAY,EACR,wBAAwB,EACxB,8BAA8B,EAC9B,0BAA0B,EAC1B,wBAAwB,EACxB,6BAA6B,EAC7B,yBAAyB,EACzB,yBAAyB,EACzB,oBAAoB,EACpB,qBAAqB,GACxB,MAAM,gBAAgB,CAAC;AAGxB,YAAY,EACR,mBAAmB,EACnB,oBAAoB,EACpB,8BAA8B,EAC9B,2BAA2B,EAC3B,8BAA8B,EAC9B,8BAA8B,EAC9B,+BAA+B,EAC/B,gCAAgC,EAChC,+BAA+B,EAC/B,iCAAiC,EACjC,+BAA+B,EAC/B,oCAAoC,EACpC,+BAA+B,EAC/B,iCAAiC,EACjC,0BAA0B,EAC1B,2BAA2B,GAC9B,MAAM,uBAAuB,CAAC"}
@@ -30,6 +30,7 @@ export interface FUSportsOddSelection {
30
30
  oddsOld?: string;
31
31
  movement?: "UP" | "DOWN" | "NONE";
32
32
  url?: string;
33
+ providerSelectionId?: string;
33
34
  }
34
35
  /**
35
36
  * Market period (e.g., full time, first half)
@@ -1 +1 @@
1
- {"version":3,"file":"odds.types.d.ts","sourceRoot":"","sources":["../../../src/lib/types/canonical/odds.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,+BAA+B;IAC5C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,+BAA+B,CAAC;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,IAAI,EAAE,kBAAkB,CAAC;IACzB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,UAAU,EAAE,oBAAoB,EAAE,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IACxC,QAAQ,EAAE,uBAAuB,CAAC;IAClC,IAAI,EAAE,WAAW,GAAG,MAAM,CAAC;IAC3B,OAAO,EAAE,iBAAiB,EAAE,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,2BAA2B,EAAE,CAAC;CAC5C;AAED;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG,GAAG,CAAC,MAAM,EAAE,2BAA2B,EAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"odds.types.d.ts","sourceRoot":"","sources":["../../../src/lib/types/canonical/odds.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,+BAA+B;IAC5C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,+BAA+B,CAAC;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,IAAI,EAAE,kBAAkB,CAAC;IACzB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,UAAU,EAAE,oBAAoB,EAAE,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IACxC,QAAQ,EAAE,uBAAuB,CAAC;IAClC,IAAI,EAAE,WAAW,GAAG,MAAM,CAAC;IAC3B,OAAO,EAAE,iBAAiB,EAAE,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,2BAA2B,EAAE,CAAC;CAC5C;AAED;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG,GAAG,CAAC,MAAM,EAAE,2BAA2B,EAAE,CAAC,CAAC"}
@@ -70,6 +70,108 @@ export interface FUSportsPlayerSeasonStatistics {
70
70
  totalCards?: number;
71
71
  rawStatistics?: FUSportsPlayerStatistic[];
72
72
  }
73
+ /**
74
+ * Tournament season summary for career statistics
75
+ */
76
+ export interface FUSportsCareerTournamentSeason {
77
+ id: string;
78
+ name: string;
79
+ uuid: string;
80
+ active: boolean;
81
+ tournament: {
82
+ id: string;
83
+ name: string;
84
+ uuid: string;
85
+ type: string;
86
+ region: string;
87
+ logo?: string;
88
+ country?: {
89
+ id: string;
90
+ name: string;
91
+ uuid: string;
92
+ };
93
+ };
94
+ }
95
+ /**
96
+ * Team summary for career statistics
97
+ */
98
+ export interface FUSportsCareerTeam {
99
+ id: string;
100
+ name: string;
101
+ uuid: string;
102
+ threeLetterCode: string;
103
+ type: string;
104
+ logo?: string;
105
+ }
106
+ /**
107
+ * Single entry in a player's career statistics.
108
+ * Each entry represents stats for one tournament season with one team.
109
+ */
110
+ export interface FUSportsPlayerCareerStatisticsEntry {
111
+ tournamentSeason: FUSportsCareerTournamentSeason;
112
+ team: FUSportsCareerTeam;
113
+ appearances?: number;
114
+ started?: number;
115
+ substituteIn?: number;
116
+ substituteOut?: number;
117
+ minutes?: number;
118
+ minutesSubstitute?: number;
119
+ goals?: number;
120
+ goalsSubstitute?: number;
121
+ penaltyGoals?: number;
122
+ ownGoals?: number;
123
+ assists?: number;
124
+ shots?: number;
125
+ shotsOnTarget?: number;
126
+ yellowCards?: number;
127
+ redCards?: number;
128
+ foulsCommitted?: number;
129
+ penaltiesCommitted?: number;
130
+ penaltiesMissed?: number;
131
+ penaltiesReceived?: number;
132
+ penaltiesSaved?: number;
133
+ cleansheets?: number;
134
+ offsides?: number;
135
+ position?: string;
136
+ age?: number;
137
+ shirtNumber?: number | null;
138
+ }
139
+ /**
140
+ * A player's full career statistics across all tournaments and teams.
141
+ */
142
+ export interface FUSportsPlayerCareerStatistics {
143
+ playerId: string;
144
+ playerName: string;
145
+ playerUuid: string;
146
+ entries: FUSportsPlayerCareerStatisticsEntry[];
147
+ }
148
+ /**
149
+ * Player recent statistics - aggregated stats from a player's last N matches,
150
+ * along with the matches themselves and the teams they played for.
151
+ */
152
+ export interface FUSportsPlayerRecentStatistics {
153
+ playerId: string;
154
+ playerName: string;
155
+ playerUuid: string;
156
+ position: string;
157
+ /** Teams the player played for in the recent matches */
158
+ teams: FUSportsCareerTeam[];
159
+ /** The recent matches included in the statistics */
160
+ matches: import("./match.types").FUSportsMatch[];
161
+ appearances?: number;
162
+ started?: number;
163
+ substituteIn?: number;
164
+ substituteOut?: number;
165
+ minutes?: number;
166
+ minutesSubstitute?: number;
167
+ goals?: number;
168
+ goalsSubstitute?: number;
169
+ penaltyGoals?: number;
170
+ assists?: number;
171
+ yellowCards?: number;
172
+ redCards?: number;
173
+ rawStatistics?: FUSportsPlayerStatistic[];
174
+ }
73
175
  /**
74
176
  * Team seasonal statistics - aggregate stats for a team in a season
75
177
  */
@@ -1 +1 @@
1
- {"version":3,"file":"statistics.types.d.ts","sourceRoot":"","sources":["../../../src/lib/types/canonical/statistics.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG,YAAY,GAAG,aAAa,GAAG,YAAY,CAAC;AAE5F;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,mBAAmB,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,4BAA4B;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,sBAAsB,EAAE,CAAC;CACxC;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACpC,aAAa,EAAE,4BAA4B,CAAC;IAC5C,aAAa,EAAE,4BAA4B,CAAC;CAC/C;AAMD;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,8BAA8B;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAG3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IAGvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAG5B,eAAe,CAAC,EAAE,MAAM,CAAC;IAGzB,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAG3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,UAAU,CAAC,EAAE,MAAM,CAAC;IAGpB,aAAa,CAAC,EAAE,uBAAuB,EAAE,CAAC;CAC7C;AAMD;;GAEG;AACH,MAAM,WAAW,4BAA4B;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,sBAAsB,EAAE,CAAC;CACxC"}
1
+ {"version":3,"file":"statistics.types.d.ts","sourceRoot":"","sources":["../../../src/lib/types/canonical/statistics.types.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- "use strict";const A="__FANSUNITED_DATA_LAYER_CONFIG__";function $(e){globalThis[A]=e}function m(){const e=globalThis[A];if(!e)throw new Error("Data layer config not initialized. Call setConfig() in your root layout.");return e}function Y(){return globalThis[A]!==void 0}function P(e){const t=e.replace(/\/$/,"");function n(s){const{sportal365Sports:a}=s;if(!a)throw new Error("Sportal365 Sports API configuration is missing");const l=`${a.username}:${a.password}`;return`Basic ${btoa(l)}`}function o(s){return`${t}${s}`}return{async get(s){const a=s.config||m(),{sportal365Sports:l}=a;if(!l)throw new Error("Sportal365 Sports API configuration is missing");const d=new URL(o(s.path));if(s.params)for(const[_,g]of Object.entries(s.params))g!==void 0&&(Array.isArray(g)?g.length>0&&d.searchParams.set(_,g.join(",")):d.searchParams.set(_,g));const c=await fetch(d.toString(),{method:"GET",headers:{Authorization:n(a),"Content-Type":"application/json","X-Project":l.projectId,...s.headers},signal:l.timeout?AbortSignal.timeout(l.timeout):void 0,...s.next&&{next:s.next}});if(!c.ok)throw new Error(`Sportal365 API error: ${c.status} ${c.statusText}`);return c.json()}}}const V="https://football.api.sportal365.com",W="https://basketball.api.sportal365.com",K="https://tennis.api.sportal365.com",j="https://sports-statistics.api.sportal365.com",q="https://sports-search.api.sportal365.com",X="https://standing.api.sportal365.com",p=P(V);function R(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 z={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 C(e){const t=z[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:R(e.primary_player),secondaryPlayer:R(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 r(e,t="sportal365"){if(e)return[{provider:t,id:e}]}function J(e,t){return e?e.find(o=>o.provider===t)?.id:void 0}function Q(e,t,n){const o=e??[],s=o.findIndex(a=>a.provider===t);if(s>=0){const a=[...o];return a[s]={provider:t,id:n},a}else return[...o,{provider:t,id:n}]}function Z(e){const t=e.urls?.find(n=>n.app_type==="desktop")?.url;return{id:e.id,name:e.name,code:e.code,value:e.value??void 0,odds:e.odds,oddsOld:e.odds_old,movement:e.movement==="STABLE"?"NONE":e.movement,url:t}}function w(e){return{type:{id:e.type.id,code:e.type.code,name:e.type.name},period:{id:e.scope.id,type:e.scope.type,name:e.scope.name},selections:e.selections.map(Z)}}function ee(e){if(!e)return!0;const t=e.replace("#",""),n=parseInt(t.substring(0,2),16),o=parseInt(t.substring(2,4),16),s=parseInt(t.substring(4,6),16);return(.2126*n+.7152*o+.0722*s)/255<.5}function te(e){const t=e.bookmaker.assets?.[0],n=e.bookmaker.branding||t,o=e.bookmaker.branding?.background_color||t?.background_color,s=e.bookmaker.branding?.text_color||(ee(o)?"#FFFFFF":"#000000");return{operator:{id:e.bookmaker.id,name:e.bookmaker.name,url:e.bookmaker.url,branding:n?{backgroundColor:o,textColor:s,logo:t?.logo}:void 0},type:e.type,markets:e.markets.map(w)}}function M(e){return e.map(te)}function oe(e){const t={finished_ap:"finished_after_penalties",finished_aet:"finished_after_extra_time",finished:"finished",not_started:"not_started",live:"live",interrupted:"interrupted",cancelled:"cancelled",postponed:"postponed",abandoned:"abandoned"};let n;return e.code&&t[e.code]?n=t[e.code]:n={FINISHED:"finished",NOT_STARTED:"not_started",LIVE:"live",INTERRUPTED:"interrupted",CANCELLED:"cancelled",POSTPONED:"postponed",UNKNOWN:"not_started",ABANDONED:"abandoned"}[e.type]??"not_started",{code:n,name:e.name,shortName:e.short_name,type:e.type}}function L(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:r(e.uuid)}}function ne(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 se(e){if(!e)return;const t=o=>o?{competitorOne:String(o.home),competitorTwo:String(o.away)}:void 0,n=e.after_extra_time??e.regular_time;return{competitorOne:n?.home!=null?String(n.home):null,competitorTwo:n?.away!=null?String(n.away):null,breakdown:{total:t(e.total),halfTime:t(e.half_time),regularTime:t(e.regular_time),extraTime:t(e.extra_time),penaltyShootout:t(e.penalty_shootout),aggregate:t(e.aggregate)}}}function ae(e){if(e)return{id:e.id,name:e.name,slug:e.slug,assets:e.assets?.image?.url?{image:e.assets.image.url}:void 0,providerRef:r(e.uuid)}}function ie(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 re(e){if(!e.season?.tournament)return;const{tournament:t,...n}=e.season;return{id:t.id,name:t.name,slug:t.slug,type:t.type,region:t.region,country:t.country?{id:t.country.id,name:t.country.name,code:t.country.code??void 0,flag:t.country.assets?.flag?.url,providerRef:r(t.country.uuid)}:void 0,season:{id:n.id,name:n.name,status:n.status},stage:e.stage?{id:e.stage.id,name:e.stage.name,type:e.stage.type}:void 0,assets:t.assets?.logo?.url?{logo:t.assets.logo.url}:void 0,providerRef:r(t.uuid)}}function de(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,sport:"football",status:oe(e.status),timing:ne(e),competitorOne:L(e.home_team),competitorTwo:L(e.away_team),competition:re(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:r(e.round.uuid)}:void 0,group:e.group?{id:e.group.id,name:e.group.name,providerRef:r(e.group.uuid)}:void 0,venue:ae(e.venue),officials:ie(e.referees),spectators:e.spectators??void 0,score:se(e.score),mainEvents:e.main_events?.map(C).filter(t=>t!==null),penaltyShootoutEvents:e.penalty_shootout_events?.map(C).filter(t=>t!==null),winner:de(e),coverage:e.coverage==="NOT_LIVE"?"UNKNOWN":e.coverage,lineupStatus:e.lineup_status==="UNCONFIRMED"?"EXPECTED":e.lineup_status,providerRef:r(e.uuid)}}function ce(e){const t=e.player;return{id:t.id,name:t.name,slug:t.slug,position:t.position,shirtNumber:e.shirt_number,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:r(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(C).filter(n=>n!==null),providerRef:r(t.uuid)}}function D(e){const t=[],n=[];for(const o of e.players){const s=ce(o);o.type.category==="start"?t.push(s):o.type.category==="sub"&&n.push(s)}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:r(e.coach.country.uuid)}:void 0,birthdate:e.coach.birthdate,providerRef:r(e.coach.uuid)}:void 0,starters:t,substitutes:n}}function ue(e){return{matchId:e.match_id,confirmed:e.status==="CONFIRMED",competitorOne:D(e.home_team),competitorTwo:D(e.away_team)}}function y(e,t,n,o){return t==null?null:{key:e,value:String(t),label:n,unit:o}}function k(e,t){const n=(t.shots_on??0)+(t.shots_off??0)+(t.shots_blocked??0),o=[y("possession",t.possession,"Possession","%"),y("shots_total",n,"Shots"),y("shots_on_target",t.shots_on,"Shots on Target"),y("shots_off_target",t.shots_off,"Shots off Target"),y("shots_blocked",t.shots_blocked,"Shots Blocked"),y("corners",t.corners,"Corner Kicks"),y("goal_kicks",t.goal_kicks,"Goal Kicks"),y("throw_ins",t.throw_in,"Throw Ins"),y("offsides",t.offside,"Offsides"),y("fouls",t.fouls_committed,"Fouls"),y("yellow_cards",t.yellow_cards,"Yellow Cards"),y("passes",t.pass,"Passes"),y("crosses",t.crosses,"Crosses")];return{competitorId:e,statistics:o.filter(s=>s!==null)}}function le(e){const t=e.find(o=>o.home_team),n=e.find(o=>!o.home_team);if(!t||!n)throw new Error("Missing competitor statistics");return{competitorOne:k(String(t.team.id),t.statistics),competitorTwo:k(String(n.team.id),n.statistics)}}function ge(e,t){return{matchId:e,operators:M(t)}}function N(e){if(e==null||e==="")return;const t=typeof e=="number"?e:parseInt(e,10);return isNaN(t)?void 0:t}function me(e){return{externalId:e.external_id,minute:N(e.elapsed),addedTime:N(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 pe(e,t,n){const o=n||m(),{sportal365Sports:s}=o,a=await p.get({path:`/v2/matches/${e}`,params:{language_code:t?.languageCode??s?.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??s?.languageCode??"en"},next:t?.next,config:o});return O(a)}async function fe(e,t,n){const o=n||m(),{sportal365Sports:s}=o;return(await p.get({path:`/v2/matches/${e}/events`,params:{language_code:t?.languageCode??s?.languageCode??"en"},headers:{"Accept-Language":t?.languageCode??s?.languageCode??"en"},next:t?.next,config:o})).events.map(C).filter(l=>l!==null)}async function _e(e,t,n){const o=n||m(),{sportal365Sports:s}=o,a=await p.get({path:`/v2/matches/${e}/lineups`,params:{language_code:t?.languageCode??s?.languageCode??"en"},headers:{"Accept-Language":t?.languageCode??s?.languageCode??"en"},next:t?.next,config:o});return ue(a)}async function ye(e,t,n){const o=n||m(),{sportal365Sports:s}=o,a=await p.get({path:`/v2/matches/${e}`,params:{language_code:t?.languageCode??s?.languageCode??"en",odd_client:t?.oddClient??s?.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??s?.languageCode??"en"},next:t?.next,config:o});return ge(e,a.odds??[])}async function he(e,t,n){const o=n||m(),{sportal365Sports:s}=o,a=await p.get({path:`/events/${e}/teamstats`,params:{language_code:t?.languageCode??s?.languageCode??"en"},headers:{"Accept-Language":t?.languageCode??s?.languageCode??"en"},next:t?.next,config:o});return le(a)}async function ve(e,t,n){const o=n||m(),{sportal365Sports:s}=o;return(await p.get({path:`/matches/${e}/commentary`,params:{language_code:t?.languageCode??s?.languageCode??"en"},headers:{"Accept-Language":t?.languageCode??s?.languageCode??"en"},next:t?.next,config:o})).map(me)}async function Se(e,t){const n=t||m(),{sportal365Sports:o}=n;return(await p.get({path:"/v2/matches",params:{language_code:e.languageCode??o?.languageCode??"en",limit:e.limit.toString(),offset:e.offset.toString(),tournament_ids:e.tournamentIds,season_ids:e.seasonIds,stage_ids:e.stageIds,group_ids:e.groupIds,round_ids:e.roundIds,round_filter:e.roundFilter,from_kickoff_time:e.fromKickoffTime,to_kickoff_time:e.toKickoffTime,team_ids:e.teamIds,team_ids_operator:e.teamIdsOperator,referee_id:e.refereeId,venue_id:e.venueId,player_id:e.playerId,status_types:e.statusTypes,status_codes:e.statusCodes,odd_client:e.oddClient??o?.oddClient,odd_type:e.oddType,scope_type:e.scopeType,odd_format:e.oddFormat,market_types:e.marketTypes,bookmaker_ids:e.bookmakerIds,sort_direction:e.sortDirection,optional_data:e.optionalData},headers:{"Accept-Language":e.languageCode??o?.languageCode??"en"},next:e.next,config:n})).matches.map(O)}async function Te(e,t){const n=t||m(),{sportal365Sports:o}=n;return(await p.get({path:"/v2/matches/livescore",params:{match_ids:e?.matchIds,date:e?.date,utc_offset:e?.utcOffset?.toString(),tournament_group:e?.tournamentGroup,status_types:e?.statusTypes,selection_filter:e?.selectionFilter,language_code:e?.languageCode??o?.languageCode??"en",odd_client:e?.oddClient??o?.oddClient,odd_type:e?.oddType,scope_type:e?.scopeType,odd_format:e?.oddFormat,market_types:e?.marketTypes,optional_data:e?.optionalData},headers:{"Accept-Language":e?.languageCode??o?.languageCode??"en"},next:e?.next,config:n})).matches.map(O)}function Ce(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:r(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:r(e.venue.city.country.uuid)}:void 0,providerRef:r(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:r(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:r(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:r(e.coach.country.uuid)},birthdate:e.coach.birthdate,providerRef:r(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:r(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:r(e.current_season.uuid)}:void 0,form:e.form&&e.form.length>0?{competitorId:e.id,results:e.form.map(t=>{const o=t.participants[0].id===e.uuid?t.participants[1]:t.participants[0],s=t.result[0]?.results.find(d=>d.position==="1")?.value,a=t.result[0]?.results.find(d=>d.position==="2")?.value,l=t.outcome==="win"?"W":t.outcome==="draw"?"D":"L";return{matchId:t.id,result:l,score:s&&a?`${s}-${a}`:void 0,opponent:{id:o.id,name:o.name,logo:o.display_asset?.url},date:new Date(t.start_time),competition:t.competition?{id:t.competition.id,name:t.competition.name}:void 0}}),formString:e.form.map(t=>t.outcome==="win"?"W":t.outcome==="draw"?"D":"L").join("")}:void 0,providerRef:r(e.uuid)}}function Ie(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:r(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:r(t.id)}}function Ae(e){return{id:e.id,name:e.name,slug:e.slug,country:e.country?{id:e.country.id,name:e.country.name,code:e.country.code??void 0,flag:e.country.assets?.flag?.url,providerRef:r(e.country.uuid)}:void 0,birthdate:e.birthdate,providerRef:r(e.uuid)}}function Oe(e){return{teamId:e.team.id,teamName:e.team.name,coach:e.coach?Ae(e.coach):void 0,players:e.players.map(Ie)}}function Ee(e){const t=parseInt(e,10);return isNaN(t)?void 0:t}function i(e,t){const n=e.find(o=>o.name===t);return n?Ee(n.value):void 0}function be(e,t){const n=e.statistics;return{playerId:e.player.id,seasonId:e.season.id,teamId:t,appearances:i(n,"played"),started:i(n,"started"),substituteIn:i(n,"substitute_in"),substituteOut:i(n,"substitute_out"),minutes:i(n,"minutes"),minutesSubstitute:i(n,"minutes_substitute"),goals:i(n,"goals"),goalsSubstitute:i(n,"goals_substitute"),penaltyGoals:i(n,"penalty_goals"),ownGoals:i(n,"own_goals"),assists:i(n,"assists"),shots:i(n,"shots"),shotsOnTarget:i(n,"shots_on_target"),yellowCards:i(n,"yellow_cards"),redCards:i(n,"red_cards"),foulsCommitted:i(n,"fouls_committed"),penaltiesCommitted:i(n,"penalties_committed"),penaltiesMissed:i(n,"penalties_missed"),cleansheets:i(n,"cleansheets"),saves:i(n,"saves"),conceded:i(n,"conceded"),caughtBall:i(n,"caught_ball"),penaltiesReceived:i(n,"penalties_received"),offsides:i(n,"offsides"),rawStatistics:n.map(o=>({name:o.name,value:o.value}))}}function Re(e){const t=e.statistics;return{playerId:e.player.id,seasonId:e.season.id,appearances:i(t,"played"),started:i(t,"started"),substituteIn:i(t,"substitute_in"),substituteOut:i(t,"substitute_out"),minutes:i(t,"minutes"),minutesSubstitute:i(t,"minutes_substitute"),goals:i(t,"goals"),goalsSubstitute:i(t,"goals_substitute"),penaltyGoals:i(t,"penalty_goals"),ownGoals:i(t,"own_goals"),assists:i(t,"assists"),shots:i(t,"shots"),shotsOnTarget:i(t,"shots_on_target"),yellowCards:i(t,"yellow_cards"),redCards:i(t,"red_cards"),foulsCommitted:i(t,"fouls_committed"),penaltiesCommitted:i(t,"penalties_committed"),penaltiesMissed:i(t,"penalties_missed"),cleansheets:i(t,"cleansheets"),saves:i(t,"saves"),conceded:i(t,"conceded"),caughtBall:i(t,"caught_ball"),penaltiesReceived:i(t,"penalties_received"),offsides:i(t,"offsides"),rawStatistics:t.map(n=>({name:n.name,value:n.value}))}}function u(e,t){if(!(e===void 0&&t===void 0))return(e??0)+(t??0)}function Le(e,t){return{playerId:e.playerId,seasonId:e.seasonId,appearances:u(e.appearances,t.appearances),started:u(e.started,t.started),substituteIn:u(e.substituteIn,t.substituteIn),substituteOut:u(e.substituteOut,t.substituteOut),minutes:u(e.minutes,t.minutes),minutesSubstitute:u(e.minutesSubstitute,t.minutesSubstitute),goals:u(e.goals,t.goals),goalsSubstitute:u(e.goalsSubstitute,t.goalsSubstitute),penaltyGoals:u(e.penaltyGoals,t.penaltyGoals),ownGoals:u(e.ownGoals,t.ownGoals),assists:u(e.assists,t.assists),shots:u(e.shots,t.shots),shotsOnTarget:u(e.shotsOnTarget,t.shotsOnTarget),yellowCards:u(e.yellowCards,t.yellowCards),redCards:u(e.redCards,t.redCards),foulsCommitted:u(e.foulsCommitted,t.foulsCommitted),penaltiesCommitted:u(e.penaltiesCommitted,t.penaltiesCommitted),penaltiesMissed:u(e.penaltiesMissed,t.penaltiesMissed),cleansheets:u(e.cleansheets,t.cleansheets),saves:u(e.saves,t.saves),conceded:u(e.conceded,t.conceded),caughtBall:u(e.caughtBall,t.caughtBall),penaltiesReceived:u(e.penaltiesReceived,t.penaltiesReceived),offsides:u(e.offsides,t.offsides),rawStatistics:[...e.rawStatistics??[],...t.rawStatistics??[]]}}async function x(e,t){const n=t||m(),{sportal365Sports:o}=n,{seasonIds:s,teamId:a,languageCode:l,next:d}=e,c=d??{revalidate:0},_={season_ids:s.join(","),team_id:a,language_code:l??o?.languageCode??"en"},g=await p.get({path:"/v2/statistics/players/season",params:_,headers:{"Accept-Language":l??o?.languageCode??"en"},next:c,config:n});if(!g.statistics)return console.error("[getFootballPlayerSeasonStatistics] Invalid API response - missing statistics array:",{teamId:a,seasonIds:s,response:g}),{};if(g.statistics.length===0)throw console.warn("[getFootballPlayerSeasonStatistics] API returned empty statistics array:",{teamId:a,seasonIds:s,hint:"This could be due to: wrong credentials, wrong project header, no data for this team/season, or API issue"}),new Error(`No player statistics found for team ${a} in seasons ${s.join(", ")}. This could be due to: wrong credentials, wrong X-Project header, or no data available for this team/season.`);const h={};for(const T of g.statistics){const S=T.player.id;h[S]=be(T,a)}return h}async function De(e,t){const n=t||m(),{sportal365Sports:o}=n,{playerIds:s,seasonIds:a,languageCode:l,next:d}=e,c=d??{revalidate:0},_={player_ids:s.join(","),season_ids:a.join(","),language_code:l??o?.languageCode??"en"},g=await p.get({path:"/v2/statistics/players/season",params:_,headers:{"Accept-Language":l??o?.languageCode??"en"},next:c,config:n});if(!g.statistics)return console.error("[getFootballPlayerSeasonStatisticsByPlayerIds] Invalid API response - missing statistics array:",{playerIds:s,seasonIds:a,response:g}),{};if(g.statistics.length===0)return{};const h={};for(const T of g.statistics){const S=T.player.id,f=Re(T);h[S]?h[S]=Le(h[S],f):h[S]=f}return h}async function ke(e,t,n){const o=n||m(),{sportal365Sports:s}=o,a=await p.get({path:`/v2/teams/${e}`,params:{language_code:t?.languageCode??s?.languageCode??"en",optional_data:"form"},headers:{"Accept-Language":t?.languageCode??s?.languageCode??"en"},next:t?.next,config:o});return Ce(a)}async function Ne(e,t,n){const o=n||m(),{sportal365Sports:s}=o,a=t?.seasonIds&&t.seasonIds.length>0?{revalidate:0}:t?.next,l=await p.get({path:`/v2/teams/${e}/squad`,params:{language_code:t?.languageCode??s?.languageCode??"en",memberStatus:t?.memberStatus??"ACTIVE"},headers:{"Accept-Language":t?.languageCode??s?.languageCode??"en"},next:a,config:o}),d=Oe(l);if(t?.seasonIds&&t.seasonIds.length>0)try{const c=await x({seasonIds:t.seasonIds,teamId:e,languageCode:t.languageCode,next:t.next},o);for(const _ of d.players){const g=c[_.id];g&&(_.seasonStatistics=g)}}catch(c){console.error("[getFootballTeamSquad] Failed to fetch player statistics:",{error:c instanceof Error?c.message:String(c),stack:c instanceof Error?c.stack:void 0,teamId:e,seasonIds:t.seasonIds})}else console.warn("[getFootballTeamSquad] No seasonIds provided, skipping stats fetch");return d}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:r(e.country.uuid)},seasons:e.seasons.map(t=>({id:String(t.id),name:t.name,slug:t.slug,active:t.active,providerRef:r(t.uuid)})),assets:e.url_logo?{logo:e.url_logo}:void 0,providerRef:r(e.uuid)}}function Pe(e){const t=e.rounds.map(n=>({id:n.id,name:n.name,key:n.key,type:n.type,status:n.status,startDate:n.start_date,endDate:n.end_date,providerRef:r(n.uuid)}));return{id:e.stage.id,name:e.stage.name,slug:e.stage.slug,shortName:e.stage.short_name??void 0,type:e.stage.type,status:e.stage.status,coverage:e.stage.coverage,order:e.stage.order_in_season,startDate:e.stage.start_date,endDate:e.stage.end_date,rounds:t,providerRef:r(e.stage.uuid)}}function Me(e){const{season:t,stages:n}=e,{tournament:o}=t,s={id:o.id,name:o.name,slug:o.slug,type:o.type,region:o.region,gender:o.gender,country:{id:o.country.id,name:o.country.name,code:o.country.code??void 0,flag:o.country.assets?.flag?.url,providerRef:r(o.country.uuid)},assets:o.assets?.logo?.url?{logo:o.assets.logo.url}:void 0,providerRef:r(o.uuid)};return{id:t.id,name:t.name,slug:t.slug,active:t.status==="ACTIVE",status:t.status==="ACTIVE"?"ACTIVE":"INACTIVE",competition:s,stages:n.map(Pe),providerRef:r(t.uuid)}}async function xe(e,t,n){const o=n||m(),{sportal365Sports:s}=o,a=await p.get({path:`/tournaments/${e}`,params:{language_code:t?.languageCode??s?.languageCode??"en"},headers:{"Accept-Language":t?.languageCode??s?.languageCode??"en"},next:t?.next,config:o});return Fe(a)}async function Ue(e,t){const n=t||m(),{sportal365Sports:o}=n;if(!e?.seasonId&&!e?.competitionId)throw new Error("Either seasonId or competitionId must be provided");const s={language_code:e?.languageCode??o?.languageCode??"en"};e.seasonId?s.season_id=e.seasonId:e.competitionId&&(s.tournament_id=e.competitionId,e.status&&(s.status=e.status));const a=await p.get({path:"/v2/seasons/details",params:s,headers:{"Accept-Language":e?.languageCode??o?.languageCode??"en"},next:e?.next,config:n});return Me(a)}function E(e){return{championsleague:"championsLeague",europaleague:"europaLeague",conferenceleague:"conferenceLeague",relegation:"relegation",playoff:"playoff",promotion:"promotion"}[e.toLowerCase()]??e.toLowerCase().replace(/_/g,"")}function He(e){const t=e.toLowerCase();return t==="relegation"?"BOTTOM":t==="playoff"?"MIDDLE":"TOP"}function Be(e,t){if(!t||t.length===0)return;const n=t.map(s=>{const a=s.event,l=a.home_team.id===e,d=l?a.away_team:a.home_team,c=`${a.goal_home}-${a.goal_away}`;return{matchId:a.id.toString(),result:s.outcome,score:c,homeAway:l?"HOME":"AWAY",opponent:{id:d.id.toString(),name:d.name,logo:d.url_logo},date:new Date(a.start_time),competition:void 0}}),o=n.map(s=>s.result).join("");return{competitorId:e.toString(),results:n,formString:o}}function Ge(e){return{key:E(e.code),name:e.name,position:He(e.type)}}function $e(e){const t={played:e.played,won:e.wins,drawn:e.draws,lost:e.defeits,goalsFor:e.goals_for,goalsAgainst:e.goals_against,goalDifference:e.goals_for-e.goals_against,points:e.points},n=e.rules?.length>0?e.rules.map(s=>E(s.code)):void 0,o=Be(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,uuid:e.team.uuid},stats:t,form:o,rules:n}}function Ye(e){const t=e.map($e),n=new Map;for(const o of e)if(o.rules)for(const s of o.rules){const a=E(s.code);n.has(a)||n.set(a,Ge(s))}return{entries:t,metadata:{legend:Array.from(n.values())}}}async function Ve(e,t){const n=t||m(),{sportal365Sports:o}=n,s=e.expand?.join(","),a=await p.get({path:`/tournaments/seasons/stages/${e.stageId}/standing`,params:{expand:s,language_code:e.languageCode??o?.languageCode??"en"},headers:{"Accept-Language":e.languageCode??o?.languageCode??"en"},next:e.next,config:n});return!a||a.length===0?{entries:[],metadata:{legend:[]}}:Ye(a)}function U(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 We(e){return{id:e.id,name:e.name,type:e.type?.toUpperCase()||"LEAGUE",gender:e.gender?.toUpperCase(),country:e.country?U(e.country):void 0,assets:e.assets?.logo?{logo:e.assets.logo}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function Ke(e){if(e.status){const a={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(a)return a}let t="not_started",n="NOT_STARTED",o="Not Started";return e.finished_at?(t="finished",n="FINISHED",o="Finished"):e.started_at&&(t="live",n="LIVE",o="Live"),{code:t,name:o,type:n}}function je(e){return{kickoffTime:new Date(e.kickoff_at),currentMinute:e.minute??void 0,currentPeriod:void 0}}function F(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?U(e.country):void 0,assets:e.assets?.logo?{logo:e.assets.logo}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function qe(e){if(!e)return;const t=o=>o?{competitorOne:o.home_goals!==null?String(o.home_goals):"0",competitorTwo:o.away_goals!==null?String(o.away_goals):"0"}:void 0,n=t(e.ft_score);if(n)return{competitorOne:n.competitorOne,competitorTwo:n.competitorTwo,breakdown:{total:n,halfTime:t(e.ht_score),regularTime:t(e.ft_score),extraTime:t(e.aet_score),penaltyShootout:t(e.pen_score)}}}function b(e){return{id:e.id,sport:e.sport??"football",status:Ke(e),timing:je(e),competitorOne:F(e.home_team),competitorTwo:F(e.away_team),score:qe(e.scores),competition:e.context?.competition?We(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 Xe(e){return b(e.data)}function ze(e){return e.data.map(b)}function Je(e){return e.map(b)}async function H(e,t,n){const o=await e.loyalty.getTemplateMatches(t,n?.groupId,n?.disableCache);return Je(o)}async function Qe(e,t,n,o){return(await H(e,t,o)).filter(a=>a.competitorOne.id===n||a.competitorTwo.id===n)}async function Ze(e,t,n){const o=await e.loyalty.getTemplateById(t,n?.disableCache);return{id:o.id,name:o.name,description:o.description,type:o.type,fromDate:o.fromDate,toDate:o.toDate,markets:o.markets||[],teamIds:o.teamIds||[],matchIds:o.matchIds||[],groups:(o.groups||[]).map(a=>({groupId:a.groupId,label:a.label,flags:a.flags||[],filters:{fromDate:a.filters?.fromDate||"",toDate:a.filters?.toDate||"",matchIds:a.filters?.matchIds||[]}})),gameIds:o.gameIds||[],gameTypes:o.gameTypes||[],competitionIds:o.competitionIds||[],excludedProfileIds:o.excludedProfileIds||[],rules:o.rules||"",labels:o.labels||{},customFields:o.customFields||{},branding:o.branding?JSON.parse(JSON.stringify(o.branding)):{},brandingId:null,flags:o.flags||[],images:{main:o.images?.main||null,cover:o.images?.cover||null,mobile:o.images?.mobile||null},status:o.status,automaticallyChangeStatus:o.automaticallyChangeStatus||!1,createdAt:o.createdAt,updatedAt:o.updatedAt,related:o.related||[],adContent:o.adContent||""}}function we(e){return{"1x2":"1X2",12:"12",OVER_UNDER:"OVER_UNDER",DOUBLE_CHANCE:"DOUBLE_CHANCE",BOTH_TO_SCORE:"BOTH_TO_SCORE",DRAW_NO_BET:"DRAW_NO_BET",FIRST_TEAM_TO_SCORE:"FIRST_TEAM_TO_SCORE",CORRECT_SCORE:"CORRECT_SCORE",FIRST_HALF_GOALS:"FIRST_HALF_GOALS",FIRST_PLAYER_TO_SCORE:"FIRST_PLAYER_TO_SCORE",PLAYER_TO_SCORE_DURING_GAME:"PLAYER_TO_SCORE_DURING_GAME",PLAYER_TO_RECEIVE_CARD:"PLAYER_TO_RECEIVE_CARD",FIRST_HALF_AND_FINAL_RESULT:"FIRST_HALF_AND_FINAL_RESULT"}[e]||e.toUpperCase()}function et(e,t){const n=new Map;return e.forEach((o,s)=>{if(!o||o.length===0)return;const l=(t?o.filter(d=>d.bookmaker&&t.includes(d.bookmaker.id)):o).filter(d=>d.bookmaker&&d.markets&&d.markets.length>0).map(d=>{const c=d.bookmaker,_=c.assets?.[0],g=c.branding?.backgroundColor||_?.backgroundColor,h=c.branding?.textColor||(tt(g)?"#FFFFFF":"#000000"),T=_?.transparentBackgroundUrl||_?.logo,S=c.eventUrls?.find(f=>f.appType==="desktop")?.url||c.links?.find(f=>f.appType==="desktop")?.homepageUrl||c.url||"";return{operator:{id:c.id,name:c.name,url:S,branding:{backgroundColor:g,textColor:h,logo:T}},type:d.type,markets:d.markets.map(f=>({type:{id:f.type.id,code:f.type.code,name:f.type.name},period:{id:f.scope.id,type:f.scope.type,name:f.scope.name},selections:f.selections.map(v=>{const B=v.urls?.find(G=>G.appType==="desktop")?.url;let I="NONE";return v.movement==="UP"?I="UP":v.movement==="DOWN"&&(I="DOWN"),{id:v.id,name:v.name,code:v.code,value:v.value,odds:v.odds,oddsOld:v.oddsOld,movement:I,url:B}})}))}});n.set(s,l)}),n}function tt(e){if(!e)return!0;const t=e.replace("#",""),n=parseInt(t.substring(0,2),16),o=parseInt(t.substring(2,4),16),s=parseInt(t.substring(4,6),16);return(.2126*n+.7152*o+.0722*s)/255<.5}async function ot(e,t,n){if(!t||t.length===0)return new Map;const o={oddType:n?.oddType||"ALL",scopeType:n?.scopeType||"ORDINARY_TIME",oddFormat:n?.oddFormat||"DECIMAL"};n?.marketTypes&&n.marketTypes.length>0&&(o.marketTypes=n.marketTypes.map(a=>we(a)));const s=await e.odds.getByMatchIds(t,o);return et(s,n?.bookmakerIds)}exports.SPORTAL365_BASKETBALL_DOMAIN=W;exports.SPORTAL365_SPORTS_SEARCH_DOMAIN=q;exports.SPORTAL365_STANDINGS_DOMAIN=X;exports.SPORTAL365_STATISTICS_DOMAIN=j;exports.SPORTAL365_TENNIS_DOMAIN=K;exports.addProviderRef=Q;exports.createHttpClient=P;exports.footballHttp=p;exports.getBatchMatchOdds=ot;exports.getConfig=m;exports.getFootballCompetition=xe;exports.getFootballLivescore=Te;exports.getFootballMatch=pe;exports.getFootballMatchCommentary=ve;exports.getFootballMatchEvents=fe;exports.getFootballMatchLineups=_e;exports.getFootballMatchOdds=ye;exports.getFootballMatchStatistics=he;exports.getFootballMatches=Se;exports.getFootballPlayerSeasonStatistics=x;exports.getFootballPlayerSeasonStatisticsByPlayerIds=De;exports.getFootballSeasonDetails=Ue;exports.getFootballStandings=Ve;exports.getFootballTeam=ke;exports.getFootballTeamSquad=Ne;exports.getLeaderboardMatches=H;exports.getLeaderboardTeamMatches=Qe;exports.getLeaderboardTemplate=Ze;exports.getProviderRefId=J;exports.isConfigured=Y;exports.setConfig=$;exports.toProviderRefArray=r;exports.transformMatch=Xe;exports.transformMatches=ze;exports.transformOdds=M;