|
1 | 1 | import path from "node:path"; |
2 | 2 | import { z } from "zod/v4"; |
3 | | -// import { jsonCollection } from "../src/json-collection.js"; |
4 | | -import { characterDocument } from "../src/models/doc-character.js"; |
5 | | -import { campaignRuleset } from "../src/models/ruleset-campaign.js"; |
6 | | -import { coreRuleset } from "../src/models/ruleset-core.js"; |
| 3 | +import { campaign } from "../src/models/campaign.js"; |
| 4 | +import { character } from "../src/models/character.js"; |
| 5 | +import { ruleset } from "../src/models/ruleset.js"; |
7 | 6 |
|
8 | | -const characterDocumentSchema = z.toJSONSchema(characterDocument, { |
9 | | - reused: "ref", |
10 | | -}); |
11 | | -const campaignRulesetSchema = z.toJSONSchema(campaignRuleset, { |
12 | | - reused: "ref", |
13 | | -}); |
14 | | -const coreRulesetSchema = z.toJSONSchema(coreRuleset, { reused: "ref" }); |
15 | | - |
16 | | -const defaultSchema = z.toJSONSchema(z.globalRegistry, { |
17 | | - target: "draft-2020-12", |
18 | | - unrepresentable: "throw", |
19 | | - cycles: "throw", |
20 | | - reused: "ref", |
21 | | - override(ctx) { |
22 | | - ctx.jsonSchema.$id = ctx.jsonSchema.id; |
| 7 | +// Compose schema data and filenames |
| 8 | +const schemas = [ |
| 9 | + { |
| 10 | + filename: "character.json", |
| 11 | + data: z.toJSONSchema(character, { |
| 12 | + unrepresentable: "throw", |
| 13 | + cycles: "throw", |
| 14 | + reused: "ref", |
| 15 | + override(ctx) { |
| 16 | + ctx.jsonSchema.$id = ctx.jsonSchema.id; |
| 17 | + }, |
| 18 | + }), |
| 19 | + }, |
| 20 | + { |
| 21 | + filename: "campaign.json", |
| 22 | + data: z.toJSONSchema(campaign, { |
| 23 | + unrepresentable: "throw", |
| 24 | + cycles: "throw", |
| 25 | + reused: "ref", |
| 26 | + override(ctx) { |
| 27 | + ctx.jsonSchema.$id = ctx.jsonSchema.id; |
| 28 | + }, |
| 29 | + }), |
23 | 30 | }, |
24 | | -}); |
| 31 | + { |
| 32 | + filename: "ruleset.json", |
| 33 | + data: z.toJSONSchema(ruleset, { |
| 34 | + unrepresentable: "throw", |
| 35 | + cycles: "throw", |
| 36 | + reused: "ref", |
| 37 | + override(ctx) { |
| 38 | + ctx.jsonSchema.$id = ctx.jsonSchema.id; |
| 39 | + }, |
| 40 | + }), |
| 41 | + }, |
| 42 | +]; |
25 | 43 |
|
26 | 44 | /** |
27 | 45 | * Returns the version value from the package.json |
@@ -65,14 +83,6 @@ const generateSchemas = async (): Promise<void> => { |
65 | 83 |
|
66 | 84 | const directory = await useDirectory(version); |
67 | 85 |
|
68 | | - // Compose schema data and filenames |
69 | | - const schemas = [ |
70 | | - { data: characterDocumentSchema, filename: "document-character.json" }, |
71 | | - { data: campaignRulesetSchema, filename: "ruleset-campaign.json" }, |
72 | | - { data: coreRulesetSchema, filename: "ruleset-core.json" }, |
73 | | - { data: defaultSchema, filename: "schema.json" }, |
74 | | - ]; |
75 | | - |
76 | 86 | // Dynamically import fs/promises for ESM compatibility |
77 | 87 | const { writeFile } = await import("node:fs/promises"); |
78 | 88 |
|
|
0 commit comments