UNPKG

iracing-api

Version:

Javascript client for iracing API

86 lines (85 loc) 3.52 kB
import * as z from 'zod'; import { CarTypeSchema, CategorySchema } from './common'; export const PriceDisplaySchema = z.string(); export const PaintRuleSchema = z.object({ allowNumberColorChanges: z.union([z.boolean(), z.null()]).optional(), allowNumberFontChanges: z.union([z.boolean(), z.null()]).optional(), color1: z.string(), color2: z.string(), color3: z.string(), numberColor1: z.union([z.string(), z.null()]).optional(), numberColor2: z.union([z.string(), z.null()]).optional(), numberColor3: z.union([z.string(), z.null()]).optional(), numberFont: z.union([z.null(), z.string()]).optional(), paintCarAvailable: z.boolean(), paintWheelAvailable: z.union([z.boolean(), z.null()]).optional(), rimType: z.union([z.string(), z.null()]).optional(), rimTypeAvailable: z.union([z.boolean(), z.null()]).optional(), rulesExplanation: z.string(), sponsor1: z.string(), sponsor1Available: z.boolean(), sponsor2: z.string(), sponsor2Available: z.boolean(), wheelColor: z.union([z.string(), z.null()]).optional(), }); export const PaintRulesSchema = z.intersection(z.object({ restrictCustomPaint: z.union([z.boolean(), z.null()]).optional(), }), z.record(z.string(), PaintRuleSchema)); export const CarSchema = z.object({ aiEnabled: z.boolean(), allowNumberColors: z.boolean(), allowNumberFont: z.boolean(), allowSponsor1: z.boolean(), allowSponsor2: z.boolean(), allowWheelColor: z.boolean(), awardExempt: z.boolean(), carDirpath: z.string(), carId: z.number(), carMake: z.union([z.null(), z.string()]).optional(), carModel: z.union([z.null(), z.string()]).optional(), carName: z.string(), carNameAbbreviated: z.string(), carTypes: z.array(CarTypeSchema), carWeight: z.number(), categories: z.array(CategorySchema), created: z.string(), firstSale: z.string(), forumUrl: z.union([z.null(), z.string()]).optional(), freeWithSubscription: z.boolean(), hasHeadlights: z.boolean(), hasMultipleDryTireTypes: z.boolean(), hasRainCapableTireTypes: z.boolean(), hp: z.number(), isPsPurchasable: z.boolean(), maxPowerAdjustPct: z.number(), maxWeightPenaltyKg: z.number(), minPowerAdjustPct: z.number(), packageId: z.number(), paintRules: z.union([PaintRulesSchema, z.null()]).optional(), patterns: z.number(), price: z.number(), priceDisplay: z.union([PriceDisplaySchema, z.null()]).optional(), rainEnabled: z.boolean(), retired: z.boolean(), searchFilters: z.string(), siteUrl: z.union([z.null(), z.string()]).optional(), sku: z.number(), }); export const CarAssetSchema = z.object({ carId: z.number(), carRules: z.array(z.any()).optional(), detailCopy: z.string().nullable().optional(), detailScreenShotImages: z.string().nullable().optional(), detailTechspecsCopy: z.string().nullable().optional(), folder: z.string().nullable().optional(), galleryImages: z.string().nullable().optional(), galleryPrefix: z.string().nullable().optional(), groupImage: z.string().nullable().optional(), groupName: z.string().nullable().optional(), largeImage: z.string().nullable().optional(), logo: z.string().nullable().optional(), smallImage: z.string().nullable().optional(), sponsorLogo: z.string().nullable().optional(), templatePath: z.string().nullable().optional(), }); export const CarAssetsResponseSchema = z.record(z.string(), CarAssetSchema);