Files
projectbrain-Public/scripts/check-typescript-gate.mjs

25 lines
894 B
JavaScript

#!/usr/bin/env node
import { readFile } from "node:fs/promises";
import { resolve } from "node:path";
const root = resolve(import.meta.dirname, "..");
const manifest = JSON.parse(await readFile(resolve(root, "package.json"), "utf8"));
const command = manifest.scripts?.typecheck;
const required = ["tsconfig.app.json", "tsconfig.node.json"];
const missing = required.filter((config) => !command?.includes(`-p ${config}`));
if (missing.length) {
console.error(`TypeScript gate does not compile: ${missing.join(", ")}`);
process.exit(1);
}
for (const config of required) {
const content = await readFile(resolve(root, config), "utf8");
if (!/"noEmit"\s*:\s*true/.test(content) && !command.includes("--noEmit")) {
console.error(`TypeScript gate may emit files for ${config}.`);
process.exit(1);
}
}
console.log("TypeScript gate covers application and Node configurations.");