Exact source used by this build. SHA-256: 99d04e54485392ad760cc1cef4020881e1814b1b1f98572190295d30717e7204.

1 import json from "../../../data/skills/skills.json";
2 import { SkillsContentSchema } from "./schema";
3 import type { ContentDomain } from "../types";
4 export * from "./schema";
5 export const SKILLS_CONTENT = SkillsContentSchema.parse(json);
6 export function validateSkillContent(value: unknown): void {
7   const data = SkillsContentSchema.parse(value);
8   if (new Set(data.skills.map((entry) => entry.id)).size !== 5) throw new Error("Skill ids must be unique");
9   if (new Set(data.professions.map((entry) => entry.id)).size !== data.professions.length) throw new Error("Profession ids must be unique");
10   if (data.xpTable.some((xp, index) => index > 0 && xp <= data.xpTable[index - 1]!)) throw new Error("XP thresholds must increase");
11   for (const profession of data.professions) {
12     const parent = data.professions.find((entry) => entry.id === profession.parentId);
13     if (profession.level === 10 && (!parent || parent.level !== 5 || parent.skill !== profession.skill)) throw new Error(`Invalid parent profession ${profession.parentId}`);
14     if (profession.level === 5 && profession.parentId !== null) throw new Error("Level 5 profession cannot have a parent");
15   }
16 }
17 export const skillsDomain: ContentDomain = { id: "skills", data: SKILLS_CONTENT, validate() { validateSkillContent(json); } };
18 skillsDomain.validate();
19