UNPKG

iracing-api

Version:

Javascript client for iracing API

142 lines (141 loc) 5 kB
import * as z from 'zod'; import { CarTypeSchema, CategorySchema, EligSchema, EventTypeSchema, FarmSchema, HostSchema, LicenseGroupTypeSchema, SessionTypeSchema, TrackStateSchema, TrackTypeEnumSchema, WeatherSchema, } from './common'; export const TrackTypeElementSchema = z.object({ trackType: TrackTypeEnumSchema, }); export const HostedTrackSchema = z.object({ configName: z.union([z.null(), z.string()]).optional(), trackId: z.number(), trackName: z.string(), }); export const HostedCarSchema = 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 HostedSessionSchema = z.object({ 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.any()), allowedTeams: z.array(z.any()), altAssetId: z.union([z.number(), z.null()]).optional(), carTypes: z.array(CarTypeSchema), cars: z.array(HostedCarSchema), carsLeft: z.number(), category: CategorySchema, categoryId: 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(), entryCount: z.number(), eventTypes: z.array(EventTypeSchema), farm: FarmSchema, fixedSetup: z.boolean(), fullCourseCautions: z.boolean(), greenWhiteCheckeredLimit: z.number(), hardcoreLevel: z.number(), host: HostSchema, incidentLimit: z.number(), incidentWarnMode: z.number(), incidentWarnParam1: z.number(), incidentWarnParam2: z.number(), launchAt: z.string(), leagueId: z.number(), leagueSeasonId: z.number(), 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(), minIr: z.number(), minLicenseLevel: z.number(), minTeamDrivers: z.number(), multiclassType: z.number(), mustUseDiffTireTypesInRace: z.boolean(), noLapperWaveArounds: z.boolean(), numFastTows: z.number(), numOptLaps: z.number(), openRegExpires: z.string(), orderId: z.number(), paceCarClassId: z.union([z.number(), z.null()]), paceCarId: z.union([z.number(), z.null()]), passwordProtected: z.boolean(), pitsInUse: z.number(), practiceLength: z.number(), privateSessionId: z.number(), qualifierMustStartRace: z.boolean(), qualifyLaps: z.number(), qualifyLength: z.number(), raceLaps: z.number(), raceLength: z.number(), registeredTeams: z.union([z.array(z.number()), z.null()]).optional(), 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: HostedTrackSchema, trackState: TrackStateSchema, trackTypes: z.array(TrackTypeElementSchema), unsportConductRuleMode: z.number(), warmupLength: z.number(), weather: WeatherSchema, }); export const HostedSessionsSchema = z.object({ subscribed: z.boolean(), sessions: z.array(HostedSessionSchema), success: z.boolean(), }); export const FriendSchema = z.object({ custId: z.number(), displayName: z.string(), }); export const HostedCombinedSessionsSchema = z.object({ subscribed: z.boolean(), sequence: z.number(), sessions: z.array(HostedSessionSchema), success: z.boolean(), }); // Params export const GetHostedCombinedSessionsParamsSchema = z.object({ packageId: z.number().optional(), });