typebox-cli
Version:
CLI tool for various TypeBox and JSON Schema operations
27 lines • 1.13 kB
JavaScript
import * as Codegen from "@sinclair/typebox-codegen";
import fs from "node:fs";
import { loadSchemaInModule } from "./loadSchemaInModule.js";
import { TypeScriptToTypeBox } from "@sinclair/typebox-codegen";
export const modelNames = Object.keys(Codegen)
.filter((key) => key.startsWith("ModelTo"))
.map((key) => key.substring("ModelTo".length));
export function codegen({ source, module, modelName }) {
const ts = source ? fs.readFileSync(source, { encoding: "utf8" }) : undefined;
if (modelName === "TypeBox" && ts) {
return TypeScriptToTypeBox.Generate(ts);
}
const model = module
? loadSchemaInModule(module)
: ts
? Codegen.TypeScriptToModel.Generate(ts)
: undefined;
if (!model) {
throw new Error("No source model specified. Either specify a typescript source or a typescript module with TypeBox schema");
}
const generator = Codegen[`ModelTo${modelName}`];
if (!generator) {
throw new Error(`Could not find generator for model ${modelName}`);
}
return generator.Generate(model);
}
//# sourceMappingURL=codegen.js.map