@docyrus/tanstack-db-generator
Version:
Code generator utilities for TanStack Query / Database integration with Docyrus API
51 lines (50 loc) • 2.35 kB
JavaScript
;
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();