UNPKG

iracing-api

Version:

Javascript client for iracing API

229 lines (228 loc) 7.72 kB
import * as z from 'zod'; import { CarTypeSchema, EligSchema, EventTypeSchema, FarmSchema, HelmetSchema, HostSchema, LicenseGroupTypeSchema, SessionTypeSchema, TrackStateSchema, TrackTypeSchema, WeatherSchema, } from './common'; export const LeagueTrackSchema = z.object({ trackId: z.number(), trackName: z.string(), configName: z.union([z.null(), z.string()]).optional(), }); export const ImageSchema = z.object({ largeLogo: z.union([z.null(), z.string()]), smallLogo: z.string(), }); export const LeagueCarSchema = z.object({ carClassId: z.number(), carClassName: z.string(), carId: z.number(), carName: z.string(), maxDryTireSets: z.number(), maxPctFuelFill: z.number(), packageId: z.number(), powerAdjustPct: z.number(), qualSetupFilename: z.union([z.null(), z.string()]).optional(), qualSetupId: z.union([z.number(), z.null()]).optional(), raceSetupFilename: z.union([z.null(), z.string()]).optional(), raceSetupId: z.union([z.number(), z.null()]).optional(), weightPenaltyKg: z.number(), }); export const SessionSchema = z.object({ admin: z.boolean(), admins: z.array(HostSchema), aiAvoidPlayers: z.boolean(), aiMaxSkill: z.union([z.number(), z.null()]).optional(), aiMinSkill: z.union([z.number(), z.null()]).optional(), aiRosterName: z.union([z.null(), z.string()]).optional(), allowedClubs: z.array(z.any()), allowedLeagues: z.array(z.number()), allowedTeams: z.array(z.any()), availableReservedBroadcasterSlots: z.number(), availableSpectatorSlots: z.number(), broadcaster: z.boolean(), canBroadcast: z.boolean(), canJoin: z.boolean(), canSpot: z.boolean(), canWatch: z.boolean(), carTypes: z.array(CarTypeSchema), cars: z.array(LeagueCarSchema), carsLeft: z.number(), consecCautionsSingleFile: z.boolean(), countByCarClassId: z.record(z.string(), z.number()), countByCarId: z.record(z.string(), z.number()), damageModel: z.number(), disallowVirtualMirror: z.boolean(), doNotCountCautionLaps: z.boolean(), doNotPaintCars: z.boolean(), driverChangeRule: z.number(), driverChanges: z.boolean(), elig: EligSchema, enablePitlaneCollisions: z.boolean(), endTime: z.string(), entryCount: z.number(), eventTypes: z.array(EventTypeSchema), farm: FarmSchema, fixedSetup: z.boolean(), friends: z.array(z.any()), fullCourseCautions: z.boolean(), greenWhiteCheckeredLimit: z.number(), hardcoreLevel: z.number(), host: HostSchema, image: z.union([ImageSchema, z.null()]).optional(), incidentLimit: z.number(), incidentWarnMode: z.number(), incidentWarnParam1: z.number(), incidentWarnParam2: z.number(), isHeatRacing: z.boolean(), launchAt: z.string(), leagueId: z.number(), leagueName: z.string(), leagueSeasonId: z.number(), leagueSeasonName: z.union([z.null(), z.string()]).optional(), licenseGroupTypes: z.array(LicenseGroupTypeSchema), loneQualify: z.boolean(), luckyDog: z.boolean(), maxAiDrivers: z.number(), maxDrivers: z.number(), maxIr: z.number(), maxLicenseLevel: z.number(), maxTeamDrivers: z.number(), maxUsers: z.number(), minIr: z.number(), minLicenseLevel: z.number(), minTeamDrivers: z.number(), multiclassType: z.number(), mustUseDiffTireTypesInRace: z.boolean(), noLapperWaveArounds: z.boolean(), numBroadcasters: z.number(), numDrivers: z.number(), numFastTows: z.number(), numOptLaps: z.number(), numSpectatorSlots: z.number(), numSpectators: z.number(), numSpotters: z.number(), openRegExpires: z.string(), orderId: z.number(), owner: z.boolean(), paceCarClassId: z.null(), paceCarId: z.null(), passwordProtected: z.boolean(), pitsInUse: z.number(), populated: z.boolean(), practiceLength: z.number(), privateSessionId: z.number(), qualifierMustStartRace: z.boolean(), qualifyLaps: z.number(), qualifyLength: z.number(), raceLaps: z.number(), raceLength: z.number(), restarts: z.number(), restrictResults: z.boolean(), restrictViewing: z.boolean(), rollingStarts: z.boolean(), sessionDesc: z.union([z.null(), z.string()]).optional(), sessionFull: z.boolean(), sessionId: z.number(), sessionName: z.string(), sessionType: z.number(), sessionTypes: z.array(SessionTypeSchema), shortParadeLap: z.boolean(), startOnQualTire: z.boolean(), startZone: z.boolean(), status: z.number(), subsessionId: z.number(), teamEntryCount: z.number(), telemetryForceToDisk: z.number(), telemetryRestriction: z.number(), timeLimit: z.number(), track: LeagueTrackSchema, trackState: TrackStateSchema, trackTypes: z.array(TrackTypeSchema), unsportConductRuleMode: z.number(), warmupLength: z.number(), watched: z.array(z.any()), weather: WeatherSchema, }); export const CustLeagueSessionsSchema = z.object({ mine: z.boolean(), sequence: z.number(), sessions: z.array(SessionSchema), subscribed: z.boolean(), success: z.boolean(), }); export const OwnerSchema = z.object({ carNumber: z.null(), custId: z.number(), displayName: z.string(), helmet: HelmetSchema, nickName: z.null(), }); export const ResultsPageSchema = z.object({ about: z.union([z.null(), z.string()]).optional(), created: z.string(), isAdmin: z.boolean(), isMember: z.boolean(), leagueId: z.number(), leagueName: z.string(), owner: OwnerSchema, ownerId: z.number(), pendingApplication: z.boolean(), pendingInvitation: z.boolean(), recruiting: z.boolean(), rosterCount: z.number(), url: z.union([z.null(), z.string()]).optional(), }); export const LeagueDirectorySchema = z.object({ resultsPage: z.array(ResultsPageSchema), success: z.boolean(), lowerbound: z.number(), upperbound: z.number(), rowCount: z.number(), }); // Params export const GetCustLeagueSessionsParamsSchema = z.object({ mine: z.boolean().optional(), packageId: z.number().optional(), }); export const GetLeagueDirectoryParamsSchema = z.object({ lowerbound: z.number().optional(), maximumRosterCount: z.number().optional(), minimumRosterCount: z.number().optional(), order: z.string().optional(), restrictToFriends: z.boolean().optional(), restrictToMember: z.boolean().optional(), restrictToRecruiting: z.boolean().optional(), restrictToWatched: z.boolean().optional(), search: z.string().optional(), sort: z.string().optional(), tag: z.string().optional(), upperbound: z.number().optional(), }); export const GetLeagueDataParamsSchema = z.object({ leagueId: z.number(), includeLicenses: z.boolean().optional(), }); export const GetLeaguePointSystemParamsSchema = z.object({ leagueId: z.number(), seasonId: z.number().optional(), }); export const getLeagueMembershipParamsSchema = z.object({ customerId: z.number().optional(), includeLeague: z.boolean().optional(), }); export const GetLeagueSeasonsParamsSchema = z.object({ leagueId: z.number(), retired: z.boolean().optional(), }); export const GetLeagueSeasonStandingsParamsSchema = z.object({ carClassId: z.number().optional(), carId: z.number().optional(), leagueId: z.number(), seasonId: z.number(), }); export const GetLeagueSeasonSessionsParamsSchema = z.object({ leagueId: z.number(), resultsOnly: z.boolean().optional(), seasonId: z.number(), }); export const GetLeagueRosterParamsSchema = z.object({ leagueId: z.number(), includeLicenses: z.boolean().optional(), });