generate-types.mts 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. import path from "path"
  2. import fs from "fs"
  3. import { zodToTs, createTypeAlias, printNode } from "zod-to-ts"
  4. import { $ } from "execa"
  5. import schemas from "../src/schemas"
  6. const { typeDefinitions } = schemas
  7. async function main() {
  8. const types: string[] = [
  9. "// This file is automatically generated by running `npm run generate-types`\n// Do not edit it directly.",
  10. ]
  11. for (const { schema, identifier } of typeDefinitions) {
  12. types.push(printNode(createTypeAlias(zodToTs(schema, identifier).node, identifier)))
  13. types.push(`export type { ${identifier} }`)
  14. }
  15. fs.writeFileSync("src/exports/types.ts", types.join("\n\n"))
  16. await $`npx tsup src/exports/interface.ts --dts-only -d out`
  17. fs.copyFileSync("out/interface.d.ts", "src/exports/roo-code.d.ts")
  18. await $`npx prettier --write src/exports/types.ts src/exports/roo-code.d.ts`
  19. if (fs.existsSync(path.join("..", "Roo-Code-Types"))) {
  20. fs.copyFileSync("out/interface.js", path.join("..", "Roo-Code-Types", "src", "index.js"))
  21. fs.copyFileSync("out/interface.d.ts", path.join("..", "Roo-Code-Types", "src", "index.d.ts"))
  22. }
  23. }
  24. main()