import { readFileSync } from 'node:fs'; import { fileURLToPath } from 'node:url'; import { dirname, resolve } from 'node:path'; 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})`);