Files
paseo/packages/server/scripts/generate-config-schema.ts
2026-06-18 15:02:42 +08:00

28 lines
827 B
TypeScript

import { fileURLToPath } from "node:url";
import path from "node:path";
import fs from "node:fs";
import { z } from "zod";
import { PersistedConfigSchema } from "../src/server/persisted-config.js";
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
function main() {
const repoRoot = path.resolve(__dirname, "../../..");
const outPath = path.join(repoRoot, "packages/website/public/schemas/paseo.config.v1.json");
fs.mkdirSync(path.dirname(outPath), { recursive: true });
const schema = z.toJSONSchema(PersistedConfigSchema, {
target: "draft-07",
unrepresentable: "any",
io: "input",
});
schema.title = "PaseoConfigV1";
fs.writeFileSync(outPath, JSON.stringify(schema, null, 2) + "\n", "utf8");
process.stdout.write(`Wrote ${outPath}\n`);
}
main();