aaredb/frontend/fetch-openapi.js
2024-10-31 10:25:46 +01:00

41 lines
1.3 KiB
JavaScript

// 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);
});