A Typescript server emulator for Box Critters, a defunct virtual world.
1import { z } from "zod";
2import parties from "@/constants/parties.json" with { type: "json" };
3
4/*
5 LOGIN API
6*/
7export const login = z.object({
8 nickname: z.string()
9 .transform((s) => s.trim())
10 .pipe(
11 z.string()
12 .min(3, "The nickname must be at least 3 characters long.")
13 .max(25, "The nickname must be less than 25 characters long."),
14 ),
15 critterId: z.enum([
16 "hamster",
17 "beaver",
18 "lizard",
19 "raccoon",
20 "penguin",
21 "snail",
22 "snow_greeter",
23 "snowkeeper",
24 "snowgirl",
25 "snow_patrol",
26 "snowgrandma",
27 "alpha_hamster",
28 ]).default("hamster"),
29 partyId: z.enum([
30 ...Object.keys(parties) as [string, ...string[]],
31 "today2019",
32 "today2020",
33 "today2021",
34 ]).default("default"),
35 persistent: z.boolean().default(false),
36 mods: z.array(z.enum(["roomExits"])).default([]),
37}).strict(); // Strict to disallow extra keys