UNPKG

iracing-api

Version:

Javascript client for iracing API

170 lines (169 loc) 5.3 kB
import * as z from 'zod'; export const CategorySchema = z.enum([ 'dirt_oval', 'dirt_road', 'formula_car', 'oval', 'sports_car', ]); export const CarTypeSchema = z.object({ carType: z.string(), }); export const EligSchema = z.object({ sessionFull: z.boolean(), canSpot: z.boolean(), canWatch: z.boolean(), canDrive: z.boolean(), hasSessPassword: z.boolean(), needsPurchase: z.boolean(), ownCar: z.boolean(), ownTrack: z.boolean(), purchaseSkus: z.array(z.number()), registered: z.boolean(), }); export const EventTypeSchema = z.object({ eventType: z.number(), }); export const FarmSchema = z.object({ farmId: z.number(), displayName: z.string(), imagePath: z.string(), displayed: z.boolean(), }); export const HelmetSchema = z.object({ pattern: z.number(), color1: z.string(), color2: z.string(), color3: z.string(), faceType: z.number(), helmetType: z.number(), }); export const HostSchema = z.object({ custId: z.number(), displayName: z.string(), helmet: HelmetSchema, }); export const LicenseGroupTypeSchema = z.object({ licenseGroupType: z.number(), }); export const SessionTypeSchema = z.object({ sessionType: z.number(), }); export const TrackStateSchema = z.object({ leaveMarbles: z.boolean(), practiceGripCompound: z.number(), practiceRubber: z.number(), qualifyGripCompound: z.number(), qualifyRubber: z.number(), raceGripCompound: z.number(), raceRubber: z.number(), warmupGripCompound: z.number(), warmupRubber: z.number(), }); export const ForecastOptionsSchema = z.object({ forecastType: z.number(), precipitation: z.number(), skies: z.number(), stopPrecip: z.number(), temperature: z.number(), windDir: z.number(), windSpeed: z.number(), }); export const MaxPrecipRateDescSchema = z.enum([ 'Heavy', 'Light', 'Moderate', 'None', ]); export const WeatherSummarySchema = z.object({ maxPrecipRate: z.union([z.number(), z.null()]).optional(), maxPrecipRateDesc: MaxPrecipRateDescSchema, precipChance: z.number(), skiesHigh: z.union([z.number(), z.null()]).optional(), skiesLow: z.union([z.number(), z.null()]).optional(), tempHigh: z.union([z.number(), z.null()]).optional(), tempLow: z.union([z.number(), z.null()]).optional(), tempUnits: z.union([z.number(), z.null()]).optional(), windHigh: z.union([z.number(), z.null()]).optional(), windLow: z.union([z.number(), z.null()]).optional(), windUnits: z.union([z.number(), z.null()]).optional(), }); export const WeatherSchema = z.object({ allowFog: z.boolean(), fog: z.number(), forecastOptions: z.union([ForecastOptionsSchema, z.null()]).optional(), humidityUnits: z.number(), precipOption: z.number(), relHumidity: z.number(), simulatedStartTime: z.string(), simulatedStartUtcTime: z.string(), simulatedTimeMultiplier: z.number(), simulatedTimeOffsets: z.array(z.number()), skies: z.number(), tempUnits: z.number(), tempValue: z.number(), timeOfDay: z.number(), trackWater: z.union([z.number(), z.null()]).optional(), type: z.number(), version: z.number(), weatherSummary: z.union([WeatherSummarySchema, z.null()]).optional(), weatherUrl: z.union([z.string(), z.null()]).optional(), weatherVarInitial: z.number(), weatherVarOngoing: z.number(), windDir: z.number(), windUnits: z.number(), windValue: z.number(), }); export const HeatSesInfoSchema = z.object({ consolationDeltaMaxFieldSize: z.number(), consolationDeltaSessionLaps: z.number(), consolationDeltaSessionLengthMinutes: z.number(), consolationFirstMaxFieldSize: z.number(), consolationFirstSessionLaps: z.number(), consolationFirstSessionLengthMinutes: z.number(), consolationNumPositionToInvert: z.number(), consolationNumToConsolation: z.number(), consolationNumToMain: z.number(), consolationRunAlways: z.boolean(), consolationScoresChampPoints: z.boolean(), created: z.string(), custId: z.number(), heatCautionType: z.number(), heatInfoId: z.number(), heatInfoName: z.string(), heatLaps: z.number(), heatLengthMinutes: z.number(), heatMaxFieldSize: z.number(), heatNumFromEachToMain: z.number(), heatNumPositionToInvert: z.number(), heatScoresChampPoints: z.boolean(), heatSessionMinutesEstimate: z.number(), hidden: z.boolean(), mainLaps: z.number(), mainLengthMinutes: z.number(), mainMaxFieldSize: z.number(), mainNumPositionToInvert: z.number(), maxEntrants: z.number(), openPractice: z.boolean(), preMainPracticeLengthMinutes: z.number(), preQualNumToMain: z.number(), preQualPracticeLengthMinutes: z.number(), qualCautionType: z.number(), qualLaps: z.number(), qualLengthMinutes: z.number(), qualNumToMain: z.number(), qualOpenDelaySeconds: z.number(), qualScoresChampPoints: z.boolean(), qualScoring: z.number(), qualStyle: z.number(), raceStyle: z.number(), }); export const TrackTypeEnumSchema = z.enum([ 'dirt_road', 'dirt_oval', 'oval', 'road', ]); export const TrackTypeSchema = z.object({ trackType: TrackTypeEnumSchema, });