Files
kooltab-backoffice/packages/shared/scripts/json-schema.ts
T
brammie15 314717ba3a
CI / build-and-test (push) Canceled after 0s
feat: move to V2
2026-10-29 11:21:52 +01:00

25 lines
1.1 KiB
TypeScript

/** Writes the terminal protocol as JSON Schema, for generating the app's models. */
import { mkdirSync, writeFileSync } from 'fs';
import { join } from 'path';
import { z } from 'zod';
import {
imageUploadResponseSchema, registerTerminalRequestSchema, registerTerminalResponseSchema, syncRequestSchema,
syncResponseSchema, terminalEventSchema,
} from '../src/terminal';
const schemas = {
TerminalEvent: [terminalEventSchema, 'input'],
RegisterTerminalRequest: [registerTerminalRequestSchema, 'input'],
RegisterTerminalResponse: [registerTerminalResponseSchema, 'output'],
SyncRequest: [syncRequestSchema, 'input'],
SyncResponse: [syncResponseSchema, 'output'],
ImageUploadResponse: [imageUploadResponseSchema, 'output'],
} as const;
const out = join(__dirname, '..', 'schema');
mkdirSync(out, { recursive: true });
for (const [name, [schema, io]] of Object.entries(schemas)) {
writeFileSync(join(out, `${name}.json`), JSON.stringify(z.toJSONSchema(schema, { io }), null, 2) + '\n');
}
console.log(`Wrote ${Object.keys(schemas).length} schemas to ${out}`);