UNPKG

openf1-hooks

Version:

React Query hooks for the OpenF1 API

292 lines (276 loc) 7.93 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/index.ts var index_exports = {}; __export(index_exports, { useCarData: () => useCarData, useDrivers: () => useDrivers, useIntervals: () => useIntervals, useLaps: () => useLaps, useLocation: () => useLocation, useMeetings: () => useMeetings, usePit: () => usePit, usePosition: () => usePosition, useRaceControl: () => useRaceControl, useSessions: () => useSessions, useStints: () => useStints, useTeamRadio: () => useTeamRadio, useWeather: () => useWeather }); module.exports = __toCommonJS(index_exports); // src/hooks/useCarData.ts var import_react_query = require("@tanstack/react-query"); // src/client.ts var API_BASE_URL = "https://api.openf1.org/v1"; var cleanParams = (params) => { const cleaned = {}; for (const key in params) { if (params[key] !== void 0 && params[key] !== null) { cleaned[key] = String(params[key]); } } return cleaned; }; var fetchData = async (endpoint, params) => { const url = new URL(`${API_BASE_URL}${endpoint}`); if (params) { const cleaned = cleanParams(params); url.search = new URLSearchParams(cleaned).toString(); } try { const response = await fetch(url.toString()); if (!response.ok) { let errorData = null; try { errorData = await response.json(); } catch (jsonError) { } console.error( `API error fetching ${endpoint}: Status ${response.status} ${response.statusText}`, errorData ); throw new Error( errorData?.message || `HTTP error ${response.status}: ${response.statusText}` || "An unknown API error occurred" ); } const data = await response.json(); return data; } catch (error) { if (error instanceof Error) { console.error(`Error fetching ${endpoint}:`, error.message); throw error; } else { console.error(`Unexpected error fetching ${endpoint}:`, error); throw new Error("An unexpected error occurred during fetch"); } } }; // src/hooks/useCarData.ts var getCarDataQueryKey = (params) => [ "carData", params ]; var useCarData = (params, options) => { const queryKey = getCarDataQueryKey(params); return (0, import_react_query.useQuery)({ queryKey, queryFn: () => fetchData("/car_data", params), ...options // Spread the rest of the options }); }; // src/hooks/useDrivers.ts var import_react_query2 = require("@tanstack/react-query"); var getDriversQueryKey = (params) => [ "drivers", params ]; var useDrivers = (params, options) => { const queryKey = getDriversQueryKey(params); return (0, import_react_query2.useQuery)({ queryKey, queryFn: () => fetchData("/drivers", params), ...options }); }; // src/hooks/useIntervals.ts var import_react_query3 = require("@tanstack/react-query"); var getIntervalsQueryKey = (params) => [ "intervals", params ]; var useIntervals = (params, options) => { const queryKey = getIntervalsQueryKey(params); return (0, import_react_query3.useQuery)({ queryKey, queryFn: () => fetchData("/intervals", params), ...options }); }; // src/hooks/useLaps.ts var import_react_query4 = require("@tanstack/react-query"); var getLapsQueryKey = (params) => ["laps", params]; var useLaps = (params, options) => { const queryKey = getLapsQueryKey(params); return (0, import_react_query4.useQuery)({ queryKey, queryFn: () => fetchData("/laps", params), ...options }); }; // src/hooks/useLocation.ts var import_react_query5 = require("@tanstack/react-query"); var getLocationQueryKey = (params) => [ "location", params ]; var useLocation = (params, options) => { const queryKey = getLocationQueryKey(params); return (0, import_react_query5.useQuery)({ queryKey, queryFn: () => fetchData("/location", params), ...options }); }; // src/hooks/useMeetings.ts var import_react_query6 = require("@tanstack/react-query"); var getMeetingsQueryKey = (params) => [ "meetings", params ]; var useMeetings = (params, options) => { const queryKey = getMeetingsQueryKey(params); return (0, import_react_query6.useQuery)({ queryKey, queryFn: () => fetchData("/meetings", params), ...options }); }; // src/hooks/usePit.ts var import_react_query7 = require("@tanstack/react-query"); var getPitQueryKey = (params) => ["pit", params]; var usePit = (params, options) => { const queryKey = getPitQueryKey(params); return (0, import_react_query7.useQuery)({ queryKey, queryFn: () => fetchData("/pit", params), ...options }); }; // src/hooks/usePosition.ts var import_react_query8 = require("@tanstack/react-query"); var getPositionQueryKey = (params) => [ "position", params ]; var usePosition = (params, options) => { const queryKey = getPositionQueryKey(params); return (0, import_react_query8.useQuery)({ queryKey, queryFn: () => fetchData("/position", params), ...options }); }; // src/hooks/useRaceControl.ts var import_react_query9 = require("@tanstack/react-query"); var getRaceControlQueryKey = (params) => [ "raceControl", params ]; var useRaceControl = (params, options) => { const queryKey = getRaceControlQueryKey(params); return (0, import_react_query9.useQuery)({ queryKey, queryFn: () => fetchData("/race_control", params), ...options }); }; // src/hooks/useSessions.ts var import_react_query10 = require("@tanstack/react-query"); var getSessionsQueryKey = (params) => [ "sessions", params ]; var useSessions = (params, options) => { const queryKey = getSessionsQueryKey(params); return (0, import_react_query10.useQuery)({ queryKey, queryFn: () => fetchData("/sessions", params), ...options }); }; // src/hooks/useStints.ts var import_react_query11 = require("@tanstack/react-query"); var getStintsQueryKey = (params) => [ "stints", params ]; var useStints = (params, options) => { const queryKey = getStintsQueryKey(params); return (0, import_react_query11.useQuery)({ queryKey, queryFn: () => fetchData("/stints", params), ...options }); }; // src/hooks/useTeamRadio.ts var import_react_query12 = require("@tanstack/react-query"); var getTeamRadioQueryKey = (params) => [ "teamRadio", params ]; var useTeamRadio = (params, options) => { const queryKey = getTeamRadioQueryKey(params); return (0, import_react_query12.useQuery)({ queryKey, queryFn: () => fetchData("/team_radio", params), ...options }); }; // src/hooks/useWeather.ts var import_react_query13 = require("@tanstack/react-query"); var getWeatherQueryKey = (params) => [ "weather", params ]; var useWeather = (params, options) => { const queryKey = getWeatherQueryKey(params); return (0, import_react_query13.useQuery)({ queryKey, queryFn: () => fetchData("/weather", params), ...options }); }; // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { useCarData, useDrivers, useIntervals, useLaps, useLocation, useMeetings, usePit, usePosition, useRaceControl, useSessions, useStints, useTeamRadio, useWeather }); //# sourceMappingURL=index.js.map