fansunited-data-layer 0.6.4 → 0.7.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.
@@ -8,8 +8,8 @@ export { getFansUnitedFootballCompetitions } from "./competitions";
8
8
  export type { GetFootballCompetitionsOptions } from "./competitions/types";
9
9
  export { getFansUnitedFootballCompetition } from "./competition";
10
10
  export type { GetFootballCompetitionOptions } from "./competition/types";
11
- export { getFansUnitedFootballTeam } from "./teams";
12
- export type { GetFootballTeamOptions } from "./teams/types";
11
+ export { getFansUnitedFootballTeam, getFansUnitedFootballTeams } from "./teams";
12
+ export type { GetFootballTeamOptions, GetFootballTeamsOptions } from "./teams/types";
13
13
  export { getFansUnitedFootballPlayer, getFansUnitedFootballPlayers } from "./players";
14
14
  export type { GetFootballPlayerOptions, GetFootballPlayersOptions } from "./players/types";
15
15
  export { getFansUnitedFootballMatch, getFansUnitedFootballMatches } from "./matches";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/api/fansunited/football/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,iCAAiC,EAAE,MAAM,gBAAgB,CAAC;AACnE,YAAY,EAAE,8BAA8B,EAAE,MAAM,sBAAsB,CAAC;AAG3E,OAAO,EAAE,gCAAgC,EAAE,MAAM,eAAe,CAAC;AACjE,YAAY,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AAGzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AACpD,YAAY,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAG5D,OAAO,EAAE,2BAA2B,EAAE,4BAA4B,EAAE,MAAM,WAAW,CAAC;AACtF,YAAY,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAG3F,OAAO,EAAE,0BAA0B,EAAE,4BAA4B,EAAE,MAAM,WAAW,CAAC;AACrF,YAAY,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAG1F,OAAO,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AACvD,YAAY,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,8BAA8B,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/api/fansunited/football/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,iCAAiC,EAAE,MAAM,gBAAgB,CAAC;AACnE,YAAY,EAAE,8BAA8B,EAAE,MAAM,sBAAsB,CAAC;AAG3E,OAAO,EAAE,gCAAgC,EAAE,MAAM,eAAe,CAAC;AACjE,YAAY,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AAGzE,OAAO,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AAChF,YAAY,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAGrF,OAAO,EAAE,2BAA2B,EAAE,4BAA4B,EAAE,MAAM,WAAW,CAAC;AACtF,YAAY,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAG3F,OAAO,EAAE,0BAA0B,EAAE,4BAA4B,EAAE,MAAM,WAAW,CAAC;AACrF,YAAY,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAG1F,OAAO,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AACvD,YAAY,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,8BAA8B,EAAE,MAAM,gBAAgB,CAAC"}
@@ -3,8 +3,8 @@
3
3
  */
4
4
  import type { FUSportsTeamCompetitor } from "../../../../types/canonical";
5
5
  import { type DataLayerConfig } from "../../../../config";
6
- import type { GetFootballTeamOptions } from "./types";
7
- export type { GetFootballTeamOptions } from "./types";
6
+ import type { GetFootballTeamOptions, GetFootballTeamsOptions } from "./types";
7
+ export type { GetFootballTeamOptions, GetFootballTeamsOptions } from "./types";
8
8
  /**
9
9
  * Get a football team by ID from Fans United Football API
10
10
  *
@@ -27,4 +27,45 @@ export type { GetFootballTeamOptions } from "./types";
27
27
  * ```
28
28
  */
29
29
  export declare function getFansUnitedFootballTeam(teamId: string, options?: GetFootballTeamOptions, config?: DataLayerConfig): Promise<FUSportsTeamCompetitor>;
30
+ /**
31
+ * Get multiple football teams from Fans United Football API
32
+ *
33
+ * @param options - Query options for filtering, sorting, and pagination
34
+ * @param config - Optional data layer config (uses singleton if not provided)
35
+ * @returns Array of teams in canonical format
36
+ *
37
+ * @example
38
+ * ```typescript
39
+ * import { getFansUnitedFootballTeams } from 'fansunited-data-layer';
40
+ *
41
+ * // Get teams by IDs
42
+ * const teams = await getFansUnitedFootballTeams({
43
+ * teamIds: 'fb:t:8102,fb:t:8104',
44
+ * lang: 'EN'
45
+ * });
46
+ *
47
+ * // Get teams from a specific competition
48
+ * const competitionTeams = await getFansUnitedFootballTeams({
49
+ * scope: 'fb:c:478',
50
+ * limit: 50,
51
+ * sortField: 'name',
52
+ * sortOrder: 'asc'
53
+ * });
54
+ *
55
+ * // Search teams by name
56
+ * const searchResults = await getFansUnitedFootballTeams({
57
+ * name: 'Manchester',
58
+ * limit: 10
59
+ * });
60
+ *
61
+ * // Get only national teams
62
+ * const nationalTeams = await getFansUnitedFootballTeams({
63
+ * national: true,
64
+ * gender: 'male',
65
+ * sortField: 'name',
66
+ * sortOrder: 'asc'
67
+ * });
68
+ * ```
69
+ */
70
+ export declare function getFansUnitedFootballTeams(options?: GetFootballTeamsOptions, config?: DataLayerConfig): Promise<FUSportsTeamCompetitor[]>;
30
71
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/api/fansunited/football/teams/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAa,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErE,OAAO,KAAK,EAAE,sBAAsB,EAAmB,MAAM,SAAS,CAAC;AAIvE,YAAY,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEtD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,yBAAyB,CAC3C,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,sBAAsB,EAChC,MAAM,CAAC,EAAE,eAAe,GACzB,OAAO,CAAC,sBAAsB,CAAC,CAkBjC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/api/fansunited/football/teams/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAa,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErE,OAAO,KAAK,EAAE,sBAAsB,EAAE,uBAAuB,EAAqC,MAAM,SAAS,CAAC;AAIlH,YAAY,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAE/E;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,yBAAyB,CAC3C,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,sBAAsB,EAChC,MAAM,CAAC,EAAE,eAAe,GACzB,OAAO,CAAC,sBAAsB,CAAC,CAkBjC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAsB,0BAA0B,CAC5C,OAAO,CAAC,EAAE,uBAAuB,EACjC,MAAM,CAAC,EAAE,eAAe,GACzB,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAsDnC"}
@@ -2,9 +2,13 @@
2
2
  * Transform raw team data to canonical FUSports types
3
3
  */
4
4
  import type { FUSportsTeamCompetitor } from "../../../../types/canonical";
5
- import type { RawTeamResponse } from "./types";
5
+ import type { RawTeamResponse, RawTeamsResponse } from "./types";
6
6
  /**
7
7
  * Transform raw team response to canonical FUSportsTeamCompetitor
8
8
  */
9
9
  export declare function transformTeam(raw: RawTeamResponse): FUSportsTeamCompetitor;
10
+ /**
11
+ * Transform raw teams response to array of canonical FUSportsTeamCompetitor
12
+ */
13
+ export declare function transformTeams(raw: RawTeamsResponse): FUSportsTeamCompetitor[];
10
14
  //# sourceMappingURL=transformer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transformer.d.ts","sourceRoot":"","sources":["../../../../../src/lib/api/fansunited/football/teams/transformer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,KAAK,EAAE,eAAe,EAAuB,MAAM,SAAS,CAAC;AA0DpE;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,eAAe,GAAG,sBAAsB,CAE1E"}
1
+ {"version":3,"file":"transformer.d.ts","sourceRoot":"","sources":["../../../../../src/lib/api/fansunited/football/teams/transformer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAuB,MAAM,SAAS,CAAC;AA0DtF;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,eAAe,GAAG,sBAAsB,CAE1E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,gBAAgB,GAAG,sBAAsB,EAAE,CAE9E"}
@@ -78,10 +78,53 @@ export interface RawTeam {
78
78
  export interface RawTeamResponse {
79
79
  data: RawTeam;
80
80
  }
81
+ /**
82
+ * Raw response metadata for paginated endpoints
83
+ */
84
+ export interface RawResponseMeta {
85
+ total: number;
86
+ per_page: number;
87
+ current_page: number;
88
+ last_page: number;
89
+ }
90
+ /**
91
+ * Raw teams response from /v1/teams
92
+ * The API wraps the teams array in a "data" property and includes metadata
93
+ */
94
+ export interface RawTeamsResponse {
95
+ meta: RawResponseMeta;
96
+ data: RawTeam[];
97
+ }
81
98
  export interface GetFootballTeamOptions {
82
99
  /** Language code for translations (e.g., 'EN', 'BG'). Defaults to 'EN' */
83
100
  lang?: string;
84
101
  /** Next.js cache options for ISR/on-demand revalidation */
85
102
  next?: NextCacheOptions;
86
103
  }
104
+ export interface GetFootballTeamsOptions {
105
+ /** Language code for translations (e.g., 'EN', 'BG'). Defaults to 'EN' */
106
+ lang?: string;
107
+ /** Filter by comma-separated team IDs (e.g., 'fb:t:8102,fb:t:8104') */
108
+ teamIds?: string;
109
+ /** Filter by country ID (e.g., 'fb:cnt:1224') */
110
+ countryId?: string;
111
+ /** Full-text search by team name */
112
+ name?: string;
113
+ /** Filter by comma-separated competition IDs (e.g., 'fb:c:478,fb:c:479'). Maximum is 15. */
114
+ scope?: string;
115
+ /** Filter by team type: national teams or clubs */
116
+ national?: boolean;
117
+ /** Filter by gender */
118
+ gender?: "male" | "female";
119
+ /** Number of teams returned by the request. Default is 20. Maximum is 200. */
120
+ limit?: number;
121
+ /** Choose the page in the result set. Starts from 1. */
122
+ page?: number;
123
+ /** The field by which the results will be sorted. ID by default. */
124
+ sortField?: string;
125
+ /** The direction of the sorting: ascending or descending */
126
+ sortOrder?: "asc" | "desc";
127
+ /** Next.js cache options for ISR/on-demand revalidation */
128
+ next?: NextCacheOptions;
129
+ }
87
130
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/lib/api/fansunited/football/teams/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAMnD,MAAM,WAAW,UAAU;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE;QACL,IAAI,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACL;AAED,MAAM,WAAW,QAAQ;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC3B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,MAAM,CAAC,EAAE;QACL,IAAI,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,MAAM,CAAC,EAAE;QACL,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC5B,CAAC;IACF,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC;CAC5B;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC5B,IAAI,EAAE,OAAO,CAAC;CACjB;AAMD,MAAM,WAAW,sBAAsB;IACnC,0EAA0E;IAC1E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,IAAI,CAAC,EAAE,gBAAgB,CAAC;CAC3B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/lib/api/fansunited/football/teams/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAMnD,MAAM,WAAW,UAAU;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE;QACL,IAAI,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACL;AAED,MAAM,WAAW,QAAQ;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC3B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,MAAM,CAAC,EAAE;QACL,IAAI,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,MAAM,CAAC,EAAE;QACL,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC5B,CAAC;IACF,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC;CAC5B;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC5B,IAAI,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE,OAAO,EAAE,CAAC;CACnB;AAMD,MAAM,WAAW,sBAAsB;IACnC,0EAA0E;IAC1E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,IAAI,CAAC,EAAE,gBAAgB,CAAC;CAC3B;AAED,MAAM,WAAW,uBAAuB;IACpC,0EAA0E;IAC1E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4FAA4F;IAC5F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uBAAuB;IACvB,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC3B,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAC3B,2DAA2D;IAC3D,IAAI,CAAC,EAAE,gBAAgB,CAAC;CAC3B"}
@@ -4,7 +4,7 @@
4
4
  * API layer for communicating with Fans United APIs.
5
5
  * All public functions return canonical FUSports types.
6
6
  */
7
- export { getFansUnitedFootballCompetitions, getFansUnitedFootballCompetition, getFansUnitedFootballTeam, getFansUnitedFootballPlayer, getFansUnitedFootballPlayers, getFansUnitedFootballMatch, getFansUnitedFootballMatches, getFansUnitedFootballSearch, } from "./football";
8
- export type { GetFootballCompetitionsOptions, GetFootballCompetitionOptions, GetFootballTeamOptions, GetFootballPlayerOptions, GetFootballPlayersOptions, GetFootballMatchOptions, GetFootballMatchesOptions, GetFootballSearchOptions, SearchEntityType, FansUnitedFootballSearchResult, } from "./football";
7
+ export { getFansUnitedFootballCompetitions, getFansUnitedFootballCompetition, getFansUnitedFootballTeam, getFansUnitedFootballTeams, getFansUnitedFootballPlayer, getFansUnitedFootballPlayers, getFansUnitedFootballMatch, getFansUnitedFootballMatches, getFansUnitedFootballSearch, } from "./football";
8
+ export type { GetFootballCompetitionsOptions, GetFootballCompetitionOptions, GetFootballTeamOptions, GetFootballTeamsOptions, GetFootballPlayerOptions, GetFootballPlayersOptions, GetFootballMatchOptions, GetFootballMatchesOptions, GetFootballSearchOptions, SearchEntityType, FansUnitedFootballSearchResult, } from "./football";
9
9
  export type { NextCacheOptions } from "./http";
10
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/api/fansunited/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACH,iCAAiC,EACjC,gCAAgC,EAChC,yBAAyB,EACzB,2BAA2B,EAC3B,4BAA4B,EAC5B,0BAA0B,EAC1B,4BAA4B,EAC5B,2BAA2B,GAC9B,MAAM,YAAY,CAAC;AAEpB,YAAY,EACR,8BAA8B,EAC9B,6BAA6B,EAC7B,sBAAsB,EACtB,wBAAwB,EACxB,yBAAyB,EACzB,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,EACxB,gBAAgB,EAChB,8BAA8B,GACjC,MAAM,YAAY,CAAC;AAGpB,YAAY,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/api/fansunited/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACH,iCAAiC,EACjC,gCAAgC,EAChC,yBAAyB,EACzB,0BAA0B,EAC1B,2BAA2B,EAC3B,4BAA4B,EAC5B,0BAA0B,EAC1B,4BAA4B,EAC5B,2BAA2B,GAC9B,MAAM,YAAY,CAAC;AAEpB,YAAY,EACR,8BAA8B,EAC9B,6BAA6B,EAC7B,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,EACxB,yBAAyB,EACzB,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,EACxB,gBAAgB,EAChB,8BAA8B,GACjC,MAAM,YAAY,CAAC;AAGpB,YAAY,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC"}
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("./matches-DKjnuuq_.cjs"),E=require("react");function le(e){return{entityType:"tournament",id:e.id.toString(),name:e.name,slug:e.slug,gender:e.gender,type:e.type,region:e.region,country:{id:e.country.id.toString(),name:e.country.name,code:void 0,flag:e.country.url_flag??void 0,providerRef:u.toProviderRefArray(e.country.uuid)},assets:e.url_logo?{logo:e.url_logo}:void 0,providerRef:u.toProviderRefArray(e.uuid)}}function de(e){return{entityType:"player",id:e.id.toString(),name:e.name,slug:e.slug,position:e.position,gender:e.gender,birthdate:e.birthdate,country:{id:e.country.id.toString(),name:e.country.name,code:void 0,flag:e.country.url_flag??void 0,providerRef:u.toProviderRefArray(e.country.uuid)},assets:e.url_thumb?{photo:e.url_thumb}:void 0,providerRef:u.toProviderRefArray(e.uuid)}}function ue(e){return{entityType:"team",id:e.id.toString(),name:e.name,slug:e.slug,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,type:e.type==="national"?"national":"club",gender:e.gender,country:{id:e.country.id.toString(),name:e.country.name,code:void 0,flag:e.country.url_flag??void 0,providerRef:u.toProviderRefArray(e.country.uuid)},assets:e.url_logo?{logo:e.url_logo}:void 0,providerRef:u.toProviderRefArray(e.uuid)}}function me(e){return{entityType:"president",id:e.id.toString(),name:e.name,slug:e.slug,birthdate:e.birthdate??void 0,country:{id:e.country.id.toString(),name:e.country.name,code:void 0,flag:e.country.url_flag??void 0,providerRef:u.toProviderRefArray(e.country.uuid)},assets:e.url_thumb?{photo:e.url_thumb}:void 0,providerRef:u.toProviderRefArray(e.uuid)}}function ge(e){return{entityType:"venue",id:e.id.toString(),name:e.name,slug:e.slug,city:{id:e.city.id.toString(),name:e.city.name,country:{id:e.city.country.id.toString(),name:e.city.country.name,code:void 0,flag:e.city.country.url_flag??void 0,providerRef:u.toProviderRefArray(e.city.country.uuid)},providerRef:u.toProviderRefArray(e.city.uuid)},country:{id:e.country.id.toString(),name:e.country.name,code:void 0,flag:e.country.url_flag??void 0,providerRef:u.toProviderRefArray(e.country.uuid)},profile:{latitude:e.profile.lat,longitude:e.profile.lng,capacity:e.profile.capacity},assets:e.url_thumb?{image:e.url_thumb}:void 0,providerRef:u.toProviderRefArray(e.uuid)}}function fe(e){return{entityType:"coach",id:e.id.toString(),name:e.name,slug:e.slug,birthdate:e.birthdate??void 0,country:{id:e.country.id.toString(),name:e.country.name,code:void 0,flag:e.country.url_flag??void 0,providerRef:u.toProviderRefArray(e.country.uuid)},assets:e.url_thumb?{photo:e.url_thumb}:void 0,providerRef:u.toProviderRefArray(e.uuid)}}function pe(e){switch(e.entity_type){case"tournament":return le(e);case"player":return de(e);case"team":return ue(e);case"president":return me(e);case"venue":return ge(e);case"coach":return fe(e);default:throw new Error(`Unknown entity type: ${e.entity_type}`)}}async function ye(e,t){if(!e.query||e.query.trim()==="")return{results:[],query:e.query||""};const o=t||u.getConfig(),{sportal365Sports:n}=o,s=e.entityTypes&&e.entityTypes.length>0?e.entityTypes:["tournament","player","team","president","venue","coach"],r=await u.footballHttp.get({path:"/search",params:{query:e.query.trim(),entity_type:s.join(","),language_code:e.languageCode??n?.languageCode??"en"},headers:{"Accept-Language":e.languageCode??n?.languageCode??"en"},next:e.next,config:o});return!r||r.length===0?{results:[],query:e.query}:{results:r.map(pe),query:e.query}}const he=u.createHttpClient(u.SPORTAL365_SPORTS_SEARCH_DOMAIN);function M(e){return{language:e.language,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0}}function O(e){if(!(!e||!e.url))return{url:e.url}}function G(e){if(e)return{id:e.id,legacyId:e.legacy_id??void 0,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,translations:e.translations.map(M),displayAsset:O(e.display_asset),slug:e.slug,providerRef:e.id}}function V(e){return{entityType:"team",id:e.id,legacyId:e.legacy_id??void 0,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,translations:e.translations.map(M),displayAsset:O(e.display_asset),slug:e.slug,tagScore:e.tag_score??void 0,sport:e.sport,country:G(e.country),gender:e.gender,competitionIds:e.competition_ids,type:e.type,national:e.national,undecided:e.undecided,providerRef:e.id}}function Q(e){return{entityType:"city",id:e.id,legacyId:e.legacy_id??void 0,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,translations:e.translations.map(M),displayAsset:O(e.display_asset),slug:e.slug,tagScore:e.tag_score??void 0,sport:e.sport,country:G(e.country),providerRef:e.id}}function Te(e){return{entityType:"horse",id:e.id,legacyId:e.legacy_id??void 0,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,translations:e.translations.map(M),displayAsset:O(e.display_asset),slug:e.slug,tagScore:e.tag_score??void 0,sport:e.sport,country:G(e.country),gender:e.gender,providerRef:e.id}}function ve(e){return{entityType:"player",id:e.id,legacyId:e.legacy_id??void 0,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,translations:e.translations.map(M),displayAsset:O(e.display_asset),slug:e.slug,tagScore:e.tag_score??void 0,sport:e.sport,country:G(e.country),gender:e.gender,birthdate:e.birthdate??void 0,position:e.position??void 0,providerRef:e.id}}function Se(e){return{entityType:"coach",id:e.id,legacyId:e.legacy_id??void 0,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,translations:e.translations.map(M),displayAsset:O(e.display_asset),slug:e.slug,tagScore:e.tag_score??void 0,sport:e.sport,country:G(e.country),gender:e.gender,birthdate:e.birthdate??void 0,providerRef:e.id}}function Ce(e){return{entityType:"referee",id:e.id,legacyId:e.legacy_id??void 0,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,translations:e.translations.map(M),displayAsset:O(e.display_asset),slug:e.slug,tagScore:e.tag_score??void 0,sport:e.sport,country:G(e.country),gender:e.gender,birthdate:e.birthdate??void 0,providerRef:e.id}}function _e(e){return{entityType:"venue",id:e.id,legacyId:e.legacy_id??void 0,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,translations:e.translations.map(M),displayAsset:O(e.display_asset),slug:e.slug,tagScore:e.tag_score??void 0,sport:e.sport,country:G(e.country),city:e.city?Q(e.city):void 0,providerRef:e.id}}function Ae(e){return{entityType:e.entity_type,id:e.id,legacyId:e.legacy_id??void 0,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,translations:e.translations.map(M),displayAsset:O(e.display_asset),slug:e.slug,tagScore:e.tag_score??void 0,sport:e.sport,country:G(e.country),gender:e.gender,type:e.type??void 0,region:e.region??void 0,providerRef:e.id}}function Fe(e){return{entityType:"match",id:e.id,legacyId:e.legacy_id??void 0,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,translations:e.translations.map(M),displayAsset:O(e.display_asset),slug:e.slug,tagScore:e.tag_score??void 0,sport:e.sport,competitionId:e.competition_id??void 0,startTime:e.start_time??void 0,homeTeam:e.home_team?V(e.home_team):void 0,awayTeam:e.away_team?V(e.away_team):void 0,providerRef:e.id}}function Me(e){return{entityType:"country",id:e.id,legacyId:e.legacy_id??void 0,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,translations:e.translations.map(M),displayAsset:O(e.display_asset),slug:e.slug,tagScore:e.tag_score??void 0,sport:e.sport,providerRef:e.id}}function Oe(e){switch(e.entity_type){case"team":return V(e);case"city":return Q(e);case"horse":return Te(e);case"player":return ve(e);case"coach":return Se(e);case"referee":return Ce(e);case"venue":return _e(e);case"tournament":case"competition":return Ae(e);case"match":return Fe(e);case"country":return Me(e);default:{const t=e;throw new Error(`Unknown entity type: ${t.entity_type}`)}}}async function Re(e={},t){const o=t??u.getConfig(),n={};e.name&&(n.name=e.name),e.entityTypes&&e.entityTypes.length>0&&(n.entity_type=e.entityTypes.join(",")),e.sports&&e.sports.length>0&&(n.sport=e.sports.join(",")),e.eventStartTime&&(n.event_start_time=e.eventStartTime),e.ids&&e.ids.length>0&&(n.ids=e.ids.join(",")),e.competitionIds&&e.competitionIds.length>0&&(n.competition_ids=e.competitionIds.join(",")),e.domain&&(n.domain=e.domain),e.inputLanguage&&(n.input_language=e.inputLanguage),e.translationLanguage&&(n.translation_language=e.translationLanguage),e.limit!==void 0&&(n.limit=e.limit.toString()),e.offset!==void 0&&(n.offset=e.offset.toString());const s=await he.get({path:"/suggest",params:n,next:e.next,config:o});return!s.results||s.results.length===0?{results:[],query:e.name}:{results:s.results.map(Oe),query:e.name}}const Pe=u.createHttpClient(u.SPORTAL365_STATISTICS_DOMAIN);function be(e,t){return{teamId:e.id,teamName:e.name,seasonId:t,statistics:e.statistics.map(o=>({key:o.id,value:o.value,label:o.name}))}}async function Ge(e,t){const o=t||u.getConfig(),n=e.next??{revalidate:600},s=await Pe.get({path:"/statistics/aggregate",params:{participant_ids:e.teamId,season_ids:e.seasonId,participant_type:"TEAM"},next:n,config:o});if(!s.data||s.data.length===0)throw new Error(`No statistics found for team ${e.teamId} in season ${e.seasonId}`);return be(s.data[0],e.seasonId)}function De(e){const t=e.replace(/\/$/,"");function o(n){return`${t}${n}`}return{async get(n){const s=n.config||u.getConfig(),{fansUnited:r}=s;if(!r)throw new Error("Fans United configuration is missing. Add 'fansUnited' with 'apiKey' and 'clientId' to your config.");if(!r.apiKey||!r.clientId)throw new Error("Fans United configuration requires both 'apiKey' and 'clientId'");const i=new URL(o(n.path));if(i.searchParams.set("key",r.apiKey),i.searchParams.set("client_id",r.clientId),n.params)for(const[m,c]of Object.entries(n.params))c!==void 0&&(Array.isArray(c)?c.length>0&&i.searchParams.set(m,c.join(",")):i.searchParams.set(m,c));const a=3e4,d=new URL(i.toString());d.searchParams.delete("key"),d.searchParams.delete("client_id"),console.log("🔗 FansUnited API URL:",d.toString());const l=await fetch(i.toString(),{method:"GET",headers:{Accept:"application/json","Content-Type":"application/json",...n.headers},signal:AbortSignal.timeout(a),...n.next&&{next:n.next}});if(!l.ok){let m=`Fans United API error: ${l.status} ${l.statusText}`;try{const c=await l.text();c&&(m+=` - ${c}`)}catch(c){console.error("[Fans United HTTP] Failed to read error response body:",{error:c instanceof Error?c.message:String(c),status:l.status,statusText:l.statusText})}throw new Error(m)}return l.json()}}}const Ee="https://football.fansunitedapi.com",D=De(Ee);function Ne(e){return{id:String(e.id),name:e.name,active:e.active,providerRef:[{provider:"fansunited",id:String(e.id)}]}}function Ie(e){const t={id:String(e.id),name:e.name,shortName:e.short_name,slug:e.slug,type:e.type||"LEAGUE",region:e.region,gender:e.gender,providerRef:[{provider:"fansunited",id:String(e.id)}]};return e.country&&(t.country={id:String(e.country.id),name:e.country.name,code:e.country.code,flag:e.country.assets?.flag,providerRef:[{provider:"fansunited",id:String(e.country.id)}]}),e.assets?.logo&&(t.assets={logo:e.assets.logo}),e.seasons&&e.seasons.length>0&&(t.seasons=e.seasons.map(Ne)),e.current_season&&(t.season={id:String(e.current_season.id),name:e.current_season.name,status:e.current_season.active?"ACTIVE":"INACTIVE"}),t}function Le(e){return e.map(Ie)}async function He(e,t){const o={};e?.lang?o.lang=e.lang:o.lang="EN",e?.sortField&&(o.sort_field=e.sortField),e?.sortOrder&&(o.sort_order=e.sortOrder),e?.page!==void 0&&(o.page=String(e.page)),e?.perPage!==void 0&&(o.per_page=String(e.perPage)),e?.countryId!==void 0&&(o.country_id=String(e.countryId)),e?.active!==void 0&&(o.active=e.active?"1":"0");const n=await D.get({path:"/v1/competitions",params:o,config:t,next:e?.next}),s=n.data.map(l=>l.id),r=new Set(s);s.length!==r.size&&console.warn("⚠️ API returned duplicate competitions!");const i=Le(n.data),a=new Set,d=i.filter(l=>a.has(l.id)?!1:(a.add(l.id),!0));return i.length!==d.length&&console.warn(`Removed ${i.length-d.length} duplicate competitions`),d}function ke(e){return{id:e.id,name:e.name,code:e.country_code,assets:e.assets?.flag?{flag:e.assets.flag}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function Ue(e){return{id:e.id,name:e.name,type:e.type?.toUpperCase()||"LEAGUE",gender:e.gender?.toUpperCase(),country:e.country?ke(e.country):void 0,assets:e.assets?.logo?{logo:e.assets.logo}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function Be(e){return Ue(e.data)}async function $e(e,t,o){const n=o||u.getConfig(),s={};t?.lang&&(s.lang=t.lang);const r=await D.get({path:`/v1/competitions/${e}`,params:s,next:t?.next,config:n});return Be(r)}function xe(e){return{id:e.id,name:e.name,code:e.country_code,flag:e.assets?.flag,providerRef:[{provider:"fansunited",id:e.id}]}}function We(e){return{id:e.id,name:e.name,shortName:e.short_name||void 0,threeLetterCode:e.code,type:e.national?"national":"club",gender:e.gender?e.gender.toUpperCase():void 0,country:e.country?xe(e.country):void 0,assets:e.assets?.logo?{logo:e.assets.logo}:void 0,metadata:e.colors?{shirtColors:e.colors.primary?[{type:"home",colorCode:e.colors.primary}]:void 0}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function qe(e){return We(e.data)}async function je(e,t,o){const n=o||u.getConfig(),s={};t?.lang&&(s.lang=t.lang);const r=await D.get({path:`/v1/teams/${e}`,params:s,next:t?.next,config:n});return qe(r)}function Y(e){return{id:e.id,name:e.name,code:e.country_code,flag:e.assets?.flag,providerRef:[{provider:"fansunited",id:e.id}]}}function Ve(e){return{id:e.id,name:e.name,shortName:e.short_name??void 0,fullName:e.full_name??void 0,threeLetterCode:e.code,type:e.national?"national":"club",gender:e.gender?.toUpperCase(),country:e.country?Y(e.country):void 0,assets:e.assets?.logo?{logo:e.assets.logo}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function Ye(e){return{id:e.id,name:e.name,type:e.type?.toUpperCase()||"LEAGUE",gender:e.gender?.toUpperCase(),country:e.country?Y(e.country):void 0,assets:e.assets?.logo?{logo:e.assets.logo}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function X(e){return{type:"player",id:e.id,name:e.name,position:e.position,birthdate:e.birth_date,country:e.country?Y(e.country):void 0,assets:e.assets?.headshot?{photo:e.assets.headshot}:void 0,teams:e.teams?.map(Ve),competitions:e.competitions?.map(Ye),providerRef:[{provider:"fansunited",id:e.id}]}}function ze(e){return X(e.data)}function Ke(e){return e.data.map(X)}async function Je(e,t,o){const n=o||u.getConfig(),s={};t?.lang&&(s.lang=t.lang);const r=await D.get({path:`/v1/players/${e}`,params:s,next:t?.next,config:n});return ze(r)}async function Qe(e,t){const o=t||u.getConfig(),n={};e?.lang&&(n.lang=e.lang),e?.playerIds&&(n.player_ids=e.playerIds),e?.countryId&&(n.country_id=e.countryId),e?.name&&(n.name=e.name),e?.scope&&(n.scope=e.scope),e?.limit!==void 0&&(n.limit=String(e.limit)),e?.page!==void 0&&(n.page=String(e.page)),e?.sortField&&(n.sort_field=e.sortField),e?.sortOrder&&(n.sort_order=e.sortOrder);const s=await D.get({path:"/v1/players",params:n,next:e?.next,config:o});return Ke(s)}async function Xe(e,t,o){const n=o||u.getConfig(),s={};t?.lang&&(s.lang=t.lang);const r=await D.get({path:`/v1/matches/${e}`,params:s,next:t?.next,config:n});return u.transformMatch(r)}async function Ze(e,t){const o=t||u.getConfig(),n={};e?.lang&&(n.lang=e.lang),e?.competitions&&(n.competitions=e.competitions),e?.countries&&(n.countries=e.countries),e?.fromDate&&(n.from_date=e.fromDate),e?.toDate&&(n.to_date=e.toDate),e?.matches&&(n.matches=e.matches),e?.teams&&(n.teams=e.teams),e?.status&&(n.status=e.status),e?.limit!==void 0&&(n.limit=String(e.limit)),e?.page!==void 0&&(n.page=String(e.page)),e?.sortField&&(n.sort_field=e.sortField),e?.sortOrder&&(n.sort_order=e.sortOrder),e?.showDeleted!==void 0&&(n.show_deleted=e.showDeleted?"true":"false");const s=await D.get({path:"/v1/matches",params:n,next:e?.next,config:o});return u.transformMatches(s)}function z(e){return{id:e.id,name:e.name,code:e.country_code,flag:e.assets?.flag||void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function we(e){return{id:e.id,name:e.name,shortName:e.short_name||void 0,type:e.type||"LEAGUE",region:e.region,gender:e.gender?.toUpperCase(),country:e.country?z(e.country):void 0,assets:e.assets?.logo?{logo:e.assets.logo}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function et(e){return{type:"player",id:e.id,name:e.name,position:e.position||void 0,gender:e.gender?.toUpperCase(),birthdate:e.birth_date||void 0,country:e.country?z(e.country):void 0,assets:e.assets?.headshot?{photo:e.assets.headshot}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function tt(e){return{type:e.national?"national":"club",id:e.id,name:e.name,shortName:e.short_name||void 0,threeLetterCode:e.code||void 0,gender:e.gender?.toUpperCase(),country:e.country?z(e.country):void 0,assets:e.assets?.logo?{logo:e.assets.logo}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function j(e){switch(e.entity_type){case"competition":{const t=we(e);return{source:"FOOTBALL",entityType:"competition",entityId:e.id,entityData:t}}case"player":{const t=et(e);return{source:"FOOTBALL",entityType:"player",entityId:e.id,entityData:t}}case"team":{const t=tt(e);return{source:"FOOTBALL",entityType:"team",entityId:e.id,entityData:t}}case"venue":case"coach":return null;default:throw new Error(`Unknown entity type: ${e.entity_type}`)}}async function ot(e,t){if(!e.query||e.query.trim()==="")return[];const o=t||u.getConfig(),n={q:e.query.trim()},r=(e.entityTypes&&e.entityTypes.length>0?e.entityTypes:["competition","team","player"]).map(d=>{switch(d){case"team":return"teams";case"player":return"players";case"competition":return"competitions";default:return d}});n.entities=r.join(","),e.lang&&(n.lang=e.lang),e.limit&&(n.limit=String(e.limit));const i=await D.get({path:"/v1/search",params:n,next:e.next,config:o}),a=[];return i.data&&(i.data.competitions&&i.data.competitions.forEach(d=>{const l=j({...d,entity_type:"competition"});l&&a.push(l)}),i.data.teams&&i.data.teams.forEach(d=>{const l=j({...d,entity_type:"team"});l&&a.push(l)}),i.data.players&&i.data.players.forEach(d=>{const l=j({...d,entity_type:"player"});l&&a.push(l)})),a}function st(e){return!e.seasons||e.seasons.length===0?void 0:e.seasons.find(o=>o.active)??e.seasons[0]}function nt(e,t){const o=new Date,n=t.filter(s=>{const r=s.competitorOne.id===e||s.competitorTwo.id===e,i=s.status.type==="NOT_STARTED",a=new Date(s.timing.kickoffTime)>=o;return r&&i&&a});return n.sort((s,r)=>new Date(s.timing.kickoffTime).getTime()-new Date(r.timing.kickoffTime).getTime()),n[0]}function rt(e,t){const o=new Date,n=t.filter(s=>{const r=s.competitorOne.id===e||s.competitorTwo.id===e,i=s.status.type==="FINISHED",a=new Date(s.timing.kickoffTime)<=o;return r&&i&&a});return n.sort((s,r)=>new Date(r.timing.kickoffTime).getTime()-new Date(s.timing.kickoffTime).getTime()),n[0]}function it(e,t){const o=new Date;return t.filter(s=>{const r=s.competitorOne.id===e||s.competitorTwo.id===e,i=s.status.type==="NOT_STARTED"||s.status.type==="LIVE",a=new Date(s.timing.kickoffTime)>=o||s.status.type==="LIVE";return r&&i&&a}).sort((s,r)=>new Date(s.timing.kickoffTime).getTime()-new Date(r.timing.kickoffTime).getTime())}function at(e,t){const o=new Date;return t.filter(s=>{const r=s.competitorOne.id===e||s.competitorTwo.id===e,i=s.status.type==="FINISHED",a=new Date(s.timing.kickoffTime)<=o;return r&&i&&a}).sort((s,r)=>new Date(r.timing.kickoffTime).getTime()-new Date(s.timing.kickoffTime).getTime())}function ct(e,t,o){const n=o.filter(i=>i.status.type==="FINISHED"),s=o.filter(i=>i.status.type==="NOT_STARTED"||i.status.type==="POSTPONED"),r=t.entries.map(i=>{const a=i.competitor.id,d=n.filter(g=>g.competitorOne.id===e&&g.competitorTwo.id===a||g.competitorOne.id===a&&g.competitorTwo.id===e),l=s.filter(g=>g.competitorOne.id===e&&g.competitorTwo.id===a||g.competitorOne.id===a&&g.competitorTwo.id===e);let m,c;return d.forEach(g=>{const p=g.competitorOne.id===e,y=parseInt(g.score?.competitorOne??"0"),T=parseInt(g.score?.competitorTwo??"0"),R=p?y:T,_=p?T:y;let F;R>_?F="W":R===_?F="D":F="L";const P={result:F,score:`${y} - ${T}`,date:g.timing.kickoffTime,matchId:g.id,isUpcoming:!1};p?m=P:c=P}),l.forEach(g=>{const p=g.competitorOne.id===e;p&&!m?m={date:g.timing.kickoffTime,matchId:g.id,isUpcoming:!0}:!p&&!c&&(c={date:g.timing.kickoffTime,matchId:g.id,isUpcoming:!0})}),{rank:i.rank,teamId:i.competitor.id,teamName:i.competitor.name,teamShortName:i.competitor.shortName,teamLogo:i.competitor.logo,gamesPlayed:i.stats.played??0,points:i.stats.points??0,homeResult:m,awayResult:c}});return{teamId:e,rows:r}}function lt(e,t=10){return e.players.filter(o=>(o.seasonStatistics?.goals??0)>0).sort((o,n)=>{const s=o.seasonStatistics?.goals??0,r=n.seasonStatistics?.goals??0;if(r!==s)return r-s;const i=o.seasonStatistics?.assists??0;return(n.seasonStatistics?.assists??0)-i}).slice(0,t)}function dt(e,t=10){return e.players.filter(o=>(o.seasonStatistics?.assists??0)>0).sort((o,n)=>{const s=o.seasonStatistics?.assists??0,r=n.seasonStatistics?.assists??0;if(r!==s)return r-s;const i=o.seasonStatistics?.goals??0;return(n.seasonStatistics?.goals??0)-i}).slice(0,t)}function ut(e,t=10){return e.players.filter(o=>(o.seasonStatistics?.appearances??0)>0).sort((o,n)=>{const s=o.seasonStatistics?.appearances??0,r=n.seasonStatistics?.appearances??0;if(r!==s)return r-s;const i=o.seasonStatistics?.minutes??0;return(n.seasonStatistics?.minutes??0)-i}).slice(0,t)}function mt(e,t=10){return e.players.filter(o=>(o.seasonStatistics?.minutes??0)>0).sort((o,n)=>{const s=o.seasonStatistics?.minutes??0,r=n.seasonStatistics?.minutes??0;if(r!==s)return r-s;const i=o.seasonStatistics?.appearances??0;return(n.seasonStatistics?.appearances??0)-i}).slice(0,t)}function gt(e,t=10){return e.players.filter(o=>(o.seasonStatistics?.cleansheets??0)>0).sort((o,n)=>{const s=o.seasonStatistics?.cleansheets??0,r=n.seasonStatistics?.cleansheets??0;if(r!==s)return r-s;const i=o.seasonStatistics?.appearances??0;return(n.seasonStatistics?.appearances??0)-i}).slice(0,t)}function ft(e,t=10){return e.players.filter(o=>{const n=o.seasonStatistics?.yellowCards??0,s=o.seasonStatistics?.redCards??0;return n+s>0}).sort((o,n)=>{const s=o.seasonStatistics?.yellowCards??0,r=o.seasonStatistics?.redCards??0,i=n.seasonStatistics?.yellowCards??0,a=n.seasonStatistics?.redCards??0,d=s+r*3,l=i+a*3;return l!==d?l-d:a!==r?a-r:i-s}).slice(0,t)}function N(e){const t=new Map,o=new Map;return e.forEach(n=>{!n.mainEvents||n.mainEvents.length===0||n.mainEvents.forEach(s=>{if(s.primaryPlayer){const r=s.primaryPlayer.id;t.has(r)||t.set(r,{playerId:s.primaryPlayer.id,seasonId:"",teamId:"",goals:0,assists:0,yellowCards:0,redCards:0,appearances:0});const i=t.get(r);o.has(r)||o.set(r,new Set),o.get(r).add(n.id),(s.type==="GOAL"||s.type==="PENALTY_GOAL")&&(i.goals=(i.goals??0)+1),s.type==="YELLOW_CARD"&&(i.yellowCards=(i.yellowCards??0)+1),(s.type==="RED_CARD"||s.type==="YELLOW_RED_CARD")&&(i.redCards=(i.redCards??0)+1)}if(s.secondaryPlayer&&(s.type==="GOAL"||s.type==="PENALTY_GOAL")){const r=s.secondaryPlayer.id;t.has(r)||t.set(r,{playerId:s.secondaryPlayer.id,seasonId:"",teamId:"",goals:0,assists:0,yellowCards:0,redCards:0,appearances:0});const i=t.get(r);i.assists=(i.assists??0)+1,o.has(r)||o.set(r,new Set),o.get(r).add(n.id)}})}),o.forEach((n,s)=>{const r=t.get(s);r&&r.appearances!==void 0&&(r.appearances=n.size)}),t}function U(e){return Array.from(e.values()).map(t=>({...t,totalCards:(t.yellowCards??0)+(t.redCards??0)}))}function Z(e,t=10){const o=N(e);return U(o).filter(s=>(s.goals??0)>0).sort((s,r)=>{const i=s.goals??0,a=r.goals??0;if(a!==i)return a-i;const d=s.assists??0;return(r.assists??0)-d}).slice(0,t)}function w(e,t=10){const o=N(e);return U(o).filter(s=>(s.assists??0)>0).sort((s,r)=>{const i=s.assists??0,a=r.assists??0;if(a!==i)return a-i;const d=s.goals??0;return(r.goals??0)-d}).slice(0,t)}function ee(e,t=10){const o=N(e);return U(o).filter(s=>(s.totalCards??0)>0).sort((s,r)=>{const i=(s.yellowCards??0)+(s.redCards??0)*3,a=(r.yellowCards??0)+(r.redCards??0)*3;if(a!==i)return a-i;const d=s.redCards??0,l=r.redCards??0;if(l!==d)return l-d;const m=s.yellowCards??0;return(r.yellowCards??0)-m}).slice(0,t)}function te(e,t=10){const o=N(e);return U(o).filter(s=>(s.goals??0)+(s.assists??0)>0).sort((s,r)=>{const i=(s.goals??0)+(s.assists??0),a=(r.goals??0)+(r.assists??0);if(a!==i)return a-i;const d=s.goals??0,l=r.goals??0;if(l!==d)return l-d;const m=s.assists??0;return(r.assists??0)-m}).slice(0,t)}function oe(e){const t=N(e);return U(t).sort((n,s)=>{const r=n.appearances??0,i=s.appearances??0;if(i!==r)return i-r;const a=(n.goals??0)+(n.assists??0);return(s.goals??0)+(s.assists??0)-a})}function pt(e,t=10){return E.useMemo(()=>Z(e,t),[e,t])}function yt(e,t=10){return E.useMemo(()=>w(e,t),[e,t])}function ht(e,t=10){return E.useMemo(()=>ee(e,t),[e,t])}function Tt(e,t=10){return E.useMemo(()=>te(e,t),[e,t])}function vt(e){return E.useMemo(()=>oe(e),[e])}function se(e){return E.useMemo(()=>N(e),[e])}function St(e,t){const o=se(e);return E.useMemo(()=>o.get(t),[o,t])}const ne=["GOAL","PENALTY_GOAL","OWN_GOAL"];function A(e,t){return t>0?e/t*100:0}function H(e,t){return t>0?e/t:0}function Ct(e,t=!1,o=2){return t?`${Math.round(e)}%`:Number.isInteger(e)?e.toString():e.toFixed(o)}function _t(e,t){const o=typeof e=="string"?parseFloat(e):e;if(isNaN(o)||t===0)return"0";const n=(o/t).toFixed(1);return`${o} (${n} avg)`}function At(e,t){const o=typeof e=="string"?parseFloat(e):e;return isNaN(o)||t===0?"0.0":(o/t).toFixed(1)}function Ft(e){const t=parseFloat(e);return isNaN(t)?"0%":`${Math.round(t)}%`}function re(e,t,o){if(e.status?.type!=="FINISHED"||!e.score)return null;const n=parseInt(e.score.competitorOne||"0"),s=parseInt(e.score.competitorTwo||"0"),r=o?n:s,i=o?s:n;let a=null,d=null;const l=e.score.breakdown?.halfTime;if(l){const p=parseInt(l.competitorOne||"0"),y=parseInt(l.competitorTwo||"0");a=o?p:y,d=o?y:p}const m=e.statistics;let c=null,g=null;if(m){const p=m.find?.(y=>y.type==="CORNERS");p&&(c=o?p.competitorOne:p.competitorTwo,g=o?p.competitorTwo:p.competitorOne)}return{goalsFor:r,goalsAgainst:i,halfTimeGoalsFor:a,halfTimeGoalsAgainst:d,cornersFor:c,cornersAgainst:g,isWin:r>i,isDraw:r===i,isLoss:r<i}}function q(e,t){return e.competitorOne.id===t}function ie(e,t){return e.competitorTwo.id===t}function Mt(e,t){return q(e,t)||ie(e,t)}function Ot(e){return e.status?.type==="FINISHED"}function Rt(e,t){const o=q(e,t);return parseInt(o?e.score?.competitorOne||"0":e.score?.competitorTwo||"0")}function Pt(e,t){const o=q(e,t);return parseInt(o?e.score?.competitorTwo||"0":e.score?.competitorOne||"0")}function bt(e,t,o){const n=e.filter(m=>{if(m.status?.type!=="FINISHED"||!m.score)return!1;const c=m.competitorOne.id===t||m.competitorTwo.id===t,g=m.competitorOne.id===o||m.competitorTwo.id===o;return c&&g});let s=0,r=0,i=0,a=0,d=0;n.forEach(m=>{const c=parseInt(m.score?.competitorOne||"0"),g=parseInt(m.score?.competitorTwo||"0"),p=m.competitorOne.id===t,y=p?c:g,T=p?g:c;a+=y,d+=T,y>T?s++:T>y?r++:i++});const l=n.length;return{totalMatches:l,homeTeamWins:s,awayTeamWins:r,draws:i,homeTeamGoals:a,awayTeamGoals:d,homeTeamWinPercentage:l>0?s/l*100:0,awayTeamWinPercentage:l>0?r/l*100:0,drawPercentage:l>0?i/l*100:0,homeTeamAvgGoals:l>0?a/l:0,awayTeamAvgGoals:l>0?d/l:0}}function Gt(e,t,o,n=5){return e.filter(r=>{if(r.status?.type!=="FINISHED"||!r.score)return!1;const i=r.competitorOne.id===t||r.competitorTwo.id===t,a=r.competitorOne.id===o||r.competitorTwo.id===o;return i&&a}).sort((r,i)=>new Date(i.timing.kickoffTime).getTime()-new Date(r.timing.kickoffTime).getTime()).slice(0,n).map(r=>{const i=parseInt(r.score?.competitorOne||"0"),a=parseInt(r.score?.competitorTwo||"0"),d=r.competitorOne.id===t,l=d?i:a,m=d?a:i;let c;return l>m?c="home":m>l?c="away":c="draw",{id:r.id,date:new Date(r.timing.kickoffTime).toLocaleDateString("en-GB",{day:"numeric",month:"short",year:"numeric"}),homeTeamName:r.competitorOne.name,awayTeamName:r.competitorTwo.name,homeTeamLogo:r.competitorOne.assets?.logo,awayTeamLogo:r.competitorTwo.assets?.logo,homeScore:i,awayScore:a,venue:r.venue?.name,winner:c}})}function Dt(e,t,o){return e.filter(n=>{const s=n.competitorOne.id===t,r=n.competitorTwo.id===t;return!s&&!r?!1:o==="home"?s:r}).map(n=>{const s=n.competitorOne.id===t;return re(n,t,s)}).filter(n=>n!==null)}function K(e,t,o,n){let s=0;for(const r of e){const i=r.competitorOne.id===t,a=r.competitorTwo.id===t;if(!i&&!a||o==="home"&&!i||o==="away"&&!a||r.status?.type!=="FINISHED")continue;const d=r.mainEvents;if(!d||!Array.isArray(d))continue;const l=d.filter(y=>y.type&&ne.includes(y.type)).sort((y,T)=>{const R=y.minute??0,_=T.minute??0;return R!==_?R-_:(y.injuryMinute??0)-(T.injuryMinute??0)});if(l.length===0)continue;const m=l[0],c=i?"ONE":"TWO",g=m.type==="OWN_GOAL";let p;g?p=m.competitorPosition!==c:p=m.competitorPosition===c,(n==="scored"&&p||n==="conceded"&&!p)&&s++}return s}function Et(e,t,o){let n=0;for(const s of e){const r=s.competitorOne.id===t,i=s.competitorTwo.id===t;if(!r&&!i||o==="home"&&!r||o==="away"&&!i||s.status?.type!=="FINISHED")continue;const a=s.mainEvents;a&&Array.isArray(a)&&n++}return n}function Nt(e,t,o){const n=Dt(e,t,o),s=n.length;if(s===0)return{played:0,goalsForPerMatch:0,cleanSheets:0,wonToNil:0,scoringRate:0,scoredInBothHalves:0,scoredFirst:0,leadingAtHalfTime:0,goalsAgainstPerMatch:0,failedToScore:0,lostToNil:0,concedingRate:0,concededInBothHalves:0,concededFirst:0,losingAtHalfTime:0,avgCornersFor:0,avgCornersAgainst:0};const r=n.reduce((f,S)=>f+S.goalsFor,0),i=n.reduce((f,S)=>f+S.goalsAgainst,0),a=n.filter(f=>f.goalsAgainst===0).length,d=n.filter(f=>f.isWin&&f.goalsAgainst===0).length,l=n.filter(f=>f.goalsFor>0).length,m=n.filter(f=>f.goalsFor===0).length,c=n.filter(f=>f.isLoss&&f.goalsFor===0).length,g=n.filter(f=>f.goalsAgainst>0).length,p=n.filter(f=>f.halfTimeGoalsFor!==null),y=p.length,T=p.filter(f=>{const S=f.halfTimeGoalsFor,L=f.goalsFor-S;return S>0&&L>0}).length,R=K(e,t,o,"scored"),_=Et(e,t,o),F=p.filter(f=>f.halfTimeGoalsFor>f.halfTimeGoalsAgainst).length,P=p.filter(f=>{const S=f.halfTimeGoalsAgainst,L=f.goalsAgainst-S;return S>0&&L>0}).length,B=K(e,t,o,"conceded"),$=p.filter(f=>f.halfTimeGoalsAgainst>f.halfTimeGoalsFor).length,I=n.filter(f=>f.cornersFor!==null),x=I.reduce((f,S)=>f+(S.cornersFor||0),0),W=I.reduce((f,S)=>f+(S.cornersAgainst||0),0);return{played:s,goalsForPerMatch:H(r,s),cleanSheets:A(a,s),wonToNil:A(d,s),scoringRate:A(l,s),scoredInBothHalves:A(T,y),scoredFirst:A(R,_),leadingAtHalfTime:A(F,y),goalsAgainstPerMatch:H(i,s),failedToScore:A(m,s),lostToNil:A(c,s),concedingRate:A(g,s),concededInBothHalves:A(P,y),concededFirst:A(B,_),losingAtHalfTime:A($,y),avgCornersFor:H(x,I.length),avgCornersAgainst:H(W,I.length)}}function It(e,t){return e.filter(o=>o.status?.type!=="FINISHED"?!1:o.competitorOne.id===t||o.competitorTwo.id===t).map(o=>{const n=o.competitorOne.id===t,s=parseInt(o.score?.competitorOne||"0"),r=parseInt(o.score?.competitorTwo||"0"),i=s+r,a=o.periods;let d=null;if(a&&Array.isArray(a)){const l=a.find(m=>m.type==="FIRST_HALF"||m.type==="1ST_HALF");if(l?.score){const m=parseInt(l.score.competitorOne||"0"),c=parseInt(l.score.competitorTwo||"0");d=m+c}}return{totalGoals:i,halfTimeGoals:d,isHome:n}})}function h(e,t){return e.length===0?0:e.filter(n=>n>t).length/e.length*100}function Lt(e,t){const o=It(e,t),n=o.filter(c=>c.isHome),s=o.filter(c=>!c.isHome),r=o.map(c=>c.totalGoals),i=n.map(c=>c.totalGoals),a=s.map(c=>c.totalGoals),d=o.filter(c=>c.halfTimeGoals!==null).map(c=>c.halfTimeGoals),l=n.filter(c=>c.halfTimeGoals!==null).map(c=>c.halfTimeGoals),m=s.filter(c=>c.halfTimeGoals!==null).map(c=>c.halfTimeGoals);return{over05:{home:h(i,.5),total:h(r,.5),away:h(a,.5)},over15:{home:h(i,1.5),total:h(r,1.5),away:h(a,1.5)},over25:{home:h(i,2.5),total:h(r,2.5),away:h(a,2.5)},over35:{home:h(i,3.5),total:h(r,3.5),away:h(a,3.5)},over45:{home:h(i,4.5),total:h(r,4.5),away:h(a,4.5)},over55:{home:h(i,5.5),total:h(r,5.5),away:h(a,5.5)},over05HT:{home:h(l,.5),total:h(d,.5),away:h(m,.5)},over15HT:{home:h(l,1.5),total:h(d,1.5),away:h(m,1.5)},over25HT:{home:h(l,2.5),total:h(d,2.5),away:h(m,2.5)}}}function ae(e,t){const o=e.competitorOne.id===t,n=e.competitorTwo.id===t;if(!o&&!n||!e.score)return null;const s=parseInt(o?e.score.competitorOne||"0":e.score.competitorTwo||"0"),r=parseInt(o?e.score.competitorTwo||"0":e.score.competitorOne||"0");let i;return s>r?i="W":s<r?i="L":i="D",{result:{score:`${s}:${r}`,result:i,isHome:o},isHome:o}}function Ht(e,t,o,n,s,r){const i=t?.entries.find(b=>b.competitor.id===e),a=o?.entries.find(b=>b.competitor.id===e),d=n?.entries.find(b=>b.competitor.id===e),l=s?.entries.find(b=>b.competitor.id===e),m=r?.entries.find(b=>b.competitor.id===e);if(!i)return null;const c=a?.stats?.goalsFor??0,g=d?.stats?.goalsFor??0,p=i?.stats?.goalsFor??0,y=l?.stats?.goalsAgainst??0,T=m?.stats?.goalsAgainst??0,R=i?.stats?.goalsAgainst??0,_=a?.stats?.played??0,F=d?.stats?.played??0,P=i?.stats?.played??0,B=P>0?p/P:0,$=P>0?R/P:0,I=B+$,x=_>0?c/_:0,W=F>0?g/F:0,f=_>0?y/_:0,S=F>0?T/F:0,L=x+f,ce=W+S;return{homeGoals:c,totalGoals:p,awayGoals:g,homeGamesPlayed:_,awayGamesPlayed:F,totalGamesPlayed:P,homeGoalsConceded:y,totalGoalsConceded:R,awayGoalsConceded:T,gfPerMatch:B,gaPerMatch:$,gfGaPerMatch:I,homeGfPerMatch:x,awayGfPerMatch:W,homeGaPerMatch:f,awayGaPerMatch:S,homeGfGaPerMatch:L,awayGfGaPerMatch:ce}}function C(e,t,o,n){const s=e.filter(i=>{const a=i.competitorOne.id===t,d=i.competitorTwo.id===t;return!(!a&&!d||i.status?.type!=="FINISHED"||n==="home"&&!a||n==="away"&&!d)}).sort((i,a)=>new Date(a.timing.kickoffTime).getTime()-new Date(i.timing.kickoffTime).getTime());if(s.length===0)return null;let r=0;for(const i of s){const a=i.competitorOne.id===t;if(o(i,t,a))r++;else break}return r>0?r:null}const v={win:(e,t,o)=>{const n=parseInt(o?e.score?.competitorOne||"0":e.score?.competitorTwo||"0"),s=parseInt(o?e.score?.competitorTwo||"0":e.score?.competitorOne||"0");return n>s},draw:e=>e.score?.competitorOne===e.score?.competitorTwo,loss:(e,t,o)=>{const n=parseInt(o?e.score?.competitorOne||"0":e.score?.competitorTwo||"0"),s=parseInt(o?e.score?.competitorTwo||"0":e.score?.competitorOne||"0");return n<s},noWin:(e,t,o)=>!v.win(e,t,o),noDraw:e=>!v.draw(e),noDefeat:(e,t,o)=>!v.loss(e,t,o),scored:(e,t,o)=>parseInt(o?e.score?.competitorOne||"0":e.score?.competitorTwo||"0")>=1,conceded:(e,t,o)=>parseInt(o?e.score?.competitorTwo||"0":e.score?.competitorOne||"0")>=1,noGoalScored:(e,t,o)=>!v.scored(e,t,o),noGoalConceded:(e,t,o)=>!v.conceded(e,t,o),over25:e=>parseInt(e.score?.competitorOne||"0")+parseInt(e.score?.competitorTwo||"0")>2,under25:e=>parseInt(e.score?.competitorOne||"0")+parseInt(e.score?.competitorTwo||"0")<3,scoredTwice:(e,t,o)=>parseInt(o?e.score?.competitorOne||"0":e.score?.competitorTwo||"0")>=2,concededTwice:(e,t,o)=>parseInt(o?e.score?.competitorTwo||"0":e.score?.competitorOne||"0")>=2};function k(e,t,o){return{win:C(e,t,v.win,o),draw:C(e,t,v.draw,o),loss:C(e,t,v.loss,o),noWin:C(e,t,v.noWin,o),noDraw:C(e,t,v.noDraw,o),noDefeat:C(e,t,v.noDefeat,o),scored:C(e,t,v.scored,o),conceded:C(e,t,v.conceded,o),noGoalScored:C(e,t,v.noGoalScored,o),noGoalConceded:C(e,t,v.noGoalConceded,o),over25:C(e,t,v.over25,o),under25:C(e,t,v.under25,o),scoredTwice:C(e,t,v.scoredTwice,o),concededTwice:C(e,t,v.concededTwice,o)}}function kt(e,t,o){const n=k(e,t,"home"),s=k(e,t),r=k(e,o,"away"),i=k(e,o);return[{label:"Consecutive wins",homeTeam:{home:n.win,total:s.win},awayTeam:{total:i.win,home:r.win},colorType:"neutral"},{label:"Consecutive draws",homeTeam:{home:n.draw,total:s.draw},awayTeam:{total:i.draw,home:r.draw},colorType:"neutral"},{label:"Consecutive defeats",homeTeam:{home:n.loss,total:s.loss},awayTeam:{total:i.loss,home:r.loss},colorType:"neutral"},{label:"No win",homeTeam:{home:n.noWin,total:s.noWin},awayTeam:{total:i.noWin,home:r.noWin},colorType:"negative"},{label:"No draw",homeTeam:{home:n.noDraw,total:s.noDraw},awayTeam:{total:i.noDraw,home:r.noDraw},colorType:"neutral"},{label:"No defeat",homeTeam:{home:n.noDefeat,total:s.noDefeat},awayTeam:{total:i.noDefeat,home:r.noDefeat},colorType:"positive"},{label:"Scored at least once",homeTeam:{home:n.scored,total:s.scored},awayTeam:{total:i.scored,home:r.scored},colorType:"positive"},{label:"Conceded at least once",homeTeam:{home:n.conceded,total:s.conceded},awayTeam:{total:i.conceded,home:r.conceded},colorType:"negative"},{label:"No goal scored",homeTeam:{home:n.noGoalScored,total:s.noGoalScored},awayTeam:{total:i.noGoalScored,home:r.noGoalScored},colorType:"neutral"},{label:"No goal conceded",homeTeam:{home:n.noGoalConceded,total:s.noGoalConceded},awayTeam:{total:i.noGoalConceded,home:r.noGoalConceded},colorType:"neutral"},{label:"GS + GC over 2.5",homeTeam:{home:n.over25,total:s.over25},awayTeam:{total:i.over25,home:r.over25},colorType:"neutral"},{label:"GS + GC under 2.5",homeTeam:{home:n.under25,total:s.under25},awayTeam:{total:i.under25,home:r.under25},colorType:"neutral"},{label:"Scored at least twice",homeTeam:{home:n.scoredTwice,total:s.scoredTwice},awayTeam:{total:i.scoredTwice,home:r.scoredTwice},colorType:"positive"},{label:"Conceded at least twice",homeTeam:{home:n.concededTwice,total:s.concededTwice},awayTeam:{total:i.concededTwice,home:r.concededTwice},colorType:"negative"}]}function J(e,t){const o=new Map;return e.forEach(n=>{if(n.status?.type!=="FINISHED")return;const s=ae(n,t);if(!s)return;const r=s.isHome?n.competitorTwo.id:n.competitorOne.id,i=s.isHome?n.competitorTwo:n.competitorOne,a=o.get(r)||{opponentId:r,opponentName:i.name,opponentLogo:i.assets?.logo};s.isHome?a.homeResult=s.result:a.awayResult=s.result,o.set(r,a)}),o}function Ut(e,t,o,n,s,r,i){const a=J(e,t),d=J(e,o),l=new Set([...a.keys(),...d.keys(),t,o]),m=[];return l.forEach(c=>{const g=a.get(c),p=d.get(c);if(!g&&!p&&c!==t&&c!==o)return;let y,T;c===t?(y=n,T=r):c===o?(y=s,T=i):(y=g?.opponentName||p?.opponentName||"",T=g?.opponentLogo||p?.opponentLogo),m.push({opponentId:c,opponentName:y,opponentLogo:T,homeTeamHome:g?.homeResult,homeTeamAway:g?.awayResult,awayTeamHome:p?.homeResult,awayTeamAway:p?.awayResult,isHomeTeamRow:c===t,isAwayTeamRow:c===o})}),m.sort((c,g)=>c.isHomeTeamRow?-1:g.isHomeTeamRow?1:c.isAwayTeamRow?-1:g.isAwayTeamRow?1:c.opponentName.localeCompare(g.opponentName))}exports.addProviderRef=u.addProviderRef;exports.getBatchMatchOdds=u.getBatchMatchOdds;exports.getConfig=u.getConfig;exports.getFootballCompetition=u.getFootballCompetition;exports.getFootballMatch=u.getFootballMatch;exports.getFootballMatchCommentary=u.getFootballMatchCommentary;exports.getFootballMatchEvents=u.getFootballMatchEvents;exports.getFootballMatchLineups=u.getFootballMatchLineups;exports.getFootballMatchOdds=u.getFootballMatchOdds;exports.getFootballMatchStatistics=u.getFootballMatchStatistics;exports.getFootballMatches=u.getFootballMatches;exports.getFootballPlayerSeasonStatistics=u.getFootballPlayerSeasonStatistics;exports.getFootballSeasonDetails=u.getFootballSeasonDetails;exports.getFootballStandings=u.getFootballStandings;exports.getFootballTeam=u.getFootballTeam;exports.getFootballTeamSquad=u.getFootballTeamSquad;exports.getLeaderboardMatches=u.getLeaderboardMatches;exports.getLeaderboardTeamMatches=u.getLeaderboardTeamMatches;exports.getLeaderboardTemplate=u.getLeaderboardTemplate;exports.getProviderRefId=u.getProviderRefId;exports.isConfigured=u.isConfigured;exports.setConfig=u.setConfig;exports.toProviderRefArray=u.toProviderRefArray;exports.GOAL_EVENT_TYPES=ne;exports.aggregatePlayerStatisticsFromMatches=N;exports.analyzeMatch=re;exports.calcAverage=H;exports.calcPercentage=A;exports.calculateH2HStats=bt;exports.calculateStreak=C;exports.formatAsAverage=At;exports.formatPossessionPercentage=Ft;exports.formatStatValue=Ct;exports.formatWithAverage=_t;exports.getActiveSeason=st;exports.getAllPlayerStatisticsFromMatches=oe;exports.getFansUnitedFootballCompetition=$e;exports.getFansUnitedFootballCompetitions=He;exports.getFansUnitedFootballMatch=Xe;exports.getFansUnitedFootballMatches=Ze;exports.getFansUnitedFootballPlayer=Je;exports.getFansUnitedFootballPlayers=Qe;exports.getFansUnitedFootballSearch=ot;exports.getFansUnitedFootballTeam=je;exports.getMatchResult=ae;exports.getMostCardedPlayersFromMatches=ee;exports.getOpponentScore=Pt;exports.getRecentH2HMeetings=Gt;exports.getTeamFinishedMatches=at;exports.getTeamGoalStats=Ht;exports.getTeamHomeAwayStats=Nt;exports.getTeamMostDecorated=ft;exports.getTeamNextMatch=nt;exports.getTeamOverUnderStats=Lt;exports.getTeamPreviousMatch=rt;exports.getTeamResultsTable=ct;exports.getTeamScore=Rt;exports.getTeamSeasonStatistics=Ge;exports.getTeamStreaks=k;exports.getTeamStreaksComparison=kt;exports.getTeamTopAppearances=ut;exports.getTeamTopAssisters=dt;exports.getTeamTopCleanSheets=gt;exports.getTeamTopMinutesPlayed=mt;exports.getTeamTopScorers=lt;exports.getTeamUpcomingMatches=it;exports.getTeamsCommonOpponents=Ut;exports.getTopAssistersFromMatches=w;exports.getTopGoalContributorsFromMatches=te;exports.getTopScorersFromMatches=Z;exports.isMatchFinished=Ot;exports.isTeamAway=ie;exports.isTeamHome=q;exports.isTeamInMatch=Mt;exports.search=Re;exports.searchFootball=ye;exports.streakFilters=v;exports.useAllPlayerStatisticsFromMatches=vt;exports.useMostCardedPlayersFromMatches=ht;exports.usePlayerStatistics=St;exports.usePlayerStatisticsMap=se;exports.useTopAssistersFromMatches=yt;exports.useTopGoalContributorsFromMatches=Tt;exports.useTopScorersFromMatches=pt;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("./matches-DKjnuuq_.cjs"),E=require("react");function de(e){return{entityType:"tournament",id:e.id.toString(),name:e.name,slug:e.slug,gender:e.gender,type:e.type,region:e.region,country:{id:e.country.id.toString(),name:e.country.name,code:void 0,flag:e.country.url_flag??void 0,providerRef:u.toProviderRefArray(e.country.uuid)},assets:e.url_logo?{logo:e.url_logo}:void 0,providerRef:u.toProviderRefArray(e.uuid)}}function ue(e){return{entityType:"player",id:e.id.toString(),name:e.name,slug:e.slug,position:e.position,gender:e.gender,birthdate:e.birthdate,country:{id:e.country.id.toString(),name:e.country.name,code:void 0,flag:e.country.url_flag??void 0,providerRef:u.toProviderRefArray(e.country.uuid)},assets:e.url_thumb?{photo:e.url_thumb}:void 0,providerRef:u.toProviderRefArray(e.uuid)}}function me(e){return{entityType:"team",id:e.id.toString(),name:e.name,slug:e.slug,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,type:e.type==="national"?"national":"club",gender:e.gender,country:{id:e.country.id.toString(),name:e.country.name,code:void 0,flag:e.country.url_flag??void 0,providerRef:u.toProviderRefArray(e.country.uuid)},assets:e.url_logo?{logo:e.url_logo}:void 0,providerRef:u.toProviderRefArray(e.uuid)}}function ge(e){return{entityType:"president",id:e.id.toString(),name:e.name,slug:e.slug,birthdate:e.birthdate??void 0,country:{id:e.country.id.toString(),name:e.country.name,code:void 0,flag:e.country.url_flag??void 0,providerRef:u.toProviderRefArray(e.country.uuid)},assets:e.url_thumb?{photo:e.url_thumb}:void 0,providerRef:u.toProviderRefArray(e.uuid)}}function fe(e){return{entityType:"venue",id:e.id.toString(),name:e.name,slug:e.slug,city:{id:e.city.id.toString(),name:e.city.name,country:{id:e.city.country.id.toString(),name:e.city.country.name,code:void 0,flag:e.city.country.url_flag??void 0,providerRef:u.toProviderRefArray(e.city.country.uuid)},providerRef:u.toProviderRefArray(e.city.uuid)},country:{id:e.country.id.toString(),name:e.country.name,code:void 0,flag:e.country.url_flag??void 0,providerRef:u.toProviderRefArray(e.country.uuid)},profile:{latitude:e.profile.lat,longitude:e.profile.lng,capacity:e.profile.capacity},assets:e.url_thumb?{image:e.url_thumb}:void 0,providerRef:u.toProviderRefArray(e.uuid)}}function pe(e){return{entityType:"coach",id:e.id.toString(),name:e.name,slug:e.slug,birthdate:e.birthdate??void 0,country:{id:e.country.id.toString(),name:e.country.name,code:void 0,flag:e.country.url_flag??void 0,providerRef:u.toProviderRefArray(e.country.uuid)},assets:e.url_thumb?{photo:e.url_thumb}:void 0,providerRef:u.toProviderRefArray(e.uuid)}}function ye(e){switch(e.entity_type){case"tournament":return de(e);case"player":return ue(e);case"team":return me(e);case"president":return ge(e);case"venue":return fe(e);case"coach":return pe(e);default:throw new Error(`Unknown entity type: ${e.entity_type}`)}}async function he(e,t){if(!e.query||e.query.trim()==="")return{results:[],query:e.query||""};const o=t||u.getConfig(),{sportal365Sports:s}=o,n=e.entityTypes&&e.entityTypes.length>0?e.entityTypes:["tournament","player","team","president","venue","coach"],r=await u.footballHttp.get({path:"/search",params:{query:e.query.trim(),entity_type:n.join(","),language_code:e.languageCode??s?.languageCode??"en"},headers:{"Accept-Language":e.languageCode??s?.languageCode??"en"},next:e.next,config:o});return!r||r.length===0?{results:[],query:e.query}:{results:r.map(ye),query:e.query}}const Te=u.createHttpClient(u.SPORTAL365_SPORTS_SEARCH_DOMAIN);function M(e){return{language:e.language,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0}}function O(e){if(!(!e||!e.url))return{url:e.url}}function D(e){if(e)return{id:e.id,legacyId:e.legacy_id??void 0,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,translations:e.translations.map(M),displayAsset:O(e.display_asset),slug:e.slug,providerRef:e.id}}function V(e){return{entityType:"team",id:e.id,legacyId:e.legacy_id??void 0,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,translations:e.translations.map(M),displayAsset:O(e.display_asset),slug:e.slug,tagScore:e.tag_score??void 0,sport:e.sport,country:D(e.country),gender:e.gender,competitionIds:e.competition_ids,type:e.type,national:e.national,undecided:e.undecided,providerRef:e.id}}function Q(e){return{entityType:"city",id:e.id,legacyId:e.legacy_id??void 0,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,translations:e.translations.map(M),displayAsset:O(e.display_asset),slug:e.slug,tagScore:e.tag_score??void 0,sport:e.sport,country:D(e.country),providerRef:e.id}}function ve(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:D(e.country),gender:e.gender,providerRef:e.id}}function Se(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:D(e.country),gender:e.gender,birthdate:e.birthdate??void 0,position:e.position??void 0,providerRef:e.id}}function Ce(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:D(e.country),gender:e.gender,birthdate:e.birthdate??void 0,providerRef:e.id}}function _e(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:D(e.country),gender:e.gender,birthdate:e.birthdate??void 0,providerRef:e.id}}function Ae(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:D(e.country),city:e.city?Q(e.city):void 0,providerRef:e.id}}function Fe(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:D(e.country),gender:e.gender,type:e.type??void 0,region:e.region??void 0,providerRef:e.id}}function Me(e){return{entityType:"match",id:e.id,legacyId:e.legacy_id??void 0,name:e.name,shortName:e.short_name??void 0,threeLetterCode:e.three_letter_code??void 0,translations:e.translations.map(M),displayAsset:O(e.display_asset),slug:e.slug,tagScore:e.tag_score??void 0,sport:e.sport,competitionId:e.competition_id??void 0,startTime:e.start_time??void 0,homeTeam:e.home_team?V(e.home_team):void 0,awayTeam:e.away_team?V(e.away_team):void 0,providerRef:e.id}}function Oe(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 Re(e){switch(e.entity_type){case"team":return V(e);case"city":return Q(e);case"horse":return ve(e);case"player":return Se(e);case"coach":return Ce(e);case"referee":return _e(e);case"venue":return Ae(e);case"tournament":case"competition":return Fe(e);case"match":return Me(e);case"country":return Oe(e);default:{const t=e;throw new Error(`Unknown entity type: ${t.entity_type}`)}}}async function Pe(e={},t){const o=t??u.getConfig(),s={};e.name&&(s.name=e.name),e.entityTypes&&e.entityTypes.length>0&&(s.entity_type=e.entityTypes.join(",")),e.sports&&e.sports.length>0&&(s.sport=e.sports.join(",")),e.eventStartTime&&(s.event_start_time=e.eventStartTime),e.ids&&e.ids.length>0&&(s.ids=e.ids.join(",")),e.competitionIds&&e.competitionIds.length>0&&(s.competition_ids=e.competitionIds.join(",")),e.domain&&(s.domain=e.domain),e.inputLanguage&&(s.input_language=e.inputLanguage),e.translationLanguage&&(s.translation_language=e.translationLanguage),e.limit!==void 0&&(s.limit=e.limit.toString()),e.offset!==void 0&&(s.offset=e.offset.toString());const n=await Te.get({path:"/suggest",params:s,next:e.next,config:o});return!n.results||n.results.length===0?{results:[],query:e.name}:{results:n.results.map(Re),query:e.name}}const be=u.createHttpClient(u.SPORTAL365_STATISTICS_DOMAIN);function Ge(e,t){return{teamId:e.id,teamName:e.name,seasonId:t,statistics:e.statistics.map(o=>({key:o.id,value:o.value,label:o.name}))}}async function De(e,t){const o=t||u.getConfig(),s=e.next??{revalidate:600},n=await be.get({path:"/statistics/aggregate",params:{participant_ids:e.teamId,season_ids:e.seasonId,participant_type:"TEAM"},next:s,config:o});if(!n.data||n.data.length===0)throw new Error(`No statistics found for team ${e.teamId} in season ${e.seasonId}`);return Ge(n.data[0],e.seasonId)}function Ee(e){const t=e.replace(/\/$/,"");function o(s){return`${t}${s}`}return{async get(s){const n=s.config||u.getConfig(),{fansUnited:r}=n;if(!r)throw new Error("Fans United configuration is missing. Add 'fansUnited' with 'apiKey' and 'clientId' to your config.");if(!r.apiKey||!r.clientId)throw new Error("Fans United configuration requires both 'apiKey' and 'clientId'");const i=new URL(o(s.path));if(i.searchParams.set("key",r.apiKey),i.searchParams.set("client_id",r.clientId),s.params)for(const[m,c]of Object.entries(s.params))c!==void 0&&(Array.isArray(c)?c.length>0&&i.searchParams.set(m,c.join(",")):i.searchParams.set(m,c));const a=3e4,d=new URL(i.toString());d.searchParams.delete("key"),d.searchParams.delete("client_id"),console.log("🔗 FansUnited API URL:",d.toString());const l=await fetch(i.toString(),{method:"GET",headers:{Accept:"application/json","Content-Type":"application/json",...s.headers},signal:AbortSignal.timeout(a),...s.next&&{next:s.next}});if(!l.ok){let m=`Fans United API error: ${l.status} ${l.statusText}`;try{const c=await l.text();c&&(m+=` - ${c}`)}catch(c){console.error("[Fans United HTTP] Failed to read error response body:",{error:c instanceof Error?c.message:String(c),status:l.status,statusText:l.statusText})}throw new Error(m)}return l.json()}}}const Ie="https://football.fansunitedapi.com",G=Ee(Ie);function Ne(e){return{id:String(e.id),name:e.name,active:e.active,providerRef:[{provider:"fansunited",id:String(e.id)}]}}function Le(e){const t={id:String(e.id),name:e.name,shortName:e.short_name,slug:e.slug,type:e.type||"LEAGUE",region:e.region,gender:e.gender,providerRef:[{provider:"fansunited",id:String(e.id)}]};return e.country&&(t.country={id:String(e.country.id),name:e.country.name,code:e.country.code,flag:e.country.assets?.flag,providerRef:[{provider:"fansunited",id:String(e.country.id)}]}),e.assets?.logo&&(t.assets={logo:e.assets.logo}),e.seasons&&e.seasons.length>0&&(t.seasons=e.seasons.map(Ne)),e.current_season&&(t.season={id:String(e.current_season.id),name:e.current_season.name,status:e.current_season.active?"ACTIVE":"INACTIVE"}),t}function He(e){return e.map(Le)}async function ke(e,t){const o={};e?.lang?o.lang=e.lang:o.lang="EN",e?.sortField&&(o.sort_field=e.sortField),e?.sortOrder&&(o.sort_order=e.sortOrder),e?.page!==void 0&&(o.page=String(e.page)),e?.perPage!==void 0&&(o.per_page=String(e.perPage)),e?.countryId!==void 0&&(o.country_id=String(e.countryId)),e?.active!==void 0&&(o.active=e.active?"1":"0");const s=await G.get({path:"/v1/competitions",params:o,config:t,next:e?.next}),n=s.data.map(l=>l.id),r=new Set(n);n.length!==r.size&&console.warn("⚠️ API returned duplicate competitions!");const i=He(s.data),a=new Set,d=i.filter(l=>a.has(l.id)?!1:(a.add(l.id),!0));return i.length!==d.length&&console.warn(`Removed ${i.length-d.length} duplicate competitions`),d}function Ue(e){return{id:e.id,name:e.name,code:e.country_code,assets:e.assets?.flag?{flag:e.assets.flag}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function Be(e){return{id:e.id,name:e.name,type:e.type?.toUpperCase()||"LEAGUE",gender:e.gender?.toUpperCase(),country:e.country?Ue(e.country):void 0,assets:e.assets?.logo?{logo:e.assets.logo}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function $e(e){return Be(e.data)}async function xe(e,t,o){const s=o||u.getConfig(),n={};t?.lang&&(n.lang=t.lang);const r=await G.get({path:`/v1/competitions/${e}`,params:n,next:t?.next,config:s});return $e(r)}function We(e){return{id:e.id,name:e.name,code:e.country_code,flag:e.assets?.flag,providerRef:[{provider:"fansunited",id:e.id}]}}function X(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?We(e.country):void 0,assets:e.assets?.logo?{logo:e.assets.logo}:void 0,metadata:e.colors?{shirtColors:e.colors.primary?[{type:"home",colorCode:e.colors.primary}]:void 0}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function qe(e){return X(e.data)}function je(e){return e.data.map(X)}async function Ve(e,t,o){const s=o||u.getConfig(),n={};t?.lang&&(n.lang=t.lang);const r=await G.get({path:`/v1/teams/${e}`,params:n,next:t?.next,config:s});return qe(r)}async function Ye(e,t){const o=t||u.getConfig(),s={};e?.lang&&(s.lang=e.lang),e?.teamIds&&(s.team_ids=e.teamIds),e?.countryId&&(s.country_id=e.countryId),e?.name&&(s.name=e.name),e?.scope&&(s.scope=e.scope),e?.national!==void 0&&(s.national=String(e.national)),e?.gender&&(s.gender=e.gender),e?.limit!==void 0&&(s.limit=String(e.limit)),e?.page!==void 0&&(s.page=String(e.page)),e?.sortField&&(s.sort_field=e.sortField),e?.sortOrder&&(s.sort_order=e.sortOrder);const n=await G.get({path:"/v1/teams",params:s,next:e?.next,config:o});return je(n)}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 Ke(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(Ke),providerRef:[{provider:"fansunited",id:e.id}]}}function Je(e){return Z(e.data)}function Qe(e){return e.data.map(Z)}async function Xe(e,t,o){const s=o||u.getConfig(),n={};t?.lang&&(n.lang=t.lang);const r=await G.get({path:`/v1/players/${e}`,params:n,next:t?.next,config:s});return Je(r)}async function Ze(e,t){const o=t||u.getConfig(),s={};e?.lang&&(s.lang=e.lang),e?.playerIds&&(s.player_ids=e.playerIds),e?.countryId&&(s.country_id=e.countryId),e?.name&&(s.name=e.name),e?.scope&&(s.scope=e.scope),e?.limit!==void 0&&(s.limit=String(e.limit)),e?.page!==void 0&&(s.page=String(e.page)),e?.sortField&&(s.sort_field=e.sortField),e?.sortOrder&&(s.sort_order=e.sortOrder);const n=await G.get({path:"/v1/players",params:s,next:e?.next,config:o});return Qe(n)}async function we(e,t,o){const s=o||u.getConfig(),n={};t?.lang&&(n.lang=t.lang);const r=await G.get({path:`/v1/matches/${e}`,params:n,next:t?.next,config:s});return u.transformMatch(r)}async function et(e,t){const o=t||u.getConfig(),s={};e?.lang&&(s.lang=e.lang),e?.competitions&&(s.competitions=e.competitions),e?.countries&&(s.countries=e.countries),e?.fromDate&&(s.from_date=e.fromDate),e?.toDate&&(s.to_date=e.toDate),e?.matches&&(s.matches=e.matches),e?.teams&&(s.teams=e.teams),e?.status&&(s.status=e.status),e?.limit!==void 0&&(s.limit=String(e.limit)),e?.page!==void 0&&(s.page=String(e.page)),e?.sortField&&(s.sort_field=e.sortField),e?.sortOrder&&(s.sort_order=e.sortOrder),e?.showDeleted!==void 0&&(s.show_deleted=e.showDeleted?"true":"false");const n=await G.get({path:"/v1/matches",params:s,next:e?.next,config:o});return u.transformMatches(n)}function z(e){return{id:e.id,name:e.name,code:e.country_code,flag:e.assets?.flag||void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function tt(e){return{id:e.id,name:e.name,shortName:e.short_name||void 0,type:e.type||"LEAGUE",region:e.region,gender:e.gender?.toUpperCase(),country:e.country?z(e.country):void 0,assets:e.assets?.logo?{logo:e.assets.logo}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function ot(e){return{type:"player",id:e.id,name:e.name,position:e.position||void 0,gender:e.gender?.toUpperCase(),birthdate:e.birth_date||void 0,country:e.country?z(e.country):void 0,assets:e.assets?.headshot?{photo:e.assets.headshot}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function st(e){return{type:e.national?"national":"club",id:e.id,name:e.name,shortName:e.short_name||void 0,threeLetterCode:e.code||void 0,gender:e.gender?.toUpperCase(),country:e.country?z(e.country):void 0,assets:e.assets?.logo?{logo:e.assets.logo}:void 0,providerRef:[{provider:"fansunited",id:e.id}]}}function j(e){switch(e.entity_type){case"competition":{const t=tt(e);return{source:"FOOTBALL",entityType:"competition",entityId:e.id,entityData:t}}case"player":{const t=ot(e);return{source:"FOOTBALL",entityType:"player",entityId:e.id,entityData:t}}case"team":{const t=st(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 nt(e,t){if(!e.query||e.query.trim()==="")return[];const o=t||u.getConfig(),s={q:e.query.trim()},r=(e.entityTypes&&e.entityTypes.length>0?e.entityTypes:["competition","team","player"]).map(d=>{switch(d){case"team":return"teams";case"player":return"players";case"competition":return"competitions";default:return d}});s.entities=r.join(","),e.lang&&(s.lang=e.lang),e.limit&&(s.limit=String(e.limit));const i=await G.get({path:"/v1/search",params:s,next:e.next,config:o}),a=[];return i.data&&(i.data.competitions&&i.data.competitions.forEach(d=>{const l=j({...d,entity_type:"competition"});l&&a.push(l)}),i.data.teams&&i.data.teams.forEach(d=>{const l=j({...d,entity_type:"team"});l&&a.push(l)}),i.data.players&&i.data.players.forEach(d=>{const l=j({...d,entity_type:"player"});l&&a.push(l)})),a}function rt(e){return!e.seasons||e.seasons.length===0?void 0:e.seasons.find(o=>o.active)??e.seasons[0]}function it(e,t){const o=new Date,s=t.filter(n=>{const r=n.competitorOne.id===e||n.competitorTwo.id===e,i=n.status.type==="NOT_STARTED",a=new Date(n.timing.kickoffTime)>=o;return r&&i&&a});return s.sort((n,r)=>new Date(n.timing.kickoffTime).getTime()-new Date(r.timing.kickoffTime).getTime()),s[0]}function at(e,t){const o=new Date,s=t.filter(n=>{const r=n.competitorOne.id===e||n.competitorTwo.id===e,i=n.status.type==="FINISHED",a=new Date(n.timing.kickoffTime)<=o;return r&&i&&a});return s.sort((n,r)=>new Date(r.timing.kickoffTime).getTime()-new Date(n.timing.kickoffTime).getTime()),s[0]}function ct(e,t){const o=new Date;return t.filter(n=>{const r=n.competitorOne.id===e||n.competitorTwo.id===e,i=n.status.type==="NOT_STARTED"||n.status.type==="LIVE",a=new Date(n.timing.kickoffTime)>=o||n.status.type==="LIVE";return r&&i&&a}).sort((n,r)=>new Date(n.timing.kickoffTime).getTime()-new Date(r.timing.kickoffTime).getTime())}function lt(e,t){const o=new Date;return t.filter(n=>{const r=n.competitorOne.id===e||n.competitorTwo.id===e,i=n.status.type==="FINISHED",a=new Date(n.timing.kickoffTime)<=o;return r&&i&&a}).sort((n,r)=>new Date(r.timing.kickoffTime).getTime()-new Date(n.timing.kickoffTime).getTime())}function dt(e,t,o){const s=o.filter(i=>i.status.type==="FINISHED"),n=o.filter(i=>i.status.type==="NOT_STARTED"||i.status.type==="POSTPONED"),r=t.entries.map(i=>{const a=i.competitor.id,d=s.filter(g=>g.competitorOne.id===e&&g.competitorTwo.id===a||g.competitorOne.id===a&&g.competitorTwo.id===e),l=n.filter(g=>g.competitorOne.id===e&&g.competitorTwo.id===a||g.competitorOne.id===a&&g.competitorTwo.id===e);let m,c;return d.forEach(g=>{const p=g.competitorOne.id===e,y=parseInt(g.score?.competitorOne??"0"),T=parseInt(g.score?.competitorTwo??"0"),R=p?y:T,_=p?T:y;let F;R>_?F="W":R===_?F="D":F="L";const P={result:F,score:`${y} - ${T}`,date:g.timing.kickoffTime,matchId:g.id,isUpcoming:!1};p?m=P:c=P}),l.forEach(g=>{const p=g.competitorOne.id===e;p&&!m?m={date:g.timing.kickoffTime,matchId:g.id,isUpcoming:!0}:!p&&!c&&(c={date:g.timing.kickoffTime,matchId:g.id,isUpcoming:!0})}),{rank:i.rank,teamId:i.competitor.id,teamName:i.competitor.name,teamShortName:i.competitor.shortName,teamLogo:i.competitor.logo,gamesPlayed:i.stats.played??0,points:i.stats.points??0,homeResult:m,awayResult:c}});return{teamId:e,rows:r}}function ut(e,t=10){return e.players.filter(o=>(o.seasonStatistics?.goals??0)>0).sort((o,s)=>{const n=o.seasonStatistics?.goals??0,r=s.seasonStatistics?.goals??0;if(r!==n)return r-n;const i=o.seasonStatistics?.assists??0;return(s.seasonStatistics?.assists??0)-i}).slice(0,t)}function mt(e,t=10){return e.players.filter(o=>(o.seasonStatistics?.assists??0)>0).sort((o,s)=>{const n=o.seasonStatistics?.assists??0,r=s.seasonStatistics?.assists??0;if(r!==n)return r-n;const i=o.seasonStatistics?.goals??0;return(s.seasonStatistics?.goals??0)-i}).slice(0,t)}function gt(e,t=10){return e.players.filter(o=>(o.seasonStatistics?.appearances??0)>0).sort((o,s)=>{const n=o.seasonStatistics?.appearances??0,r=s.seasonStatistics?.appearances??0;if(r!==n)return r-n;const i=o.seasonStatistics?.minutes??0;return(s.seasonStatistics?.minutes??0)-i}).slice(0,t)}function ft(e,t=10){return e.players.filter(o=>(o.seasonStatistics?.minutes??0)>0).sort((o,s)=>{const n=o.seasonStatistics?.minutes??0,r=s.seasonStatistics?.minutes??0;if(r!==n)return r-n;const i=o.seasonStatistics?.appearances??0;return(s.seasonStatistics?.appearances??0)-i}).slice(0,t)}function pt(e,t=10){return e.players.filter(o=>(o.seasonStatistics?.cleansheets??0)>0).sort((o,s)=>{const n=o.seasonStatistics?.cleansheets??0,r=s.seasonStatistics?.cleansheets??0;if(r!==n)return r-n;const i=o.seasonStatistics?.appearances??0;return(s.seasonStatistics?.appearances??0)-i}).slice(0,t)}function yt(e,t=10){return e.players.filter(o=>{const s=o.seasonStatistics?.yellowCards??0,n=o.seasonStatistics?.redCards??0;return s+n>0}).sort((o,s)=>{const n=o.seasonStatistics?.yellowCards??0,r=o.seasonStatistics?.redCards??0,i=s.seasonStatistics?.yellowCards??0,a=s.seasonStatistics?.redCards??0,d=n+r*3,l=i+a*3;return l!==d?l-d:a!==r?a-r:i-n}).slice(0,t)}function I(e){const t=new Map,o=new Map;return e.forEach(s=>{!s.mainEvents||s.mainEvents.length===0||s.mainEvents.forEach(n=>{if(n.primaryPlayer){const r=n.primaryPlayer.id;t.has(r)||t.set(r,{playerId:n.primaryPlayer.id,seasonId:"",teamId:"",goals:0,assists:0,yellowCards:0,redCards:0,appearances:0});const i=t.get(r);o.has(r)||o.set(r,new Set),o.get(r).add(s.id),(n.type==="GOAL"||n.type==="PENALTY_GOAL")&&(i.goals=(i.goals??0)+1),n.type==="YELLOW_CARD"&&(i.yellowCards=(i.yellowCards??0)+1),(n.type==="RED_CARD"||n.type==="YELLOW_RED_CARD")&&(i.redCards=(i.redCards??0)+1)}if(n.secondaryPlayer&&(n.type==="GOAL"||n.type==="PENALTY_GOAL")){const r=n.secondaryPlayer.id;t.has(r)||t.set(r,{playerId:n.secondaryPlayer.id,seasonId:"",teamId:"",goals:0,assists:0,yellowCards:0,redCards:0,appearances:0});const i=t.get(r);i.assists=(i.assists??0)+1,o.has(r)||o.set(r,new Set),o.get(r).add(s.id)}})}),o.forEach((s,n)=>{const r=t.get(n);r&&r.appearances!==void 0&&(r.appearances=s.size)}),t}function U(e){return Array.from(e.values()).map(t=>({...t,totalCards:(t.yellowCards??0)+(t.redCards??0)}))}function w(e,t=10){const o=I(e);return U(o).filter(n=>(n.goals??0)>0).sort((n,r)=>{const i=n.goals??0,a=r.goals??0;if(a!==i)return a-i;const d=n.assists??0;return(r.assists??0)-d}).slice(0,t)}function ee(e,t=10){const o=I(e);return U(o).filter(n=>(n.assists??0)>0).sort((n,r)=>{const i=n.assists??0,a=r.assists??0;if(a!==i)return a-i;const d=n.goals??0;return(r.goals??0)-d}).slice(0,t)}function te(e,t=10){const o=I(e);return U(o).filter(n=>(n.totalCards??0)>0).sort((n,r)=>{const i=(n.yellowCards??0)+(n.redCards??0)*3,a=(r.yellowCards??0)+(r.redCards??0)*3;if(a!==i)return a-i;const d=n.redCards??0,l=r.redCards??0;if(l!==d)return l-d;const m=n.yellowCards??0;return(r.yellowCards??0)-m}).slice(0,t)}function oe(e,t=10){const o=I(e);return U(o).filter(n=>(n.goals??0)+(n.assists??0)>0).sort((n,r)=>{const i=(n.goals??0)+(n.assists??0),a=(r.goals??0)+(r.assists??0);if(a!==i)return a-i;const d=n.goals??0,l=r.goals??0;if(l!==d)return l-d;const m=n.assists??0;return(r.assists??0)-m}).slice(0,t)}function se(e){const t=I(e);return U(t).sort((s,n)=>{const r=s.appearances??0,i=n.appearances??0;if(i!==r)return i-r;const a=(s.goals??0)+(s.assists??0);return(n.goals??0)+(n.assists??0)-a})}function ht(e,t=10){return E.useMemo(()=>w(e,t),[e,t])}function Tt(e,t=10){return E.useMemo(()=>ee(e,t),[e,t])}function vt(e,t=10){return E.useMemo(()=>te(e,t),[e,t])}function St(e,t=10){return E.useMemo(()=>oe(e,t),[e,t])}function Ct(e){return E.useMemo(()=>se(e),[e])}function ne(e){return E.useMemo(()=>I(e),[e])}function _t(e,t){const o=ne(e);return E.useMemo(()=>o.get(t),[o,t])}const re=["GOAL","PENALTY_GOAL","OWN_GOAL"];function A(e,t){return t>0?e/t*100:0}function H(e,t){return t>0?e/t:0}function At(e,t=!1,o=2){return t?`${Math.round(e)}%`:Number.isInteger(e)?e.toString():e.toFixed(o)}function Ft(e,t){const o=typeof e=="string"?parseFloat(e):e;if(isNaN(o)||t===0)return"0";const s=(o/t).toFixed(1);return`${o} (${s} avg)`}function Mt(e,t){const o=typeof e=="string"?parseFloat(e):e;return isNaN(o)||t===0?"0.0":(o/t).toFixed(1)}function Ot(e){const t=parseFloat(e);return isNaN(t)?"0%":`${Math.round(t)}%`}function ie(e,t,o){if(e.status?.type!=="FINISHED"||!e.score)return null;const s=parseInt(e.score.competitorOne||"0"),n=parseInt(e.score.competitorTwo||"0"),r=o?s:n,i=o?n:s;let a=null,d=null;const l=e.score.breakdown?.halfTime;if(l){const p=parseInt(l.competitorOne||"0"),y=parseInt(l.competitorTwo||"0");a=o?p:y,d=o?y:p}const m=e.statistics;let c=null,g=null;if(m){const p=m.find?.(y=>y.type==="CORNERS");p&&(c=o?p.competitorOne:p.competitorTwo,g=o?p.competitorTwo:p.competitorOne)}return{goalsFor:r,goalsAgainst:i,halfTimeGoalsFor:a,halfTimeGoalsAgainst:d,cornersFor:c,cornersAgainst:g,isWin:r>i,isDraw:r===i,isLoss:r<i}}function q(e,t){return e.competitorOne.id===t}function ae(e,t){return e.competitorTwo.id===t}function Rt(e,t){return q(e,t)||ae(e,t)}function Pt(e){return e.status?.type==="FINISHED"}function bt(e,t){const o=q(e,t);return parseInt(o?e.score?.competitorOne||"0":e.score?.competitorTwo||"0")}function Gt(e,t){const o=q(e,t);return parseInt(o?e.score?.competitorTwo||"0":e.score?.competitorOne||"0")}function Dt(e,t,o){const s=e.filter(m=>{if(m.status?.type!=="FINISHED"||!m.score)return!1;const c=m.competitorOne.id===t||m.competitorTwo.id===t,g=m.competitorOne.id===o||m.competitorTwo.id===o;return c&&g});let n=0,r=0,i=0,a=0,d=0;s.forEach(m=>{const c=parseInt(m.score?.competitorOne||"0"),g=parseInt(m.score?.competitorTwo||"0"),p=m.competitorOne.id===t,y=p?c:g,T=p?g:c;a+=y,d+=T,y>T?n++:T>y?r++:i++});const l=s.length;return{totalMatches:l,homeTeamWins:n,awayTeamWins:r,draws:i,homeTeamGoals:a,awayTeamGoals:d,homeTeamWinPercentage:l>0?n/l*100:0,awayTeamWinPercentage:l>0?r/l*100:0,drawPercentage:l>0?i/l*100:0,homeTeamAvgGoals:l>0?a/l:0,awayTeamAvgGoals:l>0?d/l:0}}function Et(e,t,o,s=5){return e.filter(r=>{if(r.status?.type!=="FINISHED"||!r.score)return!1;const i=r.competitorOne.id===t||r.competitorTwo.id===t,a=r.competitorOne.id===o||r.competitorTwo.id===o;return i&&a}).sort((r,i)=>new Date(i.timing.kickoffTime).getTime()-new Date(r.timing.kickoffTime).getTime()).slice(0,s).map(r=>{const i=parseInt(r.score?.competitorOne||"0"),a=parseInt(r.score?.competitorTwo||"0"),d=r.competitorOne.id===t,l=d?i:a,m=d?a:i;let c;return l>m?c="home":m>l?c="away":c="draw",{id:r.id,date:new Date(r.timing.kickoffTime).toLocaleDateString("en-GB",{day:"numeric",month:"short",year:"numeric"}),homeTeamName:r.competitorOne.name,awayTeamName:r.competitorTwo.name,homeTeamLogo:r.competitorOne.assets?.logo,awayTeamLogo:r.competitorTwo.assets?.logo,homeScore:i,awayScore:a,venue:r.venue?.name,winner:c}})}function It(e,t,o){return e.filter(s=>{const n=s.competitorOne.id===t,r=s.competitorTwo.id===t;return!n&&!r?!1:o==="home"?n:r}).map(s=>{const n=s.competitorOne.id===t;return ie(s,t,n)}).filter(s=>s!==null)}function K(e,t,o,s){let n=0;for(const r of e){const i=r.competitorOne.id===t,a=r.competitorTwo.id===t;if(!i&&!a||o==="home"&&!i||o==="away"&&!a||r.status?.type!=="FINISHED")continue;const d=r.mainEvents;if(!d||!Array.isArray(d))continue;const l=d.filter(y=>y.type&&re.includes(y.type)).sort((y,T)=>{const R=y.minute??0,_=T.minute??0;return R!==_?R-_:(y.injuryMinute??0)-(T.injuryMinute??0)});if(l.length===0)continue;const m=l[0],c=i?"ONE":"TWO",g=m.type==="OWN_GOAL";let p;g?p=m.competitorPosition!==c:p=m.competitorPosition===c,(s==="scored"&&p||s==="conceded"&&!p)&&n++}return n}function Nt(e,t,o){let s=0;for(const n of e){const r=n.competitorOne.id===t,i=n.competitorTwo.id===t;if(!r&&!i||o==="home"&&!r||o==="away"&&!i||n.status?.type!=="FINISHED")continue;const a=n.mainEvents;a&&Array.isArray(a)&&s++}return s}function Lt(e,t,o){const s=It(e,t,o),n=s.length;if(n===0)return{played:0,goalsForPerMatch:0,cleanSheets:0,wonToNil:0,scoringRate:0,scoredInBothHalves:0,scoredFirst:0,leadingAtHalfTime:0,goalsAgainstPerMatch:0,failedToScore:0,lostToNil:0,concedingRate:0,concededInBothHalves:0,concededFirst:0,losingAtHalfTime:0,avgCornersFor:0,avgCornersAgainst:0};const r=s.reduce((f,S)=>f+S.goalsFor,0),i=s.reduce((f,S)=>f+S.goalsAgainst,0),a=s.filter(f=>f.goalsAgainst===0).length,d=s.filter(f=>f.isWin&&f.goalsAgainst===0).length,l=s.filter(f=>f.goalsFor>0).length,m=s.filter(f=>f.goalsFor===0).length,c=s.filter(f=>f.isLoss&&f.goalsFor===0).length,g=s.filter(f=>f.goalsAgainst>0).length,p=s.filter(f=>f.halfTimeGoalsFor!==null),y=p.length,T=p.filter(f=>{const S=f.halfTimeGoalsFor,L=f.goalsFor-S;return S>0&&L>0}).length,R=K(e,t,o,"scored"),_=Nt(e,t,o),F=p.filter(f=>f.halfTimeGoalsFor>f.halfTimeGoalsAgainst).length,P=p.filter(f=>{const S=f.halfTimeGoalsAgainst,L=f.goalsAgainst-S;return S>0&&L>0}).length,B=K(e,t,o,"conceded"),$=p.filter(f=>f.halfTimeGoalsAgainst>f.halfTimeGoalsFor).length,N=s.filter(f=>f.cornersFor!==null),x=N.reduce((f,S)=>f+(S.cornersFor||0),0),W=N.reduce((f,S)=>f+(S.cornersAgainst||0),0);return{played:n,goalsForPerMatch:H(r,n),cleanSheets:A(a,n),wonToNil:A(d,n),scoringRate:A(l,n),scoredInBothHalves:A(T,y),scoredFirst:A(R,_),leadingAtHalfTime:A(F,y),goalsAgainstPerMatch:H(i,n),failedToScore:A(m,n),lostToNil:A(c,n),concedingRate:A(g,n),concededInBothHalves:A(P,y),concededFirst:A(B,_),losingAtHalfTime:A($,y),avgCornersFor:H(x,N.length),avgCornersAgainst:H(W,N.length)}}function Ht(e,t){return e.filter(o=>o.status?.type!=="FINISHED"?!1:o.competitorOne.id===t||o.competitorTwo.id===t).map(o=>{const s=o.competitorOne.id===t,n=parseInt(o.score?.competitorOne||"0"),r=parseInt(o.score?.competitorTwo||"0"),i=n+r,a=o.periods;let d=null;if(a&&Array.isArray(a)){const l=a.find(m=>m.type==="FIRST_HALF"||m.type==="1ST_HALF");if(l?.score){const m=parseInt(l.score.competitorOne||"0"),c=parseInt(l.score.competitorTwo||"0");d=m+c}}return{totalGoals:i,halfTimeGoals:d,isHome:s}})}function h(e,t){return e.length===0?0:e.filter(s=>s>t).length/e.length*100}function kt(e,t){const o=Ht(e,t),s=o.filter(c=>c.isHome),n=o.filter(c=>!c.isHome),r=o.map(c=>c.totalGoals),i=s.map(c=>c.totalGoals),a=n.map(c=>c.totalGoals),d=o.filter(c=>c.halfTimeGoals!==null).map(c=>c.halfTimeGoals),l=s.filter(c=>c.halfTimeGoals!==null).map(c=>c.halfTimeGoals),m=n.filter(c=>c.halfTimeGoals!==null).map(c=>c.halfTimeGoals);return{over05:{home:h(i,.5),total:h(r,.5),away:h(a,.5)},over15:{home:h(i,1.5),total:h(r,1.5),away:h(a,1.5)},over25:{home:h(i,2.5),total:h(r,2.5),away:h(a,2.5)},over35:{home:h(i,3.5),total:h(r,3.5),away:h(a,3.5)},over45:{home:h(i,4.5),total:h(r,4.5),away:h(a,4.5)},over55:{home:h(i,5.5),total:h(r,5.5),away:h(a,5.5)},over05HT:{home:h(l,.5),total:h(d,.5),away:h(m,.5)},over15HT:{home:h(l,1.5),total:h(d,1.5),away:h(m,1.5)},over25HT:{home:h(l,2.5),total:h(d,2.5),away:h(m,2.5)}}}function ce(e,t){const o=e.competitorOne.id===t,s=e.competitorTwo.id===t;if(!o&&!s||!e.score)return null;const n=parseInt(o?e.score.competitorOne||"0":e.score.competitorTwo||"0"),r=parseInt(o?e.score.competitorTwo||"0":e.score.competitorOne||"0");let i;return n>r?i="W":n<r?i="L":i="D",{result:{score:`${n}:${r}`,result:i,isHome:o},isHome:o}}function Ut(e,t,o,s,n,r){const i=t?.entries.find(b=>b.competitor.id===e),a=o?.entries.find(b=>b.competitor.id===e),d=s?.entries.find(b=>b.competitor.id===e),l=n?.entries.find(b=>b.competitor.id===e),m=r?.entries.find(b=>b.competitor.id===e);if(!i)return null;const c=a?.stats?.goalsFor??0,g=d?.stats?.goalsFor??0,p=i?.stats?.goalsFor??0,y=l?.stats?.goalsAgainst??0,T=m?.stats?.goalsAgainst??0,R=i?.stats?.goalsAgainst??0,_=a?.stats?.played??0,F=d?.stats?.played??0,P=i?.stats?.played??0,B=P>0?p/P:0,$=P>0?R/P:0,N=B+$,x=_>0?c/_:0,W=F>0?g/F:0,f=_>0?y/_:0,S=F>0?T/F:0,L=x+f,le=W+S;return{homeGoals:c,totalGoals:p,awayGoals:g,homeGamesPlayed:_,awayGamesPlayed:F,totalGamesPlayed:P,homeGoalsConceded:y,totalGoalsConceded:R,awayGoalsConceded:T,gfPerMatch:B,gaPerMatch:$,gfGaPerMatch:N,homeGfPerMatch:x,awayGfPerMatch:W,homeGaPerMatch:f,awayGaPerMatch:S,homeGfGaPerMatch:L,awayGfGaPerMatch:le}}function C(e,t,o,s){const n=e.filter(i=>{const a=i.competitorOne.id===t,d=i.competitorTwo.id===t;return!(!a&&!d||i.status?.type!=="FINISHED"||s==="home"&&!a||s==="away"&&!d)}).sort((i,a)=>new Date(a.timing.kickoffTime).getTime()-new Date(i.timing.kickoffTime).getTime());if(n.length===0)return null;let r=0;for(const i of n){const a=i.competitorOne.id===t;if(o(i,t,a))r++;else break}return r>0?r:null}const v={win:(e,t,o)=>{const s=parseInt(o?e.score?.competitorOne||"0":e.score?.competitorTwo||"0"),n=parseInt(o?e.score?.competitorTwo||"0":e.score?.competitorOne||"0");return s>n},draw:e=>e.score?.competitorOne===e.score?.competitorTwo,loss:(e,t,o)=>{const s=parseInt(o?e.score?.competitorOne||"0":e.score?.competitorTwo||"0"),n=parseInt(o?e.score?.competitorTwo||"0":e.score?.competitorOne||"0");return s<n},noWin:(e,t,o)=>!v.win(e,t,o),noDraw:e=>!v.draw(e),noDefeat:(e,t,o)=>!v.loss(e,t,o),scored:(e,t,o)=>parseInt(o?e.score?.competitorOne||"0":e.score?.competitorTwo||"0")>=1,conceded:(e,t,o)=>parseInt(o?e.score?.competitorTwo||"0":e.score?.competitorOne||"0")>=1,noGoalScored:(e,t,o)=>!v.scored(e,t,o),noGoalConceded:(e,t,o)=>!v.conceded(e,t,o),over25:e=>parseInt(e.score?.competitorOne||"0")+parseInt(e.score?.competitorTwo||"0")>2,under25:e=>parseInt(e.score?.competitorOne||"0")+parseInt(e.score?.competitorTwo||"0")<3,scoredTwice:(e,t,o)=>parseInt(o?e.score?.competitorOne||"0":e.score?.competitorTwo||"0")>=2,concededTwice:(e,t,o)=>parseInt(o?e.score?.competitorTwo||"0":e.score?.competitorOne||"0")>=2};function k(e,t,o){return{win:C(e,t,v.win,o),draw:C(e,t,v.draw,o),loss:C(e,t,v.loss,o),noWin:C(e,t,v.noWin,o),noDraw:C(e,t,v.noDraw,o),noDefeat:C(e,t,v.noDefeat,o),scored:C(e,t,v.scored,o),conceded:C(e,t,v.conceded,o),noGoalScored:C(e,t,v.noGoalScored,o),noGoalConceded:C(e,t,v.noGoalConceded,o),over25:C(e,t,v.over25,o),under25:C(e,t,v.under25,o),scoredTwice:C(e,t,v.scoredTwice,o),concededTwice:C(e,t,v.concededTwice,o)}}function Bt(e,t,o){const s=k(e,t,"home"),n=k(e,t),r=k(e,o,"away"),i=k(e,o);return[{label:"Consecutive wins",homeTeam:{home:s.win,total:n.win},awayTeam:{total:i.win,home:r.win},colorType:"neutral"},{label:"Consecutive draws",homeTeam:{home:s.draw,total:n.draw},awayTeam:{total:i.draw,home:r.draw},colorType:"neutral"},{label:"Consecutive defeats",homeTeam:{home:s.loss,total:n.loss},awayTeam:{total:i.loss,home:r.loss},colorType:"neutral"},{label:"No win",homeTeam:{home:s.noWin,total:n.noWin},awayTeam:{total:i.noWin,home:r.noWin},colorType:"negative"},{label:"No draw",homeTeam:{home:s.noDraw,total:n.noDraw},awayTeam:{total:i.noDraw,home:r.noDraw},colorType:"neutral"},{label:"No defeat",homeTeam:{home:s.noDefeat,total:n.noDefeat},awayTeam:{total:i.noDefeat,home:r.noDefeat},colorType:"positive"},{label:"Scored at least once",homeTeam:{home:s.scored,total:n.scored},awayTeam:{total:i.scored,home:r.scored},colorType:"positive"},{label:"Conceded at least once",homeTeam:{home:s.conceded,total:n.conceded},awayTeam:{total:i.conceded,home:r.conceded},colorType:"negative"},{label:"No goal scored",homeTeam:{home:s.noGoalScored,total:n.noGoalScored},awayTeam:{total:i.noGoalScored,home:r.noGoalScored},colorType:"neutral"},{label:"No goal conceded",homeTeam:{home:s.noGoalConceded,total:n.noGoalConceded},awayTeam:{total:i.noGoalConceded,home:r.noGoalConceded},colorType:"neutral"},{label:"GS + GC over 2.5",homeTeam:{home:s.over25,total:n.over25},awayTeam:{total:i.over25,home:r.over25},colorType:"neutral"},{label:"GS + GC under 2.5",homeTeam:{home:s.under25,total:n.under25},awayTeam:{total:i.under25,home:r.under25},colorType:"neutral"},{label:"Scored at least twice",homeTeam:{home:s.scoredTwice,total:n.scoredTwice},awayTeam:{total:i.scoredTwice,home:r.scoredTwice},colorType:"positive"},{label:"Conceded at least twice",homeTeam:{home:s.concededTwice,total:n.concededTwice},awayTeam:{total:i.concededTwice,home:r.concededTwice},colorType:"negative"}]}function J(e,t){const o=new Map;return e.forEach(s=>{if(s.status?.type!=="FINISHED")return;const n=ce(s,t);if(!n)return;const r=n.isHome?s.competitorTwo.id:s.competitorOne.id,i=n.isHome?s.competitorTwo:s.competitorOne,a=o.get(r)||{opponentId:r,opponentName:i.name,opponentLogo:i.assets?.logo};n.isHome?a.homeResult=n.result:a.awayResult=n.result,o.set(r,a)}),o}function $t(e,t,o,s,n,r,i){const a=J(e,t),d=J(e,o),l=new Set([...a.keys(),...d.keys(),t,o]),m=[];return l.forEach(c=>{const g=a.get(c),p=d.get(c);if(!g&&!p&&c!==t&&c!==o)return;let y,T;c===t?(y=s,T=r):c===o?(y=n,T=i):(y=g?.opponentName||p?.opponentName||"",T=g?.opponentLogo||p?.opponentLogo),m.push({opponentId:c,opponentName:y,opponentLogo:T,homeTeamHome:g?.homeResult,homeTeamAway:g?.awayResult,awayTeamHome:p?.homeResult,awayTeamAway:p?.awayResult,isHomeTeamRow:c===t,isAwayTeamRow:c===o})}),m.sort((c,g)=>c.isHomeTeamRow?-1:g.isHomeTeamRow?1:c.isAwayTeamRow?-1:g.isAwayTeamRow?1:c.opponentName.localeCompare(g.opponentName))}exports.addProviderRef=u.addProviderRef;exports.getBatchMatchOdds=u.getBatchMatchOdds;exports.getConfig=u.getConfig;exports.getFootballCompetition=u.getFootballCompetition;exports.getFootballMatch=u.getFootballMatch;exports.getFootballMatchCommentary=u.getFootballMatchCommentary;exports.getFootballMatchEvents=u.getFootballMatchEvents;exports.getFootballMatchLineups=u.getFootballMatchLineups;exports.getFootballMatchOdds=u.getFootballMatchOdds;exports.getFootballMatchStatistics=u.getFootballMatchStatistics;exports.getFootballMatches=u.getFootballMatches;exports.getFootballPlayerSeasonStatistics=u.getFootballPlayerSeasonStatistics;exports.getFootballSeasonDetails=u.getFootballSeasonDetails;exports.getFootballStandings=u.getFootballStandings;exports.getFootballTeam=u.getFootballTeam;exports.getFootballTeamSquad=u.getFootballTeamSquad;exports.getLeaderboardMatches=u.getLeaderboardMatches;exports.getLeaderboardTeamMatches=u.getLeaderboardTeamMatches;exports.getLeaderboardTemplate=u.getLeaderboardTemplate;exports.getProviderRefId=u.getProviderRefId;exports.isConfigured=u.isConfigured;exports.setConfig=u.setConfig;exports.toProviderRefArray=u.toProviderRefArray;exports.GOAL_EVENT_TYPES=re;exports.aggregatePlayerStatisticsFromMatches=I;exports.analyzeMatch=ie;exports.calcAverage=H;exports.calcPercentage=A;exports.calculateH2HStats=Dt;exports.calculateStreak=C;exports.formatAsAverage=Mt;exports.formatPossessionPercentage=Ot;exports.formatStatValue=At;exports.formatWithAverage=Ft;exports.getActiveSeason=rt;exports.getAllPlayerStatisticsFromMatches=se;exports.getFansUnitedFootballCompetition=xe;exports.getFansUnitedFootballCompetitions=ke;exports.getFansUnitedFootballMatch=we;exports.getFansUnitedFootballMatches=et;exports.getFansUnitedFootballPlayer=Xe;exports.getFansUnitedFootballPlayers=Ze;exports.getFansUnitedFootballSearch=nt;exports.getFansUnitedFootballTeam=Ve;exports.getFansUnitedFootballTeams=Ye;exports.getMatchResult=ce;exports.getMostCardedPlayersFromMatches=te;exports.getOpponentScore=Gt;exports.getRecentH2HMeetings=Et;exports.getTeamFinishedMatches=lt;exports.getTeamGoalStats=Ut;exports.getTeamHomeAwayStats=Lt;exports.getTeamMostDecorated=yt;exports.getTeamNextMatch=it;exports.getTeamOverUnderStats=kt;exports.getTeamPreviousMatch=at;exports.getTeamResultsTable=dt;exports.getTeamScore=bt;exports.getTeamSeasonStatistics=De;exports.getTeamStreaks=k;exports.getTeamStreaksComparison=Bt;exports.getTeamTopAppearances=gt;exports.getTeamTopAssisters=mt;exports.getTeamTopCleanSheets=pt;exports.getTeamTopMinutesPlayed=ft;exports.getTeamTopScorers=ut;exports.getTeamUpcomingMatches=ct;exports.getTeamsCommonOpponents=$t;exports.getTopAssistersFromMatches=ee;exports.getTopGoalContributorsFromMatches=oe;exports.getTopScorersFromMatches=w;exports.isMatchFinished=Pt;exports.isTeamAway=ae;exports.isTeamHome=q;exports.isTeamInMatch=Rt;exports.search=Pe;exports.searchFootball=he;exports.streakFilters=v;exports.useAllPlayerStatisticsFromMatches=Ct;exports.useMostCardedPlayersFromMatches=vt;exports.usePlayerStatistics=_t;exports.usePlayerStatisticsMap=ne;exports.useTopAssistersFromMatches=Tt;exports.useTopGoalContributorsFromMatches=St;exports.useTopScorersFromMatches=ht;