UNPKG

@docyrus/tanstack-db-generator

Version:

Code generator utilities for TanStack Query / Database integration with Docyrus API

51 lines (50 loc) 2.35 kB
#!/usr/bin/env node "use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const commander_1 = require("commander"); const chalk_1 = __importDefault(require("chalk")); const generator_1 = require("./generator"); const fs_1 = require("fs"); const path_1 = require("path"); const program = new commander_1.Command(); program .name('tanstack-db-generator') .description('Generate TanStack Query collections and TypeScript types from OpenAPI 3.1.0 specification') .version('0.0.0') .argument('<openapi-spec>', 'Path to OpenAPI 3.1.0 specification file (JSON format)') .option('-o, --output <dir>', 'Output directory (defaults to src in same folder as spec file)') .option('-w, --watch', 'Watch for changes in the OpenAPI spec file') .action(async (specPath, options) => { try { const resolvedPath = (0, path_1.resolve)(specPath); if (!(0, fs_1.existsSync)(resolvedPath)) { console.error(chalk_1.default.red(`Error: OpenAPI spec file not found: ${resolvedPath}`)); process.exit(1); } // Determine output directory const outputDir = options.output || (0, path_1.join)((0, path_1.dirname)(resolvedPath), 'src'); console.log(chalk_1.default.blue('🚀 TanStack DB Generator')); console.log(chalk_1.default.gray(`Spec file: ${resolvedPath}`)); console.log(chalk_1.default.gray(`Output directory: ${outputDir}`)); const specContent = (0, fs_1.readFileSync)(resolvedPath, 'utf-8'); const spec = JSON.parse(specContent); if (spec.openapi !== '3.1.0') { console.error(chalk_1.default.red(`Error: Expected OpenAPI version 3.1.0, got ${spec.openapi}`)); process.exit(1); } await (0, generator_1.generateFromOpenAPI)(spec, outputDir); console.log(chalk_1.default.green('✅ Generation completed successfully!')); if (options.watch) { console.log(chalk_1.default.yellow('👀 Watching for changes...')); // TODO: Implement file watching } } catch (error) { console.error(chalk_1.default.red('Error:'), error); process.exit(1); } }); program.parse();