import { readFileSync } from "node:fs"; import { dirname, resolve } from "node:path"; import { fileURLToPath } from "node:url"; const root = resolve(dirname(fileURLToPath(import.meta.url)), ".."); const packageJson = JSON.parse( readFileSync(resolve(root, "package.json"), "utf8"), ); const nvmVersion = readFileSync(resolve(root, ".nvmrc"), "utf8").trim(); const expectedMajor = nvmVersion.replace(/^v/, "").split(".")[0]; const expectedEngine = `${expectedMajor}.x`; if (packageJson.engines?.node !== expectedEngine) { throw new Error( `Node runtime contracts disagree: .nvmrc=${nvmVersion}, package.json engines.node=${packageJson.engines?.node ?? "missing"}`, ); } const actualVersion = process.versions.node; const actualMajor = actualVersion.split(".")[0]; if (actualMajor !== expectedMajor) { console.error( `Unsupported Node.js runtime: expected ${expectedEngine}, actual ${actualVersion}. Activate .nvmrc before running repository checks.`, ); process.exit(1); } console.log(`Node.js runtime verified: ${actualVersion} (${expectedEngine})`);