// fetch-openapi.js const fs = require('fs'); const https = require('https'); const { exec } = require('child_process'); // FastAPI server URL (make sure your server is running locally at this address) const OPENAPI_URL = 'http://127.0.0.1:8000/openapi.json'; // Path to save the OpenAPI schema file and TypeScript types const SCHEMA_PATH = './src/schema/openapi.json'; const TYPES_PATH = './src/types/api-types.ts'; // Fetch OpenAPI JSON https.get(OPENAPI_URL, (res) => { let data = ''; res.on('data', chunk => { data += chunk; }); res.on('end', () => { // Save the fetched OpenAPI JSON to a file fs.writeFileSync(SCHEMA_PATH, data, 'utf8'); console.log(`✅ OpenAPI schema saved to ${SCHEMA_PATH}`); // Run openapi-typescript to generate TypeScript types exec(`npx openapi-typescript ${SCHEMA_PATH} --output ${TYPES_PATH}`, (error, stdout, stderr) => { if (error) { console.error(`❌ Error generating types: ${error}`); return; } if (stderr) { console.error(`⚠️ stderr: ${stderr}`); return; } console.log(`✅ TypeScript types generated at ${TYPES_PATH}`); }); }); }).on("error", (err) => { console.error("Error fetching OpenAPI schema: " + err.message); });