@sudobility/sports_api_client 1.0.18 → 1.0.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/football/network/api-football-client.d.ts.map +1 -1
- package/dist/football/network/api-football-client.js.map +1 -1
- package/dist/football/network/index.d.ts.map +1 -1
- package/dist/football/network/index.js.map +1 -1
- package/dist/football/store/index.d.ts.map +1 -1
- package/dist/football/store/index.js.map +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-football-client.d.ts","sourceRoot":"","sources":["../../../src/football/network/api-football-client.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EACV,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,oBAAoB,EACpB,uBAAuB,EACvB,eAAe,EACf,oBAAoB,EACpB,2BAA2B,EAC3B,qBAAqB,EACrB,4BAA4B,EAC5B,4BAA4B,EAC5B,0BAA0B,EAC1B,uBAAuB,EACvB,sBAAsB,EACtB,yBAAyB,EACzB,+BAA+B,EAC/B,wBAAwB,EACxB,sBAAsB,EACtB,cAAc,EACd,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,2BAA2B,EAC3B,iBAAiB,EACjB,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,yBAAyB,EACzB,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,4BAA4B,EAC5B,gBAAgB,EAChB,wBAAwB,EACxB,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,EACxB,uBAAuB,EACvB,sBAAsB,EACtB,cAAc,EACd,aAAa,EACb,oBAAoB,EACrB,MAAM,UAAU,CAAC;AAiClB,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,OAAO,CAAyB;gBAQ5B,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,iBAAiB;YAsBrD,OAAO;IAuCf,WAAW,IAAI,OAAO,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IAuB7D,YAAY,CAChB,MAAM,CAAC,EAAE,uBAAuB,GAC/B,OAAO,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC;IAuB1C,UAAU,IAAI,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IA4BlD,UAAU,CACd,MAAM,CAAC,EAAE,qBAAqB,GAC7B,OAAO,CAAC,mBAAmB,CAAC,sBAAsB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"api-football-client.d.ts","sourceRoot":"","sources":["../../../src/football/network/api-football-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-football-client.js","sourceRoot":"","sources":["../../../src/football/network/api-football-client.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @module api-football-client\n * @description API-Football v3 Client Library\n *\n * A TypeScript client for the API-Football v3 API that provides type-safe\n * access to football data including leagues, teams, fixtures, players, and more.\n *\n * Uses dependency injection for network requests, making it compatible with\n * both React (web) and React Native applications.\n *\n * @example\n * ```typescript\n * import { ApiFootballClient } from \"@sudobility/sports_api_client\";\n *\n * const client = new ApiFootballClient(networkClient, {\n * apiKey: \"YOUR_API_KEY\",\n * });\n *\n * const leagues = await client.getLeagues({ country: \"England\" });\n * ```\n */\n\nimport type { NetworkClient } from \"@sudobility/types\";\nimport type {\n ApiFootballConfig,\n ApiFootballResponse,\n FootballCoach,\n FootballCoachsParams,\n FootballCountriesParams,\n FootballCountry,\n FootballFixtureEvent,\n FootballFixtureEventsParams,\n FootballFixtureLineup,\n FootballFixtureLineupsParams,\n FootballFixturePlayersParams,\n FootballFixturePlayerStats,\n FootballFixtureResponse,\n FootballFixturesParams,\n FootballFixtureStatistics,\n FootballFixtureStatisticsParams,\n FootballHeadToHeadParams,\n FootballInjuriesParams,\n FootballInjury,\n FootballLeagueResponse,\n FootballLeaguesParams,\n FootballPlayerResponse,\n FootballPlayersParams,\n FootballPlayersSeasonParams,\n FootballSidelined,\n FootballSidelinedParams,\n FootballSquadResponse,\n FootballSquadsParams,\n FootballStandingsParams,\n FootballStandingsResponse,\n FootballTeamResponse,\n FootballTeamsParams,\n FootballTeamStatistics,\n FootballTeamStatisticsParams,\n FootballTimezone,\n FootballTopAssistsParams,\n FootballTopCardsParams,\n FootballTopScorersParams,\n FootballTransferResponse,\n FootballTransfersParams,\n FootballTrophiesParams,\n FootballTrophy,\n FootballVenue,\n FootballVenuesParams,\n} from \"../types\";\nimport { buildQueryString } from \"../../utils/query-params\";\nimport {\n FOOTBALL_API_BASE_URL,\n FOOTBALL_DEFAULT_HEADERS,\n FOOTBALL_ENDPOINTS,\n FOOTBALL_RAPIDAPI_HOST,\n} from \"./football-endpoints\";\n\n/**\n * API-Football Client class\n *\n * Provides type-safe methods for all API-Football v3 endpoints.\n * Uses NetworkClient from @sudobility/di for network requests, enabling\n * cross-platform compatibility between React and React Native.\n *\n * @class ApiFootballClient\n *\n * @example\n * ```typescript\n * // Direct API authentication\n * const client = new ApiFootballClient(networkClient, {\n * apiKey: \"YOUR_API_KEY\",\n * });\n *\n * // RapidAPI authentication\n * const rapidClient = new ApiFootballClient(networkClient, {\n * apiKey: \"YOUR_RAPIDAPI_KEY\",\n * useRapidApi: true,\n * rapidApiHost: \"api-football-v1.p.rapidapi.com\",\n * });\n * ```\n */\nexport class ApiFootballClient {\n private baseUrl: string;\n private networkClient: NetworkClient;\n private headers: Record<string, string>;\n\n /**\n * Create a new ApiFootballClient instance\n *\n * @param networkClient - NetworkClient instance for making HTTP requests\n * @param config - API configuration including API key\n */\n constructor(networkClient: NetworkClient, config: ApiFootballConfig) {\n this.networkClient = networkClient;\n this.baseUrl = config.baseUrl || FOOTBALL_API_BASE_URL;\n\n // Set up authentication headers\n if (config.useRapidApi && config.rapidApiHost) {\n this.headers = {\n ...FOOTBALL_DEFAULT_HEADERS,\n \"x-rapidapi-host\": config.rapidApiHost || FOOTBALL_RAPIDAPI_HOST,\n \"x-rapidapi-key\": config.apiKey,\n };\n } else {\n this.headers = {\n ...FOOTBALL_DEFAULT_HEADERS,\n \"x-apisports-key\": config.apiKey,\n };\n }\n }\n\n /**\n * Make a GET request to the API\n */\n private async request<T>(endpoint: string): Promise<ApiFootballResponse<T>> {\n const url = `${this.baseUrl}${endpoint}`;\n\n const response = await this.networkClient.get<ApiFootballResponse<T>>(url, {\n headers: this.headers,\n });\n\n if (response.data === undefined || response.data === null) {\n throw new Error(\"No data received from API-Football\");\n }\n\n // Check for API errors\n const data = response.data as ApiFootballResponse<T>;\n if (data.errors && Object.keys(data.errors).length > 0) {\n const errorMsg = Array.isArray(data.errors)\n ? data.errors.join(\", \")\n : Object.values(data.errors).join(\", \");\n throw new Error(`API-Football error: ${errorMsg}`);\n }\n\n return data;\n }\n\n // ============================================================================\n // General Endpoints\n // ============================================================================\n\n /**\n * Get all available timezones supported by the API\n *\n * @returns Promise resolving to array of timezone strings (e.g., \"Europe/London\")\n * @throws Error if API returns an error or no data\n *\n * @example\n * ```typescript\n * const timezones = await client.getTimezone();\n * console.log(timezones.response); // [\"Europe/London\", \"America/New_York\", ...]\n * ```\n */\n async getTimezone(): Promise<ApiFootballResponse<FootballTimezone>> {\n return this.request<FootballTimezone>(FOOTBALL_ENDPOINTS.TIMEZONE);\n }\n\n /**\n * Get all available countries or filter by name/code\n *\n * @param params - Optional filter parameters\n * @param params.name - Filter by country name\n * @param params.code - Filter by ISO 3166-1 alpha-2 code\n * @param params.search - Search by partial name (min 3 characters)\n * @returns Promise resolving to array of Country objects\n * @throws Error if API returns an error or no data\n *\n * @example\n * ```typescript\n * // Get all countries\n * const allCountries = await client.getCountries();\n *\n * // Search for countries\n * const results = await client.getCountries({ search: \"eng\" });\n * ```\n */\n async getCountries(\n params?: FootballCountriesParams,\n ): Promise<ApiFootballResponse<FootballCountry>> {\n const query = params ? buildQueryString(params) : \"\";\n return this.request<FootballCountry>(\n `${FOOTBALL_ENDPOINTS.COUNTRIES}${query}`,\n );\n }\n\n // ============================================================================\n // Leagues Endpoints\n // ============================================================================\n\n /**\n * Get all available seasons (years) in the API\n *\n * @returns Promise resolving to array of season years (e.g., [2020, 2021, 2022, 2023])\n * @throws Error if API returns an error or no data\n *\n * @example\n * ```typescript\n * const seasons = await client.getSeasons();\n * const currentSeason = Math.max(...seasons.response);\n * ```\n */\n async getSeasons(): Promise<ApiFootballResponse<number>> {\n return this.request<number>(FOOTBALL_ENDPOINTS.LEAGUES_SEASONS);\n }\n\n /**\n * Get leagues and cups with optional filtering\n *\n * @param params - Optional filter parameters\n * @param params.id - Filter by league ID\n * @param params.name - Filter by league name\n * @param params.country - Filter by country name\n * @param params.season - Filter by season year\n * @param params.team - Filter by team ID\n * @param params.type - Filter by type (\"league\" or \"cup\")\n * @param params.current - Get only current leagues\n * @param params.search - Search by partial name (min 3 characters)\n * @returns Promise resolving to array of LeagueResponse objects\n * @throws Error if API returns an error or no data\n *\n * @example\n * ```typescript\n * // Get Premier League\n * const pl = await client.getLeagues({ id: 39 });\n *\n * // Get all English leagues\n * const english = await client.getLeagues({ country: \"England\" });\n * ```\n */\n async getLeagues(\n params?: FootballLeaguesParams,\n ): Promise<ApiFootballResponse<FootballLeagueResponse>> {\n const query = params ? buildQueryString(params) : \"\";\n return this.request<FootballLeagueResponse>(\n `${FOOTBALL_ENDPOINTS.LEAGUES}${query}`,\n );\n }\n\n // ============================================================================\n // Teams Endpoints\n // ============================================================================\n\n /**\n * Get teams\n */\n async getTeams(\n params: FootballTeamsParams,\n ): Promise<ApiFootballResponse<FootballTeamResponse>> {\n const query = buildQueryString(params);\n return this.request<FootballTeamResponse>(\n `${FOOTBALL_ENDPOINTS.TEAMS}${query}`,\n );\n }\n\n /**\n * Get team statistics\n */\n async getTeamStatistics(\n params: FootballTeamStatisticsParams,\n ): Promise<ApiFootballResponse<FootballTeamStatistics>> {\n const query = buildQueryString(params);\n return this.request<FootballTeamStatistics>(\n `${FOOTBALL_ENDPOINTS.TEAMS_STATISTICS}${query}`,\n );\n }\n\n /**\n * Get venues/stadiums\n */\n async getVenues(\n params?: FootballVenuesParams,\n ): Promise<ApiFootballResponse<FootballVenue>> {\n const query = params ? buildQueryString(params) : \"\";\n return this.request<FootballVenue>(`${FOOTBALL_ENDPOINTS.VENUES}${query}`);\n }\n\n // ============================================================================\n // Standings Endpoints\n // ============================================================================\n\n /**\n * Get league standings/table for a season\n *\n * @param params - Required filter parameters\n * @param params.league - League ID (required)\n * @param params.season - Season year (required)\n * @param params.team - Filter by team ID\n * @returns Promise resolving to array of StandingsResponse objects\n * @throws Error if API returns an error or no data\n *\n * @example\n * ```typescript\n * // Get Premier League 2023 standings\n * const standings = await client.getStandings({ league: 39, season: 2023 });\n * const table = standings.response[0]?.league.standings[0];\n * ```\n */\n async getStandings(\n params: FootballStandingsParams,\n ): Promise<ApiFootballResponse<FootballStandingsResponse>> {\n const query = buildQueryString(params);\n return this.request<FootballStandingsResponse>(\n `${FOOTBALL_ENDPOINTS.STANDINGS}${query}`,\n );\n }\n\n // ============================================================================\n // Fixtures Endpoints\n // ============================================================================\n\n /**\n * Get fixtures (matches) with optional filtering\n *\n * @param params - Optional filter parameters\n * @param params.id - Filter by fixture ID\n * @param params.live - Get live fixtures (\"all\" or league IDs)\n * @param params.date - Filter by date (YYYY-MM-DD)\n * @param params.league - Filter by league ID\n * @param params.season - Filter by season year\n * @param params.team - Filter by team ID\n * @param params.last - Get last N fixtures\n * @param params.next - Get next N fixtures\n * @param params.from - Filter from date (YYYY-MM-DD)\n * @param params.to - Filter to date (YYYY-MM-DD)\n * @returns Promise resolving to array of FixtureResponse objects\n * @throws Error if API returns an error or no data\n *\n * @example\n * ```typescript\n * // Get live fixtures\n * const live = await client.getFixtures({ live: \"all\" });\n *\n * // Get fixtures for a date\n * const today = await client.getFixtures({ date: \"2024-01-15\" });\n *\n * // Get next 5 fixtures for a team\n * const next = await client.getFixtures({ team: 33, next: 5 });\n * ```\n */\n async getFixtures(\n params?: FootballFixturesParams,\n ): Promise<ApiFootballResponse<FootballFixtureResponse>> {\n const query = params ? buildQueryString(params) : \"\";\n return this.request<FootballFixtureResponse>(\n `${FOOTBALL_ENDPOINTS.FIXTURES}${query}`,\n );\n }\n\n /**\n * Get head to head fixtures between two teams\n */\n async getFixturesHeadToHead(\n params: FootballHeadToHeadParams,\n ): Promise<ApiFootballResponse<FootballFixtureResponse>> {\n const query = buildQueryString(params);\n return this.request<FootballFixtureResponse>(\n `${FOOTBALL_ENDPOINTS.FIXTURES_HEAD_TO_HEAD}${query}`,\n );\n }\n\n /**\n * Get fixture statistics\n */\n async getFixtureStatistics(\n params: FootballFixtureStatisticsParams,\n ): Promise<ApiFootballResponse<FootballFixtureStatistics>> {\n const query = buildQueryString(params);\n return this.request<FootballFixtureStatistics>(\n `${FOOTBALL_ENDPOINTS.FIXTURES_STATISTICS}${query}`,\n );\n }\n\n /**\n * Get fixture events (goals, cards, substitutions, VAR)\n */\n async getFixtureEvents(\n params: FootballFixtureEventsParams,\n ): Promise<ApiFootballResponse<FootballFixtureEvent>> {\n const query = buildQueryString(params);\n return this.request<FootballFixtureEvent>(\n `${FOOTBALL_ENDPOINTS.FIXTURES_EVENTS}${query}`,\n );\n }\n\n /**\n * Get fixture lineups\n */\n async getFixtureLineups(\n params: FootballFixtureLineupsParams,\n ): Promise<ApiFootballResponse<FootballFixtureLineup>> {\n const query = buildQueryString(params);\n return this.request<FootballFixtureLineup>(\n `${FOOTBALL_ENDPOINTS.FIXTURES_LINEUPS}${query}`,\n );\n }\n\n /**\n * Get player statistics for a fixture\n */\n async getFixturePlayers(\n params: FootballFixturePlayersParams,\n ): Promise<ApiFootballResponse<FootballFixturePlayerStats>> {\n const query = buildQueryString(params);\n return this.request<FootballFixturePlayerStats>(\n `${FOOTBALL_ENDPOINTS.FIXTURES_PLAYERS}${query}`,\n );\n }\n\n // ============================================================================\n // Players Endpoints\n // ============================================================================\n\n /**\n * Get players\n */\n async getPlayers(\n params: FootballPlayersParams,\n ): Promise<ApiFootballResponse<FootballPlayerResponse>> {\n const query = buildQueryString(params);\n return this.request<FootballPlayerResponse>(\n `${FOOTBALL_ENDPOINTS.PLAYERS}${query}`,\n );\n }\n\n /**\n * Get available player seasons\n */\n async getPlayersSeasons(\n params?: FootballPlayersSeasonParams,\n ): Promise<ApiFootballResponse<number>> {\n const query = params ? buildQueryString(params) : \"\";\n return this.request<number>(\n `${FOOTBALL_ENDPOINTS.PLAYERS_SEASONS}${query}`,\n );\n }\n\n /**\n * Get team squads or player's teams\n */\n async getSquads(\n params: FootballSquadsParams,\n ): Promise<ApiFootballResponse<FootballSquadResponse>> {\n const query = buildQueryString(params);\n return this.request<FootballSquadResponse>(\n `${FOOTBALL_ENDPOINTS.PLAYERS_SQUADS}${query}`,\n );\n }\n\n /**\n * Get top scorers for a league/season\n */\n async getTopScorers(\n params: FootballTopScorersParams,\n ): Promise<ApiFootballResponse<FootballPlayerResponse>> {\n const query = buildQueryString(params);\n return this.request<FootballPlayerResponse>(\n `${FOOTBALL_ENDPOINTS.PLAYERS_TOP_SCORERS}${query}`,\n );\n }\n\n /**\n * Get top assists for a league/season\n */\n async getTopAssists(\n params: FootballTopAssistsParams,\n ): Promise<ApiFootballResponse<FootballPlayerResponse>> {\n const query = buildQueryString(params);\n return this.request<FootballPlayerResponse>(\n `${FOOTBALL_ENDPOINTS.PLAYERS_TOP_ASSISTS}${query}`,\n );\n }\n\n /**\n * Get top cards (most carded players) for a league/season\n */\n async getTopCards(\n params: FootballTopCardsParams,\n ): Promise<ApiFootballResponse<FootballPlayerResponse>> {\n const query = buildQueryString(params);\n return this.request<FootballPlayerResponse>(\n `${FOOTBALL_ENDPOINTS.PLAYERS_TOP_CARDS}${query}`,\n );\n }\n\n // ============================================================================\n // Transfers Endpoints\n // ============================================================================\n\n /**\n * Get player transfers\n */\n async getTransfers(\n params: FootballTransfersParams,\n ): Promise<ApiFootballResponse<FootballTransferResponse>> {\n const query = buildQueryString(params);\n return this.request<FootballTransferResponse>(\n `${FOOTBALL_ENDPOINTS.TRANSFERS}${query}`,\n );\n }\n\n // ============================================================================\n // Trophies Endpoints\n // ============================================================================\n\n /**\n * Get trophies for a player or coach\n */\n async getTrophies(\n params: FootballTrophiesParams,\n ): Promise<ApiFootballResponse<FootballTrophy>> {\n const query = buildQueryString(params);\n return this.request<FootballTrophy>(\n `${FOOTBALL_ENDPOINTS.TROPHIES}${query}`,\n );\n }\n\n // ============================================================================\n // Sidelined Endpoints\n // ============================================================================\n\n /**\n * Get sidelined players (injured/suspended)\n */\n async getSidelined(\n params: FootballSidelinedParams,\n ): Promise<ApiFootballResponse<FootballSidelined>> {\n const query = buildQueryString(params);\n return this.request<FootballSidelined>(\n `${FOOTBALL_ENDPOINTS.SIDELINED}${query}`,\n );\n }\n\n // ============================================================================\n // Coachs Endpoints\n // ============================================================================\n\n /**\n * Get coach information\n */\n async getCoachs(\n params: FootballCoachsParams,\n ): Promise<ApiFootballResponse<FootballCoach>> {\n const query = buildQueryString(params);\n return this.request<FootballCoach>(`${FOOTBALL_ENDPOINTS.COACHS}${query}`);\n }\n\n // ============================================================================\n // Injuries Endpoints\n // ============================================================================\n\n /**\n * Get injuries\n */\n async getInjuries(\n params: FootballInjuriesParams,\n ): Promise<ApiFootballResponse<FootballInjury>> {\n const query = buildQueryString(params);\n return this.request<FootballInjury>(\n `${FOOTBALL_ENDPOINTS.INJURIES}${query}`,\n );\n }\n}\n\n/**\n * Factory function to create an ApiFootballClient instance\n *\n * @param networkClient - NetworkClient instance for making HTTP requests\n * @param config - API configuration including API key\n * @returns New ApiFootballClient instance\n *\n * @example\n * ```typescript\n * const client = createApiFootballClient(networkClient, {\n * apiKey: \"YOUR_API_KEY\",\n * });\n * ```\n */\nexport const createApiFootballClient = (\n networkClient: NetworkClient,\n config: ApiFootballConfig,\n): ApiFootballClient => {\n return new ApiFootballClient(networkClient, config);\n};\n"]}
|
|
1
|
+
{"version":3,"file":"api-football-client.js","sourceRoot":"","sources":["../../../src/football/network/api-football-client.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @module api-football-client\n * @description API-Football v3 Client Library\n *\n * A TypeScript client for the API-Football v3 API that provides type-safe\n * access to football data including leagues, teams, fixtures, players, and more.\n *\n * Uses dependency injection for network requests, making it compatible with\n * both React (web) and React Native applications.\n *\n * @example\n * ```typescript\n * import { ApiFootballClient } from \"@sudobility/sports_api_client\";\n *\n * const client = new ApiFootballClient(networkClient, {\n * apiKey: \"YOUR_API_KEY\",\n * });\n *\n * const leagues = await client.getLeagues({ country: \"England\" });\n * ```\n */\n\nimport type { NetworkClient } from \"@sudobility/types\";\nimport type {\n ApiFootballConfig,\n ApiFootballResponse,\n FootballCoach,\n FootballCoachsParams,\n FootballCountriesParams,\n FootballCountry,\n FootballFixtureEvent,\n FootballFixtureEventsParams,\n FootballFixtureLineup,\n FootballFixtureLineupsParams,\n FootballFixturePlayersParams,\n FootballFixturePlayerStats,\n FootballFixtureResponse,\n FootballFixturesParams,\n FootballFixtureStatistics,\n FootballFixtureStatisticsParams,\n FootballHeadToHeadParams,\n FootballInjuriesParams,\n FootballInjury,\n FootballLeagueResponse,\n FootballLeaguesParams,\n FootballPlayerResponse,\n FootballPlayersParams,\n FootballPlayersSeasonParams,\n FootballSidelined,\n FootballSidelinedParams,\n FootballSquadResponse,\n FootballSquadsParams,\n FootballStandingsParams,\n FootballStandingsResponse,\n FootballTeamResponse,\n FootballTeamsParams,\n FootballTeamStatistics,\n FootballTeamStatisticsParams,\n FootballTimezone,\n FootballTopAssistsParams,\n FootballTopCardsParams,\n FootballTopScorersParams,\n FootballTransferResponse,\n FootballTransfersParams,\n FootballTrophiesParams,\n FootballTrophy,\n FootballVenue,\n FootballVenuesParams,\n} from \"../types\";\nimport { buildQueryString } from \"../../utils/query-params\";\nimport {\n FOOTBALL_API_BASE_URL,\n FOOTBALL_DEFAULT_HEADERS,\n FOOTBALL_ENDPOINTS,\n FOOTBALL_RAPIDAPI_HOST,\n} from \"./football-endpoints\";\n\n/**\n * API-Football Client class\n *\n * Provides type-safe methods for all API-Football v3 endpoints.\n * Uses NetworkClient from @sudobility/di for network requests, enabling\n * cross-platform compatibility between React and React Native.\n *\n * @class ApiFootballClient\n *\n * @example\n * ```typescript\n * // Direct API authentication\n * const client = new ApiFootballClient(networkClient, {\n * apiKey: \"YOUR_API_KEY\",\n * });\n *\n * // RapidAPI authentication\n * const rapidClient = new ApiFootballClient(networkClient, {\n * apiKey: \"YOUR_RAPIDAPI_KEY\",\n * useRapidApi: true,\n * rapidApiHost: \"api-football-v1.p.rapidapi.com\",\n * });\n * ```\n */\nexport class ApiFootballClient {\n private baseUrl: string;\n private networkClient: NetworkClient;\n private headers: Record<string, string>;\n\n /**\n * Create a new ApiFootballClient instance\n *\n * @param networkClient - NetworkClient instance for making HTTP requests\n * @param config - API configuration including API key\n */\n constructor(networkClient: NetworkClient, config: ApiFootballConfig) {\n this.networkClient = networkClient;\n this.baseUrl = config.baseUrl || FOOTBALL_API_BASE_URL;\n\n // Set up authentication headers\n if (config.useRapidApi && config.rapidApiHost) {\n this.headers = {\n ...FOOTBALL_DEFAULT_HEADERS,\n \"x-rapidapi-host\": config.rapidApiHost || FOOTBALL_RAPIDAPI_HOST,\n \"x-rapidapi-key\": config.apiKey,\n };\n } else {\n this.headers = {\n ...FOOTBALL_DEFAULT_HEADERS,\n \"x-apisports-key\": config.apiKey,\n };\n }\n }\n\n /**\n * Make a GET request to the API\n */\n private async request<T>(endpoint: string): Promise<ApiFootballResponse<T>> {\n const url = `${this.baseUrl}${endpoint}`;\n\n const response = await this.networkClient.get<ApiFootballResponse<T>>(url, {\n headers: this.headers,\n });\n\n if (response.data === undefined || response.data === null) {\n throw new Error(\"No data received from API-Football\");\n }\n\n // Check for API errors\n const data = response.data as ApiFootballResponse<T>;\n if (data.errors && Object.keys(data.errors).length > 0) {\n const errorMsg = Array.isArray(data.errors)\n ? data.errors.join(\", \")\n : Object.values(data.errors).join(\", \");\n throw new Error(`API-Football error: ${errorMsg}`);\n }\n\n return data;\n }\n\n // ============================================================================\n // General Endpoints\n // ============================================================================\n\n /**\n * Get all available timezones supported by the API\n *\n * @returns Promise resolving to array of timezone strings (e.g., \"Europe/London\")\n * @throws Error if API returns an error or no data\n *\n * @example\n * ```typescript\n * const timezones = await client.getTimezone();\n * console.log(timezones.response); // [\"Europe/London\", \"America/New_York\", ...]\n * ```\n */\n async getTimezone(): Promise<ApiFootballResponse<FootballTimezone>> {\n return this.request<FootballTimezone>(FOOTBALL_ENDPOINTS.TIMEZONE);\n }\n\n /**\n * Get all available countries or filter by name/code\n *\n * @param params - Optional filter parameters\n * @param params.name - Filter by country name\n * @param params.code - Filter by ISO 3166-1 alpha-2 code\n * @param params.search - Search by partial name (min 3 characters)\n * @returns Promise resolving to array of Country objects\n * @throws Error if API returns an error or no data\n *\n * @example\n * ```typescript\n * // Get all countries\n * const allCountries = await client.getCountries();\n *\n * // Search for countries\n * const results = await client.getCountries({ search: \"eng\" });\n * ```\n */\n async getCountries(\n params?: FootballCountriesParams,\n ): Promise<ApiFootballResponse<FootballCountry>> {\n const query = params ? buildQueryString(params) : \"\";\n return this.request<FootballCountry>(\n `${FOOTBALL_ENDPOINTS.COUNTRIES}${query}`,\n );\n }\n\n // ============================================================================\n // Leagues Endpoints\n // ============================================================================\n\n /**\n * Get all available seasons (years) in the API\n *\n * @returns Promise resolving to array of season years (e.g., [2020, 2021, 2022, 2023])\n * @throws Error if API returns an error or no data\n *\n * @example\n * ```typescript\n * const seasons = await client.getSeasons();\n * const currentSeason = Math.max(...seasons.response);\n * ```\n */\n async getSeasons(): Promise<ApiFootballResponse<number>> {\n return this.request<number>(FOOTBALL_ENDPOINTS.LEAGUES_SEASONS);\n }\n\n /**\n * Get leagues and cups with optional filtering\n *\n * @param params - Optional filter parameters\n * @param params.id - Filter by league ID\n * @param params.name - Filter by league name\n * @param params.country - Filter by country name\n * @param params.season - Filter by season year\n * @param params.team - Filter by team ID\n * @param params.type - Filter by type (\"league\" or \"cup\")\n * @param params.current - Get only current leagues\n * @param params.search - Search by partial name (min 3 characters)\n * @returns Promise resolving to array of LeagueResponse objects\n * @throws Error if API returns an error or no data\n *\n * @example\n * ```typescript\n * // Get Premier League\n * const pl = await client.getLeagues({ id: 39 });\n *\n * // Get all English leagues\n * const english = await client.getLeagues({ country: \"England\" });\n * ```\n */\n async getLeagues(\n params?: FootballLeaguesParams,\n ): Promise<ApiFootballResponse<FootballLeagueResponse>> {\n const query = params ? buildQueryString(params) : \"\";\n return this.request<FootballLeagueResponse>(\n `${FOOTBALL_ENDPOINTS.LEAGUES}${query}`,\n );\n }\n\n // ============================================================================\n // Teams Endpoints\n // ============================================================================\n\n /**\n * Get teams with optional filtering\n *\n * @param params - Filter parameters (id, name, league, season, country, code, venue, search)\n * @returns Promise resolving to array of TeamResponse objects\n * @throws Error if API returns an error or no data\n */\n async getTeams(\n params: FootballTeamsParams,\n ): Promise<ApiFootballResponse<FootballTeamResponse>> {\n const query = buildQueryString(params);\n return this.request<FootballTeamResponse>(\n `${FOOTBALL_ENDPOINTS.TEAMS}${query}`,\n );\n }\n\n /**\n * Get team statistics for a league/season\n *\n * @param params - Required filter parameters (league, season, team; optional date)\n * @returns Promise resolving to team statistics data\n * @throws Error if API returns an error or no data\n */\n async getTeamStatistics(\n params: FootballTeamStatisticsParams,\n ): Promise<ApiFootballResponse<FootballTeamStatistics>> {\n const query = buildQueryString(params);\n return this.request<FootballTeamStatistics>(\n `${FOOTBALL_ENDPOINTS.TEAMS_STATISTICS}${query}`,\n );\n }\n\n /**\n * Get venues/stadiums with optional filtering\n *\n * @param params - Optional filter parameters (id, name, city, country, search)\n * @returns Promise resolving to array of Venue objects\n * @throws Error if API returns an error or no data\n */\n async getVenues(\n params?: FootballVenuesParams,\n ): Promise<ApiFootballResponse<FootballVenue>> {\n const query = params ? buildQueryString(params) : \"\";\n return this.request<FootballVenue>(`${FOOTBALL_ENDPOINTS.VENUES}${query}`);\n }\n\n // ============================================================================\n // Standings Endpoints\n // ============================================================================\n\n /**\n * Get league standings/table for a season\n *\n * @param params - Required filter parameters\n * @param params.league - League ID (required)\n * @param params.season - Season year (required)\n * @param params.team - Filter by team ID\n * @returns Promise resolving to array of StandingsResponse objects\n * @throws Error if API returns an error or no data\n *\n * @example\n * ```typescript\n * // Get Premier League 2023 standings\n * const standings = await client.getStandings({ league: 39, season: 2023 });\n * const table = standings.response[0]?.league.standings[0];\n * ```\n */\n async getStandings(\n params: FootballStandingsParams,\n ): Promise<ApiFootballResponse<FootballStandingsResponse>> {\n const query = buildQueryString(params);\n return this.request<FootballStandingsResponse>(\n `${FOOTBALL_ENDPOINTS.STANDINGS}${query}`,\n );\n }\n\n // ============================================================================\n // Fixtures Endpoints\n // ============================================================================\n\n /**\n * Get fixtures (matches) with optional filtering\n *\n * @param params - Optional filter parameters\n * @param params.id - Filter by fixture ID\n * @param params.live - Get live fixtures (\"all\" or league IDs)\n * @param params.date - Filter by date (YYYY-MM-DD)\n * @param params.league - Filter by league ID\n * @param params.season - Filter by season year\n * @param params.team - Filter by team ID\n * @param params.last - Get last N fixtures\n * @param params.next - Get next N fixtures\n * @param params.from - Filter from date (YYYY-MM-DD)\n * @param params.to - Filter to date (YYYY-MM-DD)\n * @returns Promise resolving to array of FixtureResponse objects\n * @throws Error if API returns an error or no data\n *\n * @example\n * ```typescript\n * // Get live fixtures\n * const live = await client.getFixtures({ live: \"all\" });\n *\n * // Get fixtures for a date\n * const today = await client.getFixtures({ date: \"2024-01-15\" });\n *\n * // Get next 5 fixtures for a team\n * const next = await client.getFixtures({ team: 33, next: 5 });\n * ```\n */\n async getFixtures(\n params?: FootballFixturesParams,\n ): Promise<ApiFootballResponse<FootballFixtureResponse>> {\n const query = params ? buildQueryString(params) : \"\";\n return this.request<FootballFixtureResponse>(\n `${FOOTBALL_ENDPOINTS.FIXTURES}${query}`,\n );\n }\n\n /**\n * Get head-to-head fixtures between two teams\n *\n * @param params - Parameters including h2h (team IDs), optional date/league/season filters\n * @returns Promise resolving to array of FixtureResponse objects\n * @throws Error if API returns an error or no data\n */\n async getFixturesHeadToHead(\n params: FootballHeadToHeadParams,\n ): Promise<ApiFootballResponse<FootballFixtureResponse>> {\n const query = buildQueryString(params);\n return this.request<FootballFixtureResponse>(\n `${FOOTBALL_ENDPOINTS.FIXTURES_HEAD_TO_HEAD}${query}`,\n );\n }\n\n /**\n * Get statistics for a specific fixture\n *\n * @param params - Parameters including fixture ID, optional team and stat type filters\n * @returns Promise resolving to array of FixtureStatistics objects\n * @throws Error if API returns an error or no data\n */\n async getFixtureStatistics(\n params: FootballFixtureStatisticsParams,\n ): Promise<ApiFootballResponse<FootballFixtureStatistics>> {\n const query = buildQueryString(params);\n return this.request<FootballFixtureStatistics>(\n `${FOOTBALL_ENDPOINTS.FIXTURES_STATISTICS}${query}`,\n );\n }\n\n /**\n * Get fixture events (goals, cards, substitutions, VAR decisions)\n *\n * @param params - Parameters including fixture ID, optional team/player/type filters\n * @returns Promise resolving to array of FixtureEvent objects\n * @throws Error if API returns an error or no data\n */\n async getFixtureEvents(\n params: FootballFixtureEventsParams,\n ): Promise<ApiFootballResponse<FootballFixtureEvent>> {\n const query = buildQueryString(params);\n return this.request<FootballFixtureEvent>(\n `${FOOTBALL_ENDPOINTS.FIXTURES_EVENTS}${query}`,\n );\n }\n\n /**\n * Get starting lineups for a fixture\n *\n * @param params - Parameters including fixture ID, optional team/player/type filters\n * @returns Promise resolving to array of FixtureLineup objects\n * @throws Error if API returns an error or no data\n */\n async getFixtureLineups(\n params: FootballFixtureLineupsParams,\n ): Promise<ApiFootballResponse<FootballFixtureLineup>> {\n const query = buildQueryString(params);\n return this.request<FootballFixtureLineup>(\n `${FOOTBALL_ENDPOINTS.FIXTURES_LINEUPS}${query}`,\n );\n }\n\n /**\n * Get player statistics for a specific fixture\n *\n * @param params - Parameters including fixture ID, optional team filter\n * @returns Promise resolving to array of FixturePlayerStats objects\n * @throws Error if API returns an error or no data\n */\n async getFixturePlayers(\n params: FootballFixturePlayersParams,\n ): Promise<ApiFootballResponse<FootballFixturePlayerStats>> {\n const query = buildQueryString(params);\n return this.request<FootballFixturePlayerStats>(\n `${FOOTBALL_ENDPOINTS.FIXTURES_PLAYERS}${query}`,\n );\n }\n\n // ============================================================================\n // Players Endpoints\n // ============================================================================\n\n /**\n * Get players with optional filtering\n *\n * @param params - Filter parameters (id, team, league, season, search, page)\n * @returns Promise resolving to array of PlayerResponse objects\n * @throws Error if API returns an error or no data\n */\n async getPlayers(\n params: FootballPlayersParams,\n ): Promise<ApiFootballResponse<FootballPlayerResponse>> {\n const query = buildQueryString(params);\n return this.request<FootballPlayerResponse>(\n `${FOOTBALL_ENDPOINTS.PLAYERS}${query}`,\n );\n }\n\n /**\n * Get available seasons for a player\n *\n * @param params - Optional filter parameters (player ID)\n * @returns Promise resolving to array of season years\n * @throws Error if API returns an error or no data\n */\n async getPlayersSeasons(\n params?: FootballPlayersSeasonParams,\n ): Promise<ApiFootballResponse<number>> {\n const query = params ? buildQueryString(params) : \"\";\n return this.request<number>(\n `${FOOTBALL_ENDPOINTS.PLAYERS_SEASONS}${query}`,\n );\n }\n\n /**\n * Get team squads or a player's teams\n *\n * @param params - Filter parameters (team ID or player ID)\n * @returns Promise resolving to array of SquadResponse objects\n * @throws Error if API returns an error or no data\n */\n async getSquads(\n params: FootballSquadsParams,\n ): Promise<ApiFootballResponse<FootballSquadResponse>> {\n const query = buildQueryString(params);\n return this.request<FootballSquadResponse>(\n `${FOOTBALL_ENDPOINTS.PLAYERS_SQUADS}${query}`,\n );\n }\n\n /**\n * Get top scorers for a league and season\n *\n * @param params - Required parameters (league ID, season year)\n * @returns Promise resolving to array of PlayerResponse objects ranked by goals\n * @throws Error if API returns an error or no data\n */\n async getTopScorers(\n params: FootballTopScorersParams,\n ): Promise<ApiFootballResponse<FootballPlayerResponse>> {\n const query = buildQueryString(params);\n return this.request<FootballPlayerResponse>(\n `${FOOTBALL_ENDPOINTS.PLAYERS_TOP_SCORERS}${query}`,\n );\n }\n\n /**\n * Get top assists for a league and season\n *\n * @param params - Required parameters (league ID, season year)\n * @returns Promise resolving to array of PlayerResponse objects ranked by assists\n * @throws Error if API returns an error or no data\n */\n async getTopAssists(\n params: FootballTopAssistsParams,\n ): Promise<ApiFootballResponse<FootballPlayerResponse>> {\n const query = buildQueryString(params);\n return this.request<FootballPlayerResponse>(\n `${FOOTBALL_ENDPOINTS.PLAYERS_TOP_ASSISTS}${query}`,\n );\n }\n\n /**\n * Get most carded players for a league and season\n *\n * @param params - Required parameters (league ID, season year)\n * @returns Promise resolving to array of PlayerResponse objects ranked by cards\n * @throws Error if API returns an error or no data\n */\n async getTopCards(\n params: FootballTopCardsParams,\n ): Promise<ApiFootballResponse<FootballPlayerResponse>> {\n const query = buildQueryString(params);\n return this.request<FootballPlayerResponse>(\n `${FOOTBALL_ENDPOINTS.PLAYERS_TOP_CARDS}${query}`,\n );\n }\n\n // ============================================================================\n // Transfers Endpoints\n // ============================================================================\n\n /**\n * Get player transfers\n *\n * @param params - Filter parameters (player ID or team ID)\n * @returns Promise resolving to array of TransferResponse objects\n * @throws Error if API returns an error or no data\n */\n async getTransfers(\n params: FootballTransfersParams,\n ): Promise<ApiFootballResponse<FootballTransferResponse>> {\n const query = buildQueryString(params);\n return this.request<FootballTransferResponse>(\n `${FOOTBALL_ENDPOINTS.TRANSFERS}${query}`,\n );\n }\n\n // ============================================================================\n // Trophies Endpoints\n // ============================================================================\n\n /**\n * Get trophies won by a player or coach\n *\n * @param params - Filter parameters (player ID or coach ID)\n * @returns Promise resolving to array of Trophy objects\n * @throws Error if API returns an error or no data\n */\n async getTrophies(\n params: FootballTrophiesParams,\n ): Promise<ApiFootballResponse<FootballTrophy>> {\n const query = buildQueryString(params);\n return this.request<FootballTrophy>(\n `${FOOTBALL_ENDPOINTS.TROPHIES}${query}`,\n );\n }\n\n // ============================================================================\n // Sidelined Endpoints\n // ============================================================================\n\n /**\n * Get sidelined players (injured or suspended)\n *\n * @param params - Filter parameters (player ID or coach ID)\n * @returns Promise resolving to array of Sidelined objects\n * @throws Error if API returns an error or no data\n */\n async getSidelined(\n params: FootballSidelinedParams,\n ): Promise<ApiFootballResponse<FootballSidelined>> {\n const query = buildQueryString(params);\n return this.request<FootballSidelined>(\n `${FOOTBALL_ENDPOINTS.SIDELINED}${query}`,\n );\n }\n\n // ============================================================================\n // Coachs Endpoints\n // ============================================================================\n\n /**\n * Get coach information\n *\n * @param params - Filter parameters (id, team, search)\n * @returns Promise resolving to array of Coach objects\n * @throws Error if API returns an error or no data\n */\n async getCoachs(\n params: FootballCoachsParams,\n ): Promise<ApiFootballResponse<FootballCoach>> {\n const query = buildQueryString(params);\n return this.request<FootballCoach>(`${FOOTBALL_ENDPOINTS.COACHS}${query}`);\n }\n\n // ============================================================================\n // Injuries Endpoints\n // ============================================================================\n\n /**\n * Get injury information\n *\n * @param params - Filter parameters (league, season, fixture, team, player, date, timezone)\n * @returns Promise resolving to array of Injury objects\n * @throws Error if API returns an error or no data\n */\n async getInjuries(\n params: FootballInjuriesParams,\n ): Promise<ApiFootballResponse<FootballInjury>> {\n const query = buildQueryString(params);\n return this.request<FootballInjury>(\n `${FOOTBALL_ENDPOINTS.INJURIES}${query}`,\n );\n }\n}\n\n/**\n * Factory function to create an ApiFootballClient instance\n *\n * @param networkClient - NetworkClient instance for making HTTP requests\n * @param config - API configuration including API key\n * @returns New ApiFootballClient instance\n *\n * @example\n * ```typescript\n * const client = createApiFootballClient(networkClient, {\n * apiKey: \"YOUR_API_KEY\",\n * });\n * ```\n */\nexport const createApiFootballClient = (\n networkClient: NetworkClient,\n config: ApiFootballConfig,\n): ApiFootballClient => {\n return new ApiFootballClient(networkClient, config);\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/football/network/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/football/network/index.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,sBAAsB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/football/network/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/football/network/index.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,sBAAsB,CAAC","sourcesContent":["/**\n * @fileoverview Network module exports for API-Football.\n *\n * Exports the API client class, factory function, endpoint definitions,\n * and default configuration constants.\n */\n\nexport {\n ApiFootballClient,\n createApiFootballClient,\n} from \"./api-football-client\";\nexport {\n FOOTBALL_API_BASE_URL,\n FOOTBALL_RAPIDAPI_HOST,\n FOOTBALL_ENDPOINTS,\n FOOTBALL_DEFAULT_HEADERS,\n} from \"./football-endpoints\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/football/store/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/football/store/index.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,sBAAsB,EACtB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,GACtB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,KAAK,UAAU,EACf,KAAK,cAAc,GACpB,MAAM,yBAAyB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/football/store/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/football/store/index.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,sBAAsB,GAGvB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,oBAAoB,GAGrB,MAAM,yBAAyB,CAAC","sourcesContent":["/**\n * @fileoverview Store module exports.\n *\n * Re-exports the API-Football Zustand store factory and cache utilities.\n * Cache utilities from utils/cache-utils.ts are re-exported here for\n * convenience, as they are the primary way consumers access cache functions.\n */\n\nexport {\n createApiFootballStore,\n type ApiFootballState,\n type ApiFootballStore,\n} from \"./api-football-store\";\n\nexport {\n DEFAULT_CACHE_TTL,\n createCacheEntry,\n isCacheValid,\n getRemainingTTL,\n generateCacheKey,\n createStorageAdapter,\n type CachedData,\n type StorageAdapter,\n} from \"../../utils/cache-utils\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC","sourcesContent":["/**\n * @fileoverview Utility module exports.\n *\n * Provides shared utility functions for building URL query parameters.\n * Note: Cache utilities (generateCacheKey, isCacheValid, createCacheEntry, etc.)\n * are located in cache-utils.ts but are re-exported through individual sport\n * store barrel exports (e.g., football/store/index.ts), not from here.\n */\n\nexport { createQueryParams, buildQueryString } from \"./query-params\";\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sudobility/sports_api_client",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.19",
|
|
4
4
|
"description": "React and React Native compatible client library for API-Football v3 with TypeScript support",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -39,8 +39,8 @@
|
|
|
39
39
|
"author": "Sudobility Team",
|
|
40
40
|
"license": "BUSL-1.1",
|
|
41
41
|
"peerDependencies": {
|
|
42
|
-
"@sudobility/di": "^1.5.
|
|
43
|
-
"@sudobility/types": "^1.9.
|
|
42
|
+
"@sudobility/di": "^1.5.39",
|
|
43
|
+
"@sudobility/types": "^1.9.54",
|
|
44
44
|
"@tanstack/react-query": ">=5.0.0",
|
|
45
45
|
"react": ">=18.0.0",
|
|
46
46
|
"zustand": "^5.0.0"
|
|
@@ -48,8 +48,8 @@
|
|
|
48
48
|
"devDependencies": {
|
|
49
49
|
"@eslint/js": "^9.39.2",
|
|
50
50
|
"@sudobility/configs": "^0.0.65",
|
|
51
|
-
"@sudobility/di": "^1.5.
|
|
52
|
-
"@sudobility/types": "^1.9.
|
|
51
|
+
"@sudobility/di": "^1.5.39",
|
|
52
|
+
"@sudobility/types": "^1.9.54",
|
|
53
53
|
"@tanstack/react-query": "^5.90.5",
|
|
54
54
|
"@types/node": "^24.9.1",
|
|
55
55
|
"@types/react": "^19.2.2",
|