#!/usr/bin/env node /* eslint-disable */ /** * Verifies repository structure conventions. * Run with: node scripts/check-structure.js */ import fs from "fs"; import path from "path"; import { fileURLToPath } from "url"; const __dirname = path.dirname(fileURLToPath(import.meta.url)); const SRC_DIR = path.join(__dirname, "..", "src"); let errors = 0; let warnings = 0; function checkFileSize(filePath, maxLines = 300) { const content = fs.readFileSync(filePath, "utf-8"); const lines = content.split("\n").length; if (lines > maxLines) { console.error(`❌ OVERSIZED (${lines} lines): ${path.relative(SRC_DIR, filePath)}`); errors++; } } function walk(dir, callback) { for (const entry of fs.readdirSync(dir, { withFileTypes: true })) { const fullPath = path.join(dir, entry.name); if (entry.isDirectory()) { if (entry.name === "node_modules" || entry.name.startsWith(".")) continue; walk(fullPath, callback); } else { callback(fullPath); } } } console.log("Checking file sizes...\n"); walk(SRC_DIR, (filePath) => { const ext = path.extname(filePath); if ([".ts", ".tsx", ".py", ".css"].includes(ext)) { checkFileSize(filePath); } }); console.log("\n---"); if (errors === 0 && warnings === 0) { console.log("✅ All checks passed!"); process.exit(0); } else { console.log(`❌ ${errors} error(s), ${warnings} warning(s)`); process.exit(1); }