UNPKG

openf1-hooks

Version:

React Query hooks for the OpenF1 API

1 lines 19.9 kB
{"version":3,"sources":["../src/hooks/useCarData.ts","../src/client.ts","../src/hooks/useDrivers.ts","../src/hooks/useIntervals.ts","../src/hooks/useLaps.ts","../src/hooks/useLocation.ts","../src/hooks/useMeetings.ts","../src/hooks/usePit.ts","../src/hooks/usePosition.ts","../src/hooks/useRaceControl.ts","../src/hooks/useSessions.ts","../src/hooks/useStints.ts","../src/hooks/useTeamRadio.ts","../src/hooks/useWeather.ts"],"sourcesContent":["import { useQuery, UseQueryOptions, QueryKey } from '@tanstack/react-query';\nimport { fetchData } from '../client';\nimport { CarData, CarDataParams } from '../types';\n\n// Define the query key generator\nconst getCarDataQueryKey = (params?: CarDataParams): QueryKey => [\n 'carData',\n params,\n];\n\n/**\n * Custom hook to fetch car data from the OpenF1 API.\n *\n * @param params - Optional parameters to filter the car data (conforms to CarDataParams).\n * @param options - Optional React Query options.\n * @returns The result of the useQuery hook.\n */\nexport const useCarData = (\n params?: CarDataParams,\n options?: Omit<\n UseQueryOptions<CarData[], Error, CarData[], QueryKey>,\n 'queryKey' | 'queryFn'\n >\n) => {\n const queryKey = getCarDataQueryKey(params);\n\n return useQuery<CarData[], Error, CarData[], QueryKey>({\n queryKey: queryKey,\n queryFn: () => fetchData<CarData[]>('/car_data', params),\n ...options, // Spread the rest of the options\n });\n};\n","import { BaseParams } from './types';\n\nconst API_BASE_URL = 'https://api.openf1.org/v1';\n\n/**\n * Cleans up parameters by removing undefined or null values.\n */\nconst cleanParams = (params: Record<string, any>): Record<string, string> => {\n const cleaned: Record<string, string> = {};\n for (const key in params) {\n if (params[key] !== undefined && params[key] !== null) {\n cleaned[key] = String(params[key]);\n }\n }\n return cleaned;\n};\n\n/**\n * Generic function to fetch data from the OpenF1 API using fetch.\n * @param endpoint The API endpoint path (e.g., '/car_data')\n * @param params Optional query parameters for filtering\n * @returns Promise resolving to the fetched data\n */\nexport const fetchData = async <T>(\n endpoint: string,\n params?: BaseParams\n): Promise<T> => {\n const url = new URL(`${API_BASE_URL}${endpoint}`);\n\n if (params) {\n // Clean params and append them to the URL\n const cleaned = cleanParams(params);\n url.search = new URLSearchParams(cleaned).toString();\n }\n\n try {\n const response = await fetch(url.toString());\n\n // Check for HTTP errors (fetch doesn't throw on 4xx/5xx)\n if (!response.ok) {\n let errorData: any = null;\n try {\n // Try to parse error response body\n errorData = await response.json();\n } catch (jsonError) {\n // Ignore if response body is not valid JSON\n }\n console.error(\n `API error fetching ${endpoint}: Status ${response.status} ${response.statusText}`,\n errorData\n );\n throw new Error(\n errorData?.message ||\n `HTTP error ${response.status}: ${response.statusText}` ||\n 'An unknown API error occurred'\n );\n }\n\n // Parse the JSON response body\n const data: T = await response.json();\n return data;\n } catch (error) {\n // Handle network errors or errors thrown above\n if (error instanceof Error) {\n console.error(`Error fetching ${endpoint}:`, error.message);\n // Re-throw the existing error or a generic one\n throw error;\n } else {\n // Handle unexpected non-Error throws\n console.error(`Unexpected error fetching ${endpoint}:`, error);\n throw new Error('An unexpected error occurred during fetch');\n }\n }\n};\n","import { useQuery, UseQueryOptions, QueryKey } from '@tanstack/react-query';\nimport { fetchData } from '../client';\nimport { Driver, DriversParams } from '../types';\n\n// Define the query key generator\nconst getDriversQueryKey = (params?: DriversParams): QueryKey => [\n 'drivers',\n params,\n];\n\n/**\n * Custom hook to fetch driver data from the OpenF1 API.\n *\n * @param params - Optional parameters to filter the driver data (conforms to DriversParams).\n * @param options - Optional React Query options.\n * @returns The result of the useQuery hook.\n */\nexport const useDrivers = (\n params?: DriversParams,\n options?: Omit<\n UseQueryOptions<Driver[], Error, Driver[], QueryKey>,\n 'queryKey' | 'queryFn'\n >\n) => {\n const queryKey = getDriversQueryKey(params);\n\n return useQuery<Driver[], Error, Driver[], QueryKey>({\n queryKey: queryKey,\n queryFn: () => fetchData<Driver[]>('/drivers', params),\n ...options,\n });\n};\n","import { useQuery, UseQueryOptions, QueryKey } from '@tanstack/react-query';\nimport { fetchData } from '../client';\nimport { Interval, IntervalsParams } from '../types';\n\n// Define the query key generator\nconst getIntervalsQueryKey = (params?: IntervalsParams): QueryKey => [\n 'intervals',\n params,\n];\n\n/**\n * Custom hook to fetch interval data from the OpenF1 API.\n *\n * @param params - Optional parameters to filter the interval data (conforms to IntervalsParams).\n * @param options - Optional React Query options.\n * @returns The result of the useQuery hook.\n */\nexport const useIntervals = (\n params?: IntervalsParams,\n options?: Omit<\n UseQueryOptions<Interval[], Error, Interval[], QueryKey>,\n 'queryKey' | 'queryFn'\n >\n) => {\n const queryKey = getIntervalsQueryKey(params);\n\n return useQuery<Interval[], Error, Interval[], QueryKey>({\n queryKey: queryKey,\n queryFn: () => fetchData<Interval[]>('/intervals', params),\n ...options,\n });\n};\n","import { useQuery, UseQueryOptions, QueryKey } from '@tanstack/react-query';\nimport { fetchData } from '../client';\nimport { Lap, LapsParams } from '../types';\n\n// Define the query key generator\nconst getLapsQueryKey = (params?: LapsParams): QueryKey => ['laps', params];\n\n/**\n * Custom hook to fetch lap data from the OpenF1 API.\n *\n * @param params - Optional parameters to filter the lap data (conforms to LapsParams).\n * @param options - Optional React Query options.\n * @returns The result of the useQuery hook.\n */\nexport const useLaps = (\n params?: LapsParams,\n options?: Omit<\n UseQueryOptions<Lap[], Error, Lap[], QueryKey>,\n 'queryKey' | 'queryFn'\n >\n) => {\n const queryKey = getLapsQueryKey(params);\n\n return useQuery<Lap[], Error, Lap[], QueryKey>({\n queryKey: queryKey,\n queryFn: () => fetchData<Lap[]>('/laps', params),\n ...options,\n });\n};\n","import { useQuery, UseQueryOptions, QueryKey } from '@tanstack/react-query';\nimport { fetchData } from '../client';\nimport { Location, LocationParams } from '../types';\n\n// Define the query key generator\nconst getLocationQueryKey = (params?: LocationParams): QueryKey => [\n 'location',\n params,\n];\n\n/**\n * Custom hook to fetch location data (car positions) from the OpenF1 API.\n *\n * @param params - Optional parameters to filter the location data (conforms to LocationParams).\n * @param options - Optional React Query options.\n * @returns The result of the useQuery hook.\n */\nexport const useLocation = (\n params?: LocationParams,\n options?: Omit<\n UseQueryOptions<Location[], Error, Location[], QueryKey>,\n 'queryKey' | 'queryFn'\n >\n) => {\n const queryKey = getLocationQueryKey(params);\n\n return useQuery<Location[], Error, Location[], QueryKey>({\n queryKey: queryKey,\n queryFn: () => fetchData<Location[]>('/location', params),\n ...options,\n });\n};\n","import { useQuery, UseQueryOptions, QueryKey } from '@tanstack/react-query';\nimport { fetchData } from '../client';\nimport { Meeting, MeetingsParams } from '../types';\n\n// Define the query key generator\nconst getMeetingsQueryKey = (params?: MeetingsParams): QueryKey => [\n 'meetings',\n params,\n];\n\n/**\n * Custom hook to fetch meeting data (Grand Prix events) from the OpenF1 API.\n *\n * @param params - Optional parameters to filter the meeting data (conforms to MeetingsParams).\n * @param options - Optional React Query options.\n * @returns The result of the useQuery hook.\n */\nexport const useMeetings = (\n params?: MeetingsParams,\n options?: Omit<\n UseQueryOptions<Meeting[], Error, Meeting[], QueryKey>,\n 'queryKey' | 'queryFn'\n >\n) => {\n const queryKey = getMeetingsQueryKey(params);\n\n return useQuery<Meeting[], Error, Meeting[], QueryKey>({\n queryKey: queryKey,\n queryFn: () => fetchData<Meeting[]>('/meetings', params),\n ...options,\n });\n};\n","import { useQuery, UseQueryOptions, QueryKey } from '@tanstack/react-query';\nimport { fetchData } from '../client';\nimport { Pit, PitParams } from '../types';\n\n// Define the query key generator\nconst getPitQueryKey = (params?: PitParams): QueryKey => ['pit', params];\n\n/**\n * Custom hook to fetch pit stop data from the OpenF1 API.\n *\n * @param params - Optional parameters to filter the pit stop data (conforms to PitParams).\n * @param options - Optional React Query options.\n * @returns The result of the useQuery hook.\n */\nexport const usePit = (\n params?: PitParams,\n options?: Omit<\n UseQueryOptions<Pit[], Error, Pit[], QueryKey>,\n 'queryKey' | 'queryFn'\n >\n) => {\n const queryKey = getPitQueryKey(params);\n\n return useQuery<Pit[], Error, Pit[], QueryKey>({\n queryKey: queryKey,\n queryFn: () => fetchData<Pit[]>('/pit', params),\n ...options,\n });\n};\n","import { useQuery, UseQueryOptions, QueryKey } from '@tanstack/react-query';\nimport { fetchData } from '../client';\nimport { Position, PositionParams } from '../types';\n\n// Define the query key generator\nconst getPositionQueryKey = (params?: PositionParams): QueryKey => [\n 'position',\n params,\n];\n\n/**\n * Custom hook to fetch position data from the OpenF1 API.\n *\n * @param params - Optional parameters to filter the position data (conforms to PositionParams).\n * @param options - Optional React Query options.\n * @returns The result of the useQuery hook.\n */\nexport const usePosition = (\n params?: PositionParams,\n options?: Omit<\n UseQueryOptions<Position[], Error, Position[], QueryKey>,\n 'queryKey' | 'queryFn'\n >\n) => {\n const queryKey = getPositionQueryKey(params);\n\n return useQuery<Position[], Error, Position[], QueryKey>({\n queryKey: queryKey,\n queryFn: () => fetchData<Position[]>('/position', params),\n ...options,\n });\n};\n","import { useQuery, UseQueryOptions, QueryKey } from '@tanstack/react-query';\nimport { fetchData } from '../client';\nimport { RaceControl, RaceControlParams } from '../types';\n\n// Define the query key generator\nconst getRaceControlQueryKey = (params?: RaceControlParams): QueryKey => [\n 'raceControl',\n params,\n];\n\n/**\n * Custom hook to fetch race control messages from the OpenF1 API.\n *\n * @param params - Optional parameters to filter the race control messages (conforms to RaceControlParams).\n * @param options - Optional React Query options.\n * @returns The result of the useQuery hook.\n */\nexport const useRaceControl = (\n params?: RaceControlParams,\n options?: Omit<\n UseQueryOptions<RaceControl[], Error, RaceControl[], QueryKey>,\n 'queryKey' | 'queryFn'\n >\n) => {\n const queryKey = getRaceControlQueryKey(params);\n\n return useQuery<RaceControl[], Error, RaceControl[], QueryKey>({\n queryKey: queryKey,\n queryFn: () => fetchData<RaceControl[]>('/race_control', params),\n ...options,\n });\n};\n","import { useQuery, UseQueryOptions, QueryKey } from '@tanstack/react-query';\nimport { fetchData } from '../client';\nimport { Session, SessionsParams } from '../types';\n\n// Define the query key generator\nconst getSessionsQueryKey = (params?: SessionsParams): QueryKey => [\n 'sessions',\n params,\n];\n\n/**\n * Custom hook to fetch session data from the OpenF1 API.\n *\n * @param params - Optional parameters to filter the session data (conforms to SessionsParams).\n * @param options - Optional React Query options.\n * @returns The result of the useQuery hook.\n */\nexport const useSessions = (\n params?: SessionsParams,\n options?: Omit<\n UseQueryOptions<Session[], Error, Session[], QueryKey>,\n 'queryKey' | 'queryFn'\n >\n) => {\n const queryKey = getSessionsQueryKey(params);\n\n return useQuery<Session[], Error, Session[], QueryKey>({\n queryKey: queryKey,\n queryFn: () => fetchData<Session[]>('/sessions', params),\n ...options,\n });\n};\n","import { useQuery, UseQueryOptions, QueryKey } from '@tanstack/react-query';\nimport { fetchData } from '../client';\nimport { Stint, StintsParams } from '../types';\n\n// Define the query key generator\nconst getStintsQueryKey = (params?: StintsParams): QueryKey => [\n 'stints',\n params,\n];\n\n/**\n * Custom hook to fetch stint data from the OpenF1 API.\n *\n * @param params - Optional parameters to filter the stint data (conforms to StintsParams).\n * @param options - Optional React Query options.\n * @returns The result of the useQuery hook.\n */\nexport const useStints = (\n params?: StintsParams,\n options?: Omit<\n UseQueryOptions<Stint[], Error, Stint[], QueryKey>,\n 'queryKey' | 'queryFn'\n >\n) => {\n const queryKey = getStintsQueryKey(params);\n\n return useQuery<Stint[], Error, Stint[], QueryKey>({\n queryKey: queryKey,\n queryFn: () => fetchData<Stint[]>('/stints', params),\n ...options,\n });\n};\n","import { useQuery, UseQueryOptions, QueryKey } from '@tanstack/react-query';\nimport { fetchData } from '../client';\nimport { TeamRadio, TeamRadioParams } from '../types';\n\n// Define the query key generator\nconst getTeamRadioQueryKey = (params?: TeamRadioParams): QueryKey => [\n 'teamRadio',\n params,\n];\n\n/**\n * Custom hook to fetch team radio data from the OpenF1 API.\n *\n * @param params - Optional parameters to filter the team radio data (conforms to TeamRadioParams).\n * @param options - Optional React Query options.\n * @returns The result of the useQuery hook.\n */\nexport const useTeamRadio = (\n params?: TeamRadioParams,\n options?: Omit<\n UseQueryOptions<TeamRadio[], Error, TeamRadio[], QueryKey>,\n 'queryKey' | 'queryFn'\n >\n) => {\n const queryKey = getTeamRadioQueryKey(params);\n\n return useQuery<TeamRadio[], Error, TeamRadio[], QueryKey>({\n queryKey: queryKey,\n queryFn: () => fetchData<TeamRadio[]>('/team_radio', params),\n ...options,\n });\n};\n","import { useQuery, UseQueryOptions, QueryKey } from '@tanstack/react-query';\nimport { fetchData } from '../client';\nimport { Weather, WeatherParams } from '../types';\n\n// Define the query key generator\nconst getWeatherQueryKey = (params?: WeatherParams): QueryKey => [\n 'weather',\n params,\n];\n\n/**\n * Custom hook to fetch weather data from the OpenF1 API.\n *\n * @param params - Optional parameters to filter the weather data (conforms to WeatherParams).\n * @param options - Optional React Query options.\n * @returns The result of the useQuery hook.\n */\nexport const useWeather = (\n params?: WeatherParams,\n options?: Omit<\n UseQueryOptions<Weather[], Error, Weather[], QueryKey>,\n 'queryKey' | 'queryFn'\n >\n) => {\n const queryKey = getWeatherQueryKey(params);\n\n return useQuery<Weather[], Error, Weather[], QueryKey>({\n queryKey: queryKey,\n queryFn: () => fetchData<Weather[]>('/weather', params),\n ...options,\n });\n};\n"],"mappings":"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","names":["useQuery","useQuery","useQuery","useQuery","useQuery","useQuery","useQuery","useQuery","useQuery","useQuery","useQuery","useQuery","useQuery","useQuery","useQuery","useQuery","useQuery","useQuery","useQuery","useQuery","useQuery","useQuery","useQuery","useQuery"]}