TorbatYar/frontend/scripts/validate-beauty-bundle.mjs
Mortezakoohjani 6f4a484051 Migrate Beauty, Healthcare, and Accounting frontend to modular src/modules architecture.
Move business logic out of App Router into module packages, add boundary validation scripts, and keep all routes as thin re-exports without changing URLs or API behavior.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-26 22:28:27 +03:30

42 lines
1.3 KiB
JavaScript

#!/usr/bin/env node
/** Post-build bundle sanity check for beauty module chunks. */
import { existsSync, readdirSync, statSync } from "node:fs";
import { join } from "node:path";
import { fileURLToPath } from "node:url";
const ROOT = join(fileURLToPath(new URL(".", import.meta.url)), "..");
const NEXT_APP = join(ROOT, ".next", "server", "app", "beauty");
console.log("Beauty Bundle Validation\n");
if (!existsSync(join(ROOT, ".next"))) {
console.error("❌ Run `npm run build` first — .next directory not found");
process.exit(1);
}
if (!existsSync(NEXT_APP)) {
console.error("❌ No compiled beauty routes under .next/server/app/beauty");
process.exit(1);
}
function countRoutes(dir) {
let count = 0;
for (const entry of readdirSync(dir)) {
const full = join(dir, entry);
if (statSync(full).isDirectory()) count += countRoutes(full);
else if (entry === "page.js" || entry === "page.js.nft.json") count++;
}
return count;
}
const routeCount = countRoutes(NEXT_APP);
console.log(`✅ Compiled beauty route segments: ${routeCount}`);
if (routeCount < 50) {
console.error(`❌ Expected at least 50 compiled beauty pages, got ${routeCount}`);
process.exit(1);
}
console.log("✅ Beauty module bundled successfully");
process.exit(0);