#!/usr/bin/env node import { readFile, writeFile } from "node:fs/promises"; import { generateTypeScriptBindings } from "./index.js"; import path from "node:path"; import { reactPlatformTypes } from "./react-platform.js"; import { generateReactBindings } from "./react.js"; const main = async () => { const [schema, revision, output, options, ...rest] = process.argv.slice(2); if (!schema || !revision || !output || rest.length) throw new Error("usage: quixos-codegen-ts SCHEMA.json PACKAGE_REVISION OUTPUT.ts [OPTIONS.json]"); const config = options ? JSON.parse(await readFile(options, "utf8")) : {}; const contracts = JSON.parse(await readFile(schema, "utf8")); const generated = generateTypeScriptBindings(contracts, revision, config); await writeFile(output, generated); if (config.react) { await writeFile(path.join(path.dirname(output), "web-studio-react-runtime.d.ts"), reactPlatformTypes); await writeFile( path.join(path.dirname(output), "react-props.gen.ts"), generateReactBindings(contracts, revision, config.react.propsExports, config.react.components), ); } }; main().catch((error: unknown) => { console.error(error instanceof Error ? error.message : error); process.exitCode = 1; });