45 lines
1.1 KiB
TypeScript
45 lines
1.1 KiB
TypeScript
import { z } from "zod";
|
|
|
|
const intensity = z.enum(["mild", "moderate", "strong"]);
|
|
const confidence = z.enum(["high", "medium", "low"]);
|
|
|
|
export const ratingExplainedSchema = z.object({
|
|
officialRating: z.string(),
|
|
region: z.string(),
|
|
summary: z.string(),
|
|
factors: z.array(
|
|
z.object({
|
|
category: z.enum([
|
|
"violence",
|
|
"language",
|
|
"sexuality",
|
|
"substances",
|
|
"frightening",
|
|
"other",
|
|
]),
|
|
intensity,
|
|
description: z.string(),
|
|
approximateTiming: z.string().optional(),
|
|
confidence: confidence.optional(),
|
|
}),
|
|
),
|
|
borderlineNote: z.string().optional(),
|
|
});
|
|
|
|
export const internationalRatingsSchema = z.object({
|
|
ratings: z.array(
|
|
z.object({
|
|
country: z.string(),
|
|
countryCode: z.string(),
|
|
rating: z.string(),
|
|
descriptors: z.array(z.string()).optional(),
|
|
}),
|
|
),
|
|
discrepancyNote: z.string(),
|
|
strictestCountry: z.string().optional(),
|
|
mostLenientCountry: z.string().optional(),
|
|
});
|
|
|
|
export type RatingExplained = z.infer<typeof ratingExplainedSchema>;
|
|
export type InternationalRatings = z.infer<typeof internationalRatingsSchema>;
|